2010-05-20 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
4         structure. Make the labels to plt entries local symbols instead of assembler local
5         labels, since tha latter causes problems for the iphone linker.
6
7 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
8
9         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
10
11 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
12
13         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
14         (ppc_patch_full): Ditto.
15
16         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
17
18         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
19         if gshared is enabled, to avoid asserts in the trampoline code.
20
21         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
22         on ia64.
23
24 2010-05-15  Geoff Norton  <gnorton@novell.com>
25
26         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
27         xdebug mode.
28
29 2010-05-14  Geoff Norton  <gnorton@novell.com>
30
31         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
32         misaligned stack on darwin.
33
34 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
35
36         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
37         arm.
38
39 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
40
41         * xdebug.c: Fix ARM support.
42
43 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
44
45         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
46         and do most of the work on the normal stack.
47         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
48
49 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
50
51         * aot-compiler.c: Put non-code data into the .rodata section on linux.
52
53 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
54
55         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
56
57 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
58
59         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
60         and do most of the work on the normal stack.
61
62 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
63
64         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
65         and do most of the work on the normal stack even if sigaltstack is disabled.
66
67 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
68
69         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
70         UCONTEXT_REG_ constants are available on linux as well.
71         (mono_arch_monoctx_to_sigctx): Ditto.
72         (mono_arch_ip_from_context): Ditto.
73
74 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
75
76         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
77         other domains.
78
79 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
80
81         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
82         no longer needed.
83
84 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
85
86         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
87         if a breakpoint cannot be inserted.
88
89 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
90
91         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
92
93 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
94
95         * debugger-agent.c (frame_commands): Return an error instead of asserting if
96         no JIT info is found for the method.
97
98 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
99
100         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
101         in debug printf.
102
103 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
104
105         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
106         a list of arch specific trampolines.
107
108         * aot-compiler.c (emit_trampolines): Use it.
109
110 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
111
112         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
113         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
114         get rid of the _full from their name.
115
116 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
117
118         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
119         get_nullified_class_init_trampoline to remove some code duplication.
120
121 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
122
123         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
124         attach.
125
126 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
127
128         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
129
130         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
131
132         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
133         there is no need to jump through the first plt entry.
134
135         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
136
137         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
138         arch-specific function.
139         (mono_aot_get_plt_info_offset): Ditto.
140
141         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
142         mono_arch_init () to register jit icalls called from full-aot trampolines.
143         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
144         to mini-<ARCH>.c.
145
146         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
147         the specialized throw corlib exception trampoline, use a variant of the normal
148         trampoline along with a new C function which does the call to
149         mono_exception_from_token (), just like on x86.
150
151 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
152
153         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
154         Reorganize the full aot trampoline creation functions, instead of taking a bunch
155         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
156         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
157         creation functions on architectures which have the full-aot ones.
158
159 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
160
161         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
162
163 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
164
165         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
166         explicitly, this seems to be required by some gcc versions at -O2.
167
168         * mini-arm.c: Ditto.
169
170 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
171
172         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
173         has_target delegate invokes.
174
175 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
176
177         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
178         info fields.
179
180         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
181         add patches/unwind info arguments, move to mini.c.
182
183         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
184
185 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
186
187         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
188         command which returns full path names.
189
190 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
191
192         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
193         code_size output variable.
194
195         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
196         mono_get_lmf_addr.
197         
198 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
199
200         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
201         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
202         (mono_arch_cpu_enumerate_simd_versions): Ditto.
203
204 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
205
206         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
207         apple assembler.
208
209 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
210
211         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
212
213 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
214
215         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
216
217 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
218
219         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
220
221 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
222
223         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
224         line number support works with eglib.
225
226 2010-04-27  Miguel de Icaza  <miguel@novell.com>
227
228         * driver.c, mini.c: Since linking with LLVM makes the default Mono
229         dirty an extra 70kb pages on startup we are now going to choose a
230         different strategy: ship mono and mono-llvm binaries, with the
231         second being the one that links with LLVM and defaults to LLVM
232         being enabled.
233
234 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
235
236         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
237         Implement full-aot support on x86.
238
239         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
240         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
241         the first register returned by get_global_int_regs ().
242
243         * cpu-x86.md: Fix the length of insertx_u1_slow.
244
245         * iltests.il.in: Disable tail call tests when running with full-aot.
246
247 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
248
249         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
250
251 2010-04-24  Mark Probst  <mark.probst@gmail.com>
252
253         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
254         in the initializer, because it's non-constant.
255
256 2010-04-23  Miguel de Icaza  <miguel@novell.com>
257
258         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
259         of LLVM on by default.   Used for buildbots and other setups.
260
261 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
262
263         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
264
265 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
266
267         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
268         initonly static fields when using moving GC.
269
270         Contributed under MIT/X11 license.
271
272 2010-04-23  Geoff Norton  <gnorton@novell.com>
273
274         * mini-amd64.h: Darwin x86_64 support.
275
276 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
277
278         * exceptions-arm.c: Remove platform checks in favor of configure checks.
279
280 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
281
282         * exceptions-arm.c: Add Android support for sigcontext structure.
283
284 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
285
286         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
287         wrappers correctly now that their wrapper info is NULL.
288
289 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
290
291         * mini.c (mono_jit_compile_method_inner): Avoid calling
292         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
293
294 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
295
296         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
297         so the latter can be #ifndef DISABLE_JIT-ed.
298
299         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
300
301 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
302
303         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
304
305 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
306
307         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
308         stack.
309
310 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
311
312         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
313         calling mono_class_num_methods (). Fixes #592244.
314
315 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
316
317         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
318
319         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
320
321 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
322
323         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
324         version.
325         * (handle_alloc): Ditto.
326         (mono_method_to_ir): Remove the constrained call restriction added by a previous
327         change, its not needed anymore.
328
329 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
330
331         * mini-posix.c (sigusr1_signal_handler): Fix build on
332         non x86/amd64 systems.
333
334 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
335
336         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
337         calls where the constrained class needs a context. Fixes #595863.
338
339         * iltests.il.in: Add a test.
340
341 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
344         2.6/SVN seems to have broken support for them.
345
346 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-llvm.c: Fix support for LLVM 2.6.
349
350 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
351
352         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
353         MonoInternalThread belonging to the thread.
354
355 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
356
357         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
358         unsafe optimization that will remove bound checks.
359
360 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
361
362         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
363         CompareExchange not to be inlined for I8.
364
365         Contributed under MIT/X11 license.
366
367 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * array.cs: Add tests for cast between primitive array types.
370
371 2010-04-07 Andreia Gaita  <avidigal@novell.com>
372
373         * Makefile.am: create a convenience library for moon to link with
374
375 2010-04-07 Paolo Molaro <lupus@ximian.com>
376
377         * method-to-ir.c: optimize array accesses from generic interfaces.
378
379 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
380
381         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
382
383 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
384
385         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
386         of marshalbyref classes.
387
388         Fixes #515884.
389
390 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
391
392         * aot-compiler.c (emit_exception_debug_info): Encode try holes
393         information.
394
395         * aot-runtime.c (decode_exception_debug_info): Decode try holes
396         information.
397
398         * mini.h: Increase AOT version.
399
400 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
401
402         * mini-x86.h: Only enable soft debugger when using sigaction or on
403         Windows. Fixes build on Haiku (lacks siginfo_t).
404
405         Code is contributed under MIT/X11 license.
406
407 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
408
409         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
410         BeOS-style signal handlers.
411
412         Code is contributed under MIT/X11 license.
413         
414 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
415
416         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
417
418 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
419
420         * mini-exceptions.c: Fix win32 build.
421
422 2010-04-01  Mark Probst  <mark.probst@gmail.com>
423
424         * mini.c, driver.c: Call mono_gc_base_init() before
425         mono_debug_init().
426
427 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
428
429         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
430         call_method]): Delegate the actual work in security-core-clr.c
431         to ease code sharing.
432
433 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
434
435         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
436         float conv.ovf.un opcodes are encountered, instead of asserting later.
437         Fixes #566296.
438
439 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
440
441         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
442
443         * iltests.il.in: Add a test.
444
445 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
448         large. Fixes #567040.
449
450         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
451
452 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
453
454         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
455         #592711.
456
457 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
458
459         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
460         mono_create_handler_block_trampoline with the proper #ifdef so that it
461         compiles on amd64.
462
463 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
464
465         * mini-exceptions.c: Introduce mono_walk_stack_full, which
466         allows to select if it's new or old context that is passed to 
467         the callback.
468
469         * mini-exceptions.c (mono_handle_exception_internal): Handle the
470         case when executing a guarded handler from the EH machinery.
471
472         * mini-exceptions.c (mono_install_handler_block_guard): New function
473         responsible for checking for handler blocks, installing the guard and
474         clearing abort state.
475
476         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
477         to check for handler blocks and skip interruption logic if one was found.
478
479         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
480         by the handler block guard trampoline. Resumes interruption by raising the
481         pending ThreadAbortException.
482
483         * mini.c (create_jit_info): Calculate the end address of a finally block.
484
485         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
486         of a finally block to a specified address and return the old one.
487
488         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
489         trampoline patches the original return address and calls the trampoline function.
490
491 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
492
493         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
494
495         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
496         does the patching if the callee is in the same domain.
497
498         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
499         of mono_arch_patch_plt_entry ().
500
501 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
502
503         * mini.c (create_jit_info): Fix try block hole length encoding.
504
505 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
506
507         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
508         duplicate information and print offsets instead of absolute addresses.
509
510 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
511
512         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
513         event is sent. Fixes #591733.
514
515 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
516
517         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
518         OpenBSD.
519
520 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
521
522         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
523         thread_to_tls hash table.
524
525         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
526         section. Fixes #591000.
527
528 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
529
530         * Makefile.am (version.h): Check for pure .git directory only,
531         fixes SVN revision when using git without git-svn.
532
533         Contributed under MIT/X11 license.
534
535 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
536
537         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
538
539 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
540
541         * basic-simd.cs: Test for vector x scalar binary operators.
542
543 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
546         intrinsics with expanded scalar arguments.
547
548 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
549
550         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
551         don't have an exception class, so don't decode it. This would crash
552         with filter clauses.
553
554 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
555
556         Make sure that trunk builds with DISABLE_JIT, an update to the
557         PlayStation 3 port.
558         
559         * mini.c (mini_get_shared_method): this code seems to be necessary
560         regardless of whether DISABLE_JIT has been defined.
561
562         (mono_jit_compile_method_inner): it seems that this method is
563         required even in full AOT mode, so ifdef out only the pieces that
564         try to genrate code (the body of code that applies patches to the
565         code).  
566
567         (mini_method_compile): do not compile when using DISABLE_JIT.
568
569         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
570         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
571         compile when DISABLE_JIT is set.
572
573 2010-03-24  Mark Probst  <mark.probst@gmail.com>
574
575         * mini.c (mono_create_tls_get): Only create a TLS operation if the
576         arch really supports it.
577
578 2010-03-24  Mark Probst  <mark.probst@gmail.com>
579
580         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
581
582 2010-03-23  Neale Ferguson <neale@sinenomine.net>
583
584         * exceptions-s390x.c: Add support for
585         mono_arch_get_throw_corlib_exception and fix throw by name.
586
587         * mini-s390x.c: Add IMT support; Fix stack parameter passing
588         logic (especially for varargs); Correct localloc sizing; Add
589         mono_arch_get_this_arg_from_call and
590         mono_arch_get_this_arg_from_call.
591
592         * mini-s390x.h: Add support for facility list extraction;
593         Correct/update MONO_ARCH_xxx settings.
594
595         * mini-s390.c: Minor corrections to instruction output for
596         varargs. No IMT implementation - I think it's time to deprecate
597         s390 and just leave s390x.
598
599         * tramp-s390x.c: Correct creation of trampoline instruction
600
601
602         * cpu-s390x.md: Update some instruction lengths
603
604 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
605
606         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
607         can be hit with partial sharing.
608
609         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
610         in non-shared classes correctly.
611         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
612         Turn on partial sharing.
613
614 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
615
616         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
617         by mistake.
618
619 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
620
621         * method-to-ir.c (mono_method_to_ir): Handle the failure of
622         mono_method_signature ().
623
624         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
625
626         * mini.c (mini_method_compile): Get the signature of cfg->method early with
627         error checking, so later calls do not need error checking.
628
629 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
630
631         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
632
633         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
634
635 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
636
637         * mini-exceptions.c (mono_handle_exception_internal): Don't
638         check try_end for archs different than s390. 
639
640         * mini.c (create_jit_info): Don't crash if the finallt block is the
641         last one.
642
643 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
644
645         * driver.c (mono_main): Don't free global codeman under linux since
646         glic now peeks at code on stack for more archs than just amd64.
647
648 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
649
650         * mini.c, method-to-ir.c: changes to support compressed interface
651         bitmaps.
652
653 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
654
655         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
656         Use sigaction on OpenBSD too.
657
658 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
659
660         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
661
662 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
663
664         * debugger-agent.c: #include sys/select.h for fd_set.
665
666         Code is contributed under MIT/X11 license.
667
668 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
669
670         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
671         (openbsd+amd64 ?).
672
673 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
674
675         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
676         some large methods with lots of exception handlers. Fixes #440924.
677
678 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
679
680         * method-to-ir.c: remove code duplication for interface checks.
681
682 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
683
684         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
685         (assembly_unload): Clear all event requests referencing the to-be unloaded
686         assembly.
687
688
689 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
690
691         * mini.h, mini-exceptions.c: restore the state of the stack
692         guard page permissions.
693
694 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
695
696         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
697         call site patching code, it doesn't appear to be needed.
698
699 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
700
701         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
702         sharing generic methods whose type arguments are a mix of reference and
703         non-reference types. Not yet turned on.
704
705         * mini.c (mini_get_shared_method): New helper function to return
706         the method which will be compiled/registered in the JIT tables when doing
707         generic sharing.
708         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
709         use mini_get_shared_method ().
710
711         * mini.c (mini_method_compile): Register the same method which is compiled when
712         doing generic sharing.
713
714         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
715
716         * generics.cs: Add partial sharing tests.
717
718 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
719
720         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
721                    Add an enum value that or's all possable values together. Add an enum value
722                    that marks the end of the used bit indexes.
723
724         * mini-amd64.c : Make changes to match the changes in mini.h 
725
726         * mini-x86.c : Make changes to match the changes in mini.h
727
728         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
729                    simd_version to support more simd versions. Changed the name of
730                    simd_version to simd_version_flags to make it more intuitive that
731                    it now contains bit flags. Reordered the *_intrinsics arrays to
732                    match the changes above. Changed emit_intrinsics() to use the new
733                    setup mentioned above.
734
735         Code is contributed under MIT/X11 license.
736
737 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
738
739         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
740         remaining archs. Alpha and hppa maintainers, please stand up.
741
742 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
745         is needed even when fail_tramp!=NULL.
746
747 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
748
749         * debugger-agent.c (insert_breakpoint): Write a log message.
750
751 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * iltests.il.in: Add a few tests for LEAVE going over multiple
754         finally clauses.
755
756 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
757
758          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
759
760 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
761
762         * mini.h (MonoBasicBlock): Add native_length field.
763         * mini.h (MonoCompile): Add try_block_holes field.
764         * mini.h (MonoInst): Add exception_clause pointer to
765         the data union.
766
767         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
768         * mini.c (mono_cfg_add_try_hole): New function to register possible
769         holes in try blocks.
770         * mini.c (create_jit_info): Fill in the holes information.
771
772         * mini-exceptions.c: Verify for holes when checking if an IP is covered
773         by a try block.
774
775         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
776
777 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
778
779         * jit-icalls.c: adjusted for the array API changes.
780
781 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
782
783         * iltests.il.in: Disable the fconv_to_i test on sparc too.
784
785 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
786
787         * debugger-agent.c: Simplify the way breakpoints are processed by removing
788         the 'pending' flag. This fixes support for appdomains too.
789
790
791 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
792
793         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
794
795 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
796
797         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
798         when using LLVM, LLVM generates it itself when needed.
799
800         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
801
802         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
803         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
804         OP_ANDNPS/OP_ANDNPD.
805
806 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
807
808         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
809         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
810         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
811
812 2010-03-11  Martin Baulig  <martin@ximian.com>
813
814         * debugger-agent.c (type_commands): Add NULL check to
815         `CMD_TYPE_GET_SOURCE_FILES'.
816
817 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
818
819         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
820
821 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
822
823         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
824         #586664.
825
826         * iltests.il.in: Add a test.
827
828 2010-03-05  Martin Baulig  <martin@ximian.com>
829
830         Add support for aborting invocations.
831
832         * debugger-agent.c
833         (InvokeData): Added `InvokeData *last_invoke'.
834         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
835         added a new `invoke' field to keep the `InvokeData *' throughout
836         the invocation.
837         (ErrorCode): Added `ERR_NO_INVOCATION'.
838         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
839         (mono_debugger_agent_handle_exception): Don't report any exception
840         if an abort was requested.
841         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
842         a thread abort if necessary.
843         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
844
845 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
846
847         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
848         so we can release the whole list and not just the first one. Free
849         it in more places as well.
850
851 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
852
853         * method-to-ir.c: Revert r153222 as it doesn't belong here.
854
855 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
856
857         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
858
859 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
860
861         * driver.c: report also other misc build options.
862
863 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
864
865         * method-to-ir.c: Generate better code for the NewObject
866         intrinsic.
867         
868 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
869
870         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
871         is disabled. Fixes #582322.
872
873         * iltests.il.in: Add a test.
874
875 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
876
877         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
878         the handling of obj->synchronization == null and owner != current thread to
879         mono_monitor_exit ().
880
881         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
882
883
884 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
885
886         * mini.c: change the way emulated opcode info is stored and save about
887         4 KB of runtime memory.
888
889 2010-03-04  David S. Miller  <davem@davemloft.net>
890
891        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
892        that don't provide the siginfo in the second signal handler argument
893        are buggy, and this has been fixed for years.
894        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
895        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
896
897 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
898
899         * aot-runtime.c (find_symbol): Fix a leak.
900         (decode_patch): Ditto.
901
902 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
903
904         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
905
906 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
909
910 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
911
912         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
913
914 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
915
916         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
917         to check for errors, it's enough to create the metadata open.
918
919         Fixes #562150
920
921 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
922
923         * trace.c|h:
924         * mini-exceptions.c: Add support for printing stack traces when handling
925         exceptions, and when printing exceptions thrown while tracing also print
926         the exception message.
927
928 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
929
930         * trace.c: We need to parse exclude tokens ('-') before string tokens,
931         since the exclude token is a valid string character.
932
933 2010-03-02  Levi Bard  <levi@unity3d.com>
934
935         * debugger-agent.c: Invalidate thread stacks on domain unload.
936
937 2010-03-02  Mark Probst  <mark.probst@gmail.com>
938
939         * method-to-ir.c: Emit dummy_use for stored reference after write
940         barriers to make sure the object is pinned if the GC interrupts
941         before the write barrier is done.
942
943 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
944
945         * cpu-<ARCH>.md: dummy_use was missing src1:i.
946
947 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
948
949         * debugger-agent.c: Add a log message printing the protocol version.
950
951 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
952
953         * debugger-agent.c: Add a new command to communicate the protocol version used
954         by the client. This could be used to allow newer runtimes to communicate with
955         older clients.
956
957 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
958
959         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
960
961 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
962
963         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
964         type.
965
966 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
967
968         * mini-arm.c: make the arm cpu arch configurable with the
969         MONO_CPU_ARCH env var (for example: "armv4 thumb").
970         Bug #584198.
971
972 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
973
974         * mini.c, mini.h, driver.c: added the --jitmap option to enable
975         support for the perf tool on Linux.
976
977 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
978
979         * method-to-ir.c: make string.InsertenalSetChar() specialization
980         effective.
981
982 2010-03-01  Robert Jordan  <robertj@gmx.net>
983
984         * Makefile.am: fix the non-static build.
985
986 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
987
988         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
989         here.
990
991 2010-02-26  Robert Jordan  <robertj@gmx.net>
992
993         * tasklets.c (continuation_store): Return from an error condition
994         immediately.
995
996 2010-02-26  Martin Baulig  <martin@ximian.com>
997
998         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
999
1000         * debug-mini.c
1001         (MonoDebuggerThreadInfo): Added `internal_flags'.
1002         (MonoDebuggerInternalThreadFlags): New enum.
1003         (_mono_debugger_throw_exception): Don't signal the debugger if a
1004         type abort was requested.
1005         (_mono_debugger_unhandled_exception): Likewise.
1006         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1007         (mono_debugger_runtime_invoke): If the debugger requested a thread
1008         abort during the invocation, reset it here.
1009
1010 2010-02-26  Martin Baulig  <martin@ximian.com>
1011
1012         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1013         instead of `MonoThread *'.
1014
1015 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1016
1017         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1018         code offsets table, as it is mostly sorted.
1019
1020 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1023         Fixes #582991.
1024
1025 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1028
1029 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1030
1031         * Makefile.am: build the new ABI version of the libmono library.
1032         * debugger-agent.c, mini.c: fix warnings with the new API.
1033         * jit.h: don't depend on glib.h being included.
1034
1035 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1036
1037         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1038
1039 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1042         ThreadStatic variables.
1043
1044 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1047         data is not freed yet. Fixes #582460.
1048
1049 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1052         event requests. Bump protocol minor version.
1053
1054 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1057
1058 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1061         #581950.
1062
1063         * iltests.il.in: Add a test.
1064
1065 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1066
1067         * mini.c (inline_method): Check for loader errors.
1068
1069 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1072         instead of mono_method_get_header as it doesn't decode locals
1073         so the called method can have unresolved dependencies that will only
1074         be satisfied after the current method is JIT'd.
1075
1076         Fixes #550968.
1077
1078 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * basic.cs (test_0_div_opt): Speed this up a bit.
1081
1082 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1085
1086         * mini.c (mono_jit_create_remoting_trampoline): Call
1087         mono_create_specific_trampoline () instead of
1088         mono_arch_create_specific_trampoline ().
1089
1090         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1091
1092 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1095         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1096
1097         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1098
1099         * mini-amd64.c: Fix DISABLE_JIT support.
1100
1101 2010-02-20  Geoff Norton  <gnorton@novell.com>
1102
1103         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1104
1105 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1106
1107         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1108         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1109         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1110         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1111         handle_exception.
1112
1113 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1116         edx/ecx too. This is needed to support OP_SEQ_POINT.
1117
1118 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1121
1122         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1123
1124 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1125
1126         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1127         LLVM+AOT+exceptions, not enabled yet.
1128
1129 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1132
1133 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1136         xdebug info for these.
1137
1138         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1139         in a few places.
1140
1141         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1142         not used yet.
1143
1144 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1145
1146         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1147
1148 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1151         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1152
1153         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1154         for mtouch.
1155
1156 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1157
1158         * debugger-agent.c: handle incomplete reads and EINTR in
1159         recv()/send(). This could have been causing random
1160         disconnections.
1161
1162 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1165         points.
1166
1167         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1168         so they have small offsets. Fixes #566311.
1169
1170 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1171
1172         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1173
1174 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1175
1176         * mini-amd64.c: Remove the special casing of byref in a few places now that
1177         mini_type_get_underlying_type () handles it.
1178
1179         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1180         by returning native int. Fixes #577984.
1181
1182 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1185         a macro.
1186
1187         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1188         of putting the clause itself.
1189
1190         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1191
1192 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1195         might be unaligned.
1196
1197 2010-02-10  Geoff Norton  <gnorton@novell.com>
1198
1199         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1200
1201 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1204         llvm methods too.
1205
1206         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1207         it is not an LLVM generated symbol.
1208
1209         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1210
1211         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1212         implementation in gshared mode because it causes regressions.
1213
1214         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1215
1216         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1217         should be done by the caller.
1218
1219         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1220
1221         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1222
1223         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1224         since mono_jit_info_table_find () doesn't do it anymore.
1225
1226         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1227         instead of mono_jit_info_table_find ().
1228
1229 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1232
1233         * aot-compiler.c (encode_method_ref): Update after the removal of
1234         mono_gc_get_managed_allocator_type ().
1235
1236         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1237         Fixes #564538.
1238
1239 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1242         generic params as well.
1243         (handle_isinst): Ditto.
1244
1245         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1246         instead of always calling an icall.
1247
1248         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1249         computing the size of the got.
1250
1251         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1252         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1253         the assembly directive '.set' so it points to the first LLVM emitted method.
1254
1255 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1256
1257         * mini.c (mini_method_verify): Report the method which failed to verify.
1258
1259 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1262         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1263         runtime MS verifier.
1264
1265 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1268         #561962.
1269
1270 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * mini-llvm.c: Init the jit module only when first JITting.
1273
1274         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1275
1276         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1277
1278         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1279         replaced with the real got.
1280
1281         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1282
1283         * image-writer.c: Reduce the amount of #ifdefs a bit.
1284
1285         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1286         llvm on darwin/arm.
1287
1288         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1289
1290         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1291         global.
1292
1293 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1296         (mono_llvm_emit_method): Fix unaligned stores too.
1297
1298         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1299         so async stack walks don't crash.
1300
1301 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1304         was not patched if the callee needed an rgctx trampoline.
1305
1306 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1309         vtable address in AOT code.
1310
1311 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1314         MonoInst's.
1315
1316 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1317
1318         * genmdesc.pl: remove dependency on external cpp.
1319
1320 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1323         using LLVM, its not needed, and abcrem can't handle it.
1324
1325 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1326
1327         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1328         it easier to group instructions and reduce duplication.
1329
1330 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * decompose.c: Move the array/soft float decompose routines here from
1333         method-to-ir.c.
1334
1335         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1336
1337 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1340         to tell LLVM that the got is constant, not used yet.
1341
1342         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1343
1344 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1347         managed wrappers.
1348
1349 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * aot-compiler.c (add_wrappers): Commit the hack which generates
1352         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1353         custom attribute.
1354
1355 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1358         a fault, only used by the LLVM backend.
1359
1360         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1361         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1362
1363         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1364         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1365
1366         * mini-llvm.c: Only generate volatile loads from load instructions which have
1367         the MONO_INST_FAULT flag set.
1368
1369 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1372         64 bit platforms.
1373
1374 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1377         sequence points. Fixes #571236.
1378
1379 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1382         end of the appdomain unload process, after assemblies have been unloaded.
1383         Fixes #574842.
1384
1385 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1388         works.
1389
1390         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1391         Fixes #573988.
1392
1393 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1396
1397 2010-01-26  Geoff Norton  <gnorton@novell.com>
1398
1399         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1400         with struct marshalability.
1401
1402 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1405         it supports class names as well.
1406
1407         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1408         needed by the GC map code.
1409
1410         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1411         flags if needed.
1412
1413         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1414         if cfg->init_ref_vars is set.
1415
1416         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1417         cfg->disable_initlocals_op_refs is set.
1418
1419         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1420         using liveness info if cfg->compute_precise_live_ranges is set.
1421
1422         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1423         volatile variables correctly. Add comments about the live ranges. Not enabled
1424         yet.
1425
1426 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1429         0x2a into them in method prologs.
1430
1431         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1432
1433 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1436         classes, since llvm is compiled with -fno-rtti.
1437
1438         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1439
1440         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1441         llvm does not require it.
1442
1443         * aot-runtime.c (load_method): Print the full name of the last aot method.
1444
1445 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1448         thread has not fully started yet.
1449
1450 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1453
1454 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1455
1456         * driver.c: Do not abort if LLVM is not supported, print a
1457         warning and add the information to the Mono JIT information.
1458
1459 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1462         using explicit null checks.
1463
1464 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1467         related code.
1468
1469         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1470         () in one place.
1471         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1472         its no longer needed.
1473
1474         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1475
1476         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1477         define for platforms still using it (s390). Get rid of the
1478         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1479
1480         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1481         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1482
1483         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1484         the caller pushed the arguments.
1485
1486         * mini-llvm.c: Enable throwing exceptions on x86.
1487
1488         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1489         "Thread (nil) may have been prematurely finalized" messages if this is called
1490         on a thread not registered with the runtime.
1491
1492         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1493
1494 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * jit-icalls.c (mono_array_new_3): New jit icall.
1497
1498         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1499
1500         * arrays.cs: Add a test for 3 dimensional arrays.
1501
1502 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1505         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1506         used.
1507
1508         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1509         thrown on x86.
1510
1511         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1512
1513         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1514
1515         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1516
1517 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1518
1519         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1520           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1521
1522         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1523
1524         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1525
1526         Code is contributed under MIT/X11 license.
1527
1528 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1531
1532         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1533
1534         * mini.c (mini_method_compile): Set the new flag when running under the
1535         debugger.
1536
1537 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1540         a ref/noref value + a global pin flag, so parts of stack frames can still be
1541         precisely marked even if they include stuff which needs pinning. Improve logging.
1542         Fix many bugs. Not enabled yet.
1543
1544         * gc-test.cs: Add a few tests.
1545
1546         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1547         the normal -v options. Avoid propagating liveness information through bblocks
1548         which end with a NOT_REACHED opcode.
1549
1550         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1551         after cfg has been freed.
1552
1553 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1556         if a clause is skipped because it uses the exception object, since it could
1557         have caught the exception.
1558
1559         * exceptions.cs: Add a test.
1560
1561 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1562
1563        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1564
1565         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1566         ICollection<T> wrappers.
1567
1568 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1571
1572 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1573
1574         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1575         NOMAP32BIT or optimize_for_xen is set.
1576
1577 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1580         mono_metadata_str_hash () instead.
1581
1582 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1585         sizeof (void*).
1586
1587         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1588
1589 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1592         flag is set.
1593
1594         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1595         throwing code correctly.
1596
1597         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1598
1599 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1602         ftnptrs created by us, handle RGCTX_FETCH correctly.
1603         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1604
1605         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1606         ftnptr added by mono_aot_get_named_code ().
1607
1608 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini-arm.c: Fix a few LLVM problems.
1611
1612         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1613
1614 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1615
1616         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1617         AOT compiling.
1618
1619 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1620
1621         * jit.h, method-to-ir.c: added ability to set the policy for
1622         inserting breakpoints from the break IL instruction or the
1623         Debugger.Break () API call.
1624
1625 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1628         assemblies need to be eagerly loaded.
1629
1630 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1633
1634 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1637         an argument which matches any exception.
1638
1639 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1640
1641         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1642         optimization if the called method is gshared and marshalbyref, since gshared
1643         methods can' have wrappers. Fixes #569390.
1644
1645         * generics.cs: Add a test.
1646
1647 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1650         callable from gdb.
1651
1652 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1655
1656 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1659         since it is not supported in win2000.
1660
1661 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1664         error if loading an assembly fails.
1665         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1666
1667         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1668         if exists.
1669
1670         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1671         compiled methods.
1672
1673         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1674
1675         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1676         is not supported yet.
1677
1678         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1679
1680 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * method-to-ir.c: All types with variant arguments must fallback to the
1683         slow path. This makes cast of variant delegates work.
1684
1685         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1686         argument that is set to TRUE is the returned vtable slot is for a variant
1687         interface. Changed a g_print + g_assert_not_reached to a g_error.
1688
1689         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1690         a similar fashion of generic virtual methods.
1691
1692 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1693
1694         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1695         when cfg is null.
1696
1697         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1698         method using a variance aware function.
1699
1700         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1701
1702 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1703
1704         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1705         do an icall for now.
1706
1707 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1710         If LLVM decides to set the code model to Large, reset it to Default.
1711
1712 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1715         stripped binaries as well.
1716
1717 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1718
1719         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1720         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1721
1722         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1723         reg.
1724
1725 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1728         separate function.
1729
1730         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1731         as the type info to llvm.eh.selector.
1732         (exception_cb): Use the type info for filling out some fields of
1733         MonoJitExceptionInfo like the flags and the exception class. This is needed
1734         because the LLVM produced exception handling clauses might not match the original
1735         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1736
1737         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1738         separate function. Add an extra argument which returns the type infos
1739         corresponding to the exception clauses.
1740
1741         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1742         exception handling clauses.
1743
1744 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1747         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1748         to fix an AOT case.
1749
1750 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1753         internal assembly.
1754
1755 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1758         llvm code.
1759
1760 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1761
1762         * mini.c (mini_method_compile): Verify the method before calling
1763         mono_compile_create_vars as this might crash since it uses method
1764         information.
1765
1766         Fixes #560196.
1767
1768 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1771         one case if AOTing, since the class might not be a concrete class.
1772
1773 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1776         functions which are now defined in mempool-internals.h.
1777
1778         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1779
1780         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1781
1782 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1783
1784         * mini.c:
1785         * method-to.ir.c:
1786         * mini-*.c: Properly handle generic enums.
1787
1788         Fixes #566294
1789
1790 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1793         in a few more places.
1794
1795 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1798         nullable parameters. Fixes #567351.
1799
1800 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1801
1802         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1803
1804 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1807         mono_get_generic_context_from_code () call.
1808
1809         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1810
1811 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1814         needed.
1815
1816 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1817
1818         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1819         mono_method_get_signature returns NULL. Fix #567084
1820
1821 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1824         instead of once for each module.
1825
1826 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * debugger-agent.c (ss_start): Implement step over for the last sequence
1829         point in methods.
1830
1831         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1832         have the STEP_LOC flag set.
1833
1834         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1835         fails. Fixes #566689.
1836
1837 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * mini.c (mono_add_seq_point): New helper function.
1840         (mono_save_seq_point_info): New function to save sequence point info, extracted
1841         from mini_method_compile ().
1842
1843         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1844
1845         * mini.h (MonoSeqPointInfo): New structure containing information about
1846         the sequence points of a JITted method.
1847         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1848         'bucket' field.
1849
1850         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1851         point information is stored, use a MonoSeqPointInfo structure instead of a
1852         GPtrArray. For each seq point, compute a list of successor seq points.
1853
1854         * debugger-agent.c: Use the successor list to implement step-over more
1855         efficiently: instead of single stepping until a different line/IL offset is
1856         reached, place breakpoints into all successor seq points.
1857
1858         * mini.h: Bump AOT file format version.
1859
1860 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1863
1864         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1865
1866 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1869         build.
1870
1871 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1874         alloca as g_malloc is not signal safe.
1875
1876 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1879         VALGRIND_DISCARD_TRANSLATIONS.
1880
1881         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1882         checks, they are no longer needed.
1883
1884         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1885         a function into a sigctx which can handle function pointers.
1886
1887         * mini-ppc.c: Implement soft debugger support on ppc64.
1888
1889         * mini-ppc.c: Implement soft debugger support.
1890
1891 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1894
1895 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1896
1897         * mini.c (mono_get_runtime_build_info): include Mono version in
1898         the returned value.
1899
1900         * driver.c (mono_main): VERSION is now included in the string
1901         returned from mono_get_runtime_build_info()
1902
1903 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1904
1905         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1906         signatures. Fixes #565143.
1907
1908         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1909
1910 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1913
1914 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1915
1916         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1917         making max stack 10x smaller.
1918
1919 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1922
1923 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1924
1925         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1926
1927 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1928
1929         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1930         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1931
1932         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1933
1934         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1935
1936         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1937
1938         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1939         the compilation.
1940
1941 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1942
1943         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1944         raise an invalid program exception.   
1945
1946         For other opcodes that we might not handle use a g_warning and
1947         raise the exception.   Beats termination.
1948
1949         Fixes #561724
1950
1951 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1954
1955         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1956         by merging the LLVM and !MAP_32BIT cases.
1957
1958 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1959
1960         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1961         sigctx being passed in, as we have no CONTEXT available in the APC.
1962
1963         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1964         for now.
1965
1966         Code contributed under MIT/X11 license.
1967
1968 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1971         in the LLVM backend on AMD64.
1972
1973         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1974         FDE.
1975
1976         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1977
1978         * mini-llvm.c: Export mono_personality for AOT.
1979
1980         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1981
1982         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1983         implicit exception can occur.
1984
1985         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1986         OP_IMPLICIT_EXCEPTION instruction.
1987
1988         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1989
1990         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1991
1992         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1993         inside a protected block.
1994
1995         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1996         trampolines doesn't include the argument.
1997
1998         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1999         trampolines on amd64.
2000
2001         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2002         of RDI.
2003
2004         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2005         disabled for methods with clauses.
2006
2007         * mini-llvm.c: Enable support for catch clauses.
2008
2009         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2010         end of an LLVM compiled finally clause.
2011         (mono_handle_exception_internal): Save the exception handling state in TLS
2012         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2013         resume unwinding from that point.
2014
2015         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2016         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2017         to obtain the addresses of the exception handling regions.
2018
2019         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2020         finally clauses are supported.
2021
2022         * mini.c (mini_method_compile): Add support for LLVM code with exception
2023         handlers.
2024
2025 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2026
2027         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2028         proper size.
2029
2030 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2033         as a primitive type.
2034
2035 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2038         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2039         #564000.
2040
2041 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2042
2043         * method-to-ir.c (mini_redirect_call): do not redirect the
2044         InternalAllocateStr internal call if string profiling is enabled.
2045
2046 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2049         generic methods.
2050
2051         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2052         unwind.h header file.
2053
2054         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2055         newer valgrind versions seems to handle this fine.
2056
2057 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2060         on the debugger thread.
2061
2062 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2065
2066         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2067
2068         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2069
2070         * cpu-<ARCH>.md: Make call_handler clob:c.
2071
2072         * mini.c: Reenable SSA for methods with clauses.
2073
2074         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2075         as it causes failures on x86.
2076
2077 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2078
2079         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2080         returns NULL (e.g. a bad assembly).
2081
2082 2009-12-08  Geoff Norton  <gnorton@novell.com>
2083
2084         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2085         stepping out into native code.  There were issues with nested invokes
2086         like .cctors.
2087
2088 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * mini.c (mini_method_compile): Do the disable_llvm checks early
2091         and avoid the LLVM compile pass if the checks fail.
2092
2093         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2094
2095         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2096         LLVM optimizations don't try to remove them.
2097
2098         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2099         different file so the original remains.
2100
2101 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2104
2105         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2106
2107         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2108         support for non-inline unwind descriptors.
2109
2110 2009-12-07  Geoff Norton  <gnorton@novell.com>
2111
2112         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2113         the interrupt_count slightly differently.  Native threads were never
2114         marked as resumed.
2115
2116 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2119         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2120         yet generate this info.
2121
2122         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2123
2124         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2125         client can distinguish between intptrs and longs.
2126
2127 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2130         blob.
2131
2132         * aot-runtime.c (load_function): Update after the change above.
2133
2134         * mini.h: Bump AOT file format version.
2135
2136         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2137         if the delegate class is dynamic.
2138
2139         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2140         in gshared code too using the new rgctx info type
2141         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2142
2143 2009-12-04  Geoff Norton  <gnorton@novell.com>
2144
2145         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2146         we need to track the original suspend count so the thread properly
2147         wakes up in resume_thread.
2148
2149 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2152         code.
2153
2154         * generics.cs: Add a test.
2155
2156         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2157         is 0. Simplify a lot of code using this.
2158
2159         * mini-trampolines.c (mono_delegate_trampoline): Call
2160         mono_create_static_rgctx_trampoline () before saving the final address in
2161         delegate->method_code, to avoid calling it each time a delegate is first called.
2162
2163         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2164         which need static rgctx trampolines.
2165
2166         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2167         keyed on the method+addr pair, since addr could be either the method addr or
2168         an unbox trampoline in the AOT case. Fixes #560246.
2169
2170 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2171
2172         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2173         place it was called before too.
2174
2175 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2178         if no security manager is present, to speed up the AOT case. Call
2179         mono_class_vtable () full with raise_on_error == TRUE instead.
2180
2181 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2184         the local optimization passes can take its result into account. Fixes
2185         #559876.
2186
2187         * exceptions.cs: Add a test.
2188
2189 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2190
2191         This patch is contributed under the terms of the MIT/X11 license
2192
2193         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2194
2195 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2196
2197         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2198
2199         * debugger-agent.c: Rework the handling of stack traces of running threads to
2200         avoid crashes if compute_frames () tries to walk the stack of running thread.
2201
2202         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2203
2204         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2205
2206         * mini.h (StackFrameInfo): Add an 'lmf' field.
2207
2208 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * debugger-agent.c (suspend_current): Always set really_suspended.
2211
2212         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2213
2214         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2215
2216 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2219         really suspended.
2220
2221 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2224
2225 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2226
2227         * mini-trampolines.c: Fix MSVC build.
2228
2229 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2230
2231         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2232
2233 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2236         the instruction following an OP_FCOMPARE is optimized away.
2237
2238 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2241         emit_autoreg () into this arch-specific function.
2242
2243         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2244         code, it is no longer needed.
2245
2246         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2247
2248         * mini.h: Bump AOT file format version.
2249
2250         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2251         using the sorted_code_offsets array, instead of reading it from the
2252         exception debug info.
2253         (load_method): Call mono_aot_find_jit_info instead of
2254         decode_exception_debug_info ().
2255
2256         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2257         LLVM compiled as a flag.
2258
2259 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * debugger-agent.c (resume_thread): Fix a warning.
2262
2263         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2264         generated.
2265
2266 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2267
2268         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2269         contents to MonoAotFileInfo.
2270
2271 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2274         Put all binary data into a giant blob, similarly to the way .net assemblies
2275         store binary data. Emit offset tables in a compact form to reduce their size.
2276
2277         * mini.h: Bump AOT file format version.
2278
2279         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2280         places.
2281
2282         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2283         avoid linear searches at runtime.
2284
2285         * aot-runtime.c (find_symbol): Update this to use the hash.
2286
2287         * mini.h: Bump AOT file format version.
2288
2289 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2292         container.
2293
2294         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2295         too.
2296
2297         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2298         the distribution of got slot types.
2299
2300         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2301
2302         * method-to-ir.c: Add support for generating explicit null checks.
2303
2304 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2307         on a random thread if possible.
2308
2309         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2310         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2311         correctly.
2312
2313         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2314         regs. Pass the real size of the regs array to mono_unwind_frame ().
2315
2316         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2317         ones instead.
2318
2319 2009-11-24  Geoff Norton  <gnorton@novell.com>
2320
2321         * mini-darwin.c: Work around apple bug rdar://7209349  See
2322         http://openradar.appspot.com/7209349 for details.  Synopsis,
2323         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2324         never been initialized before.
2325
2326 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2329
2330         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2331
2332 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2335         OP_SHL_IMM is not 32 bit.
2336
2337 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2340
2341 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2344         encountered.
2345
2346         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2347         > 0 since some threads can resume if their resume_count is > 0.
2348         (invoke_method): Avoid reading freed memory.
2349
2350         * debugger-agent.c (process_suspend): Extract the suspend code from
2351         process_single_step_inner () to a separate function. Rework the code to prevent
2352         races between this function and thread interrupts.
2353
2354         * debugger-agent.c (suspend_current): Check the resume_count field instead
2355         of resume_one so suspends+resumes during single threaded invokes work
2356         correctly.
2357
2358 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2361         to make the generated code smaller.
2362
2363         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2364         sequence generated by recent LLVM versions.
2365
2366         * mini-llvm.c: Add support for a few simple cases which weren't supported
2367         before.
2368
2369         * mini-trampolines.c (mono_magic_trampoline): Don't call
2370         mono_arch_get_vcall_slot () when llvm is enabled.
2371
2372         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2373
2374         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2375         into a new function called common_call_trampoline () which is used by the
2376         llvm vcall trampoline as well.
2377
2378         * debugger-agent.c: Implement single threaded invokes.
2379
2380         * debugger-agent.c: Revert change which broke the agent on linux.
2381
2382         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2383         #557606.
2384
2385         * generics.cs: Add a test.
2386
2387 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * debugger-agent.c: Fix the cygwin build.
2390
2391 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * cprop.c: Remove this unused file.
2394
2395 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2398         #557262.
2399
2400         * basic.cs: Add a test.
2401
2402 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2405         in one more place.
2406
2407 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2410         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2411         it. Use this flag to control llvm related code paths instead of #ifdef
2412         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2413         AOT code.
2414
2415         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2416
2417         * mini.h: Bump AOT file format version.
2418
2419         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2420         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2421
2422         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2423         was used as an assembly filter.
2424
2425 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * unwind.c: Fix support for ppc.
2428
2429         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2430         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2431
2432 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2433
2434         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2435         port.
2436         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2437         added by the ps3 changes.
2438
2439 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mini-gc.c: Resurrect this, so at least it compiles.
2442
2443         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2444
2445 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2448         create_event_list () so assembly filters can be used.
2449
2450         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2451         from the LMF.
2452
2453 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2456         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2457         is disabled.
2458
2459         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2460         classes for char/bool too.
2461
2462         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2463
2464         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2465         used.
2466
2467         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2468         Fix warnings.
2469
2470 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2471
2472         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2473         
2474         Code contributed under MIT/X11 license.
2475
2476 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2477
2478         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2479         threads in native code work.
2480
2481         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2482         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2483         version.
2484
2485 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2486
2487         * debugger-agent.c: Implementation for Windows platform.
2488
2489         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2490         primitives. Use SEH to implement breakpoints and single stepping.
2491
2492         * mini-x86.h: Enable soft debugger on Windows.
2493
2494         Code contributed under MIT/X11 license.
2495
2496 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2499         under XEN. Fixes #522894.
2500
2501         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2502
2503         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2504         interface calls in LLVM AOT code.
2505
2506         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2507         is found.
2508
2509         * mini-llvm.c: Add support for OP_VPHI.
2510
2511         * objects.cs: Add a test.
2512
2513 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2516         this is called on the debugger thread.
2517
2518 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * mini-llvm.c: Add soft-float support.
2521
2522         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2523         FCALL which returns an R4.
2524
2525         * driver.c (mono_main): Add a missing '\n'.
2526
2527         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2528         platforms which doesn't support the LLVM IMT trampoline.
2529
2530 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2533
2534         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2535
2536         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2537         virtual calls.
2538
2539         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2540
2541 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2544         Instead of emitting a method_order table, sort the contents of the code_offsets
2545         table and do a binary search in the sorted table. The previous approach doesn't
2546         work with LLVM which emits methods in a arbitrary order.
2547
2548         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2549         in the .eh_frame section in ELF files.
2550
2551         * mini.h: Bump corlib file format version.
2552
2553         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2554
2555         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2556         LDMIA->LDM macro name change.
2557
2558 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2561         x86.
2562
2563         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2564         SVN.
2565
2566         * aot-compiler.c: Ditto.
2567
2568         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2569         &align to mini_type_stack_size_full ().
2570
2571         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2572
2573         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2574
2575 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * mini-arm.c: Compute the stack space used by arguments using
2578         mini_type_stack_size_full ().
2579
2580 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2581
2582         * optflags-def.h: Remove dead TREEPROP optimization.
2583
2584 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2585
2586         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2587
2588         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2589
2590 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * driver.c (mono_jit_parse_options): New public API function to parse options
2593         as done by the runtime executable.
2594
2595         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2596         when handling named arguments.
2597
2598 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2601         for passing small vtypes in registers, make the CallInfo structures more
2602         similar to the code on the other platforms.
2603
2604         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2605         the code in the prolog requires it.
2606
2607 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2608
2609         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2610         (koush@koushikdutta.com).
2611
2612         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2613         where the thunk memory should be allocated from. Fixes appdomain unloading
2614         on arm.
2615
2616 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2619         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2620
2621 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2624         AOT, as it is not implemented yet.
2625
2626         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2627
2628 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2629
2630         * debugger-agent.c: Fix windows build.
2631
2632 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2635         after the client connects/disconnects.
2636
2637         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2638         when an exception of a given type is thrown.
2639
2640         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2641         only on an uncaught exception.
2642
2643         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2644
2645         * debugger-agent.c: Add a 'launch' option.
2646
2647 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * debugger-agent.c: Add a 'timeout' option.
2650
2651 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2654         the JDWP agent.
2655
2656 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * debugger-agent.c (set_breakpoint): Emit a log message.
2659
2660 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-arm.c: Fix the arm build.
2663
2664 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2665
2666         * aot-compiler.c: don't leak the value returned from
2667         mono_type_full_name().
2668
2669 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2670
2671         * debugger-agent.c: defer including mono-mutex.h until we know the
2672         agent is supported.
2673
2674 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2675
2676         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2677         of pthreads directly.
2678
2679         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2680         exception handlers. Pass info argument.
2681
2682         * mini.h: Adjust signatures of soft debugger functions to pass void*
2683         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2684
2685         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2686         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2687         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2688         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2689
2690         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2691
2692         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2693         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2694         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2695         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2696
2697         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2698
2699         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2700
2701         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2702
2703         * mono-semaphore.h: Skeleton implementation for Windows.
2704
2705         Code contributed under MIT/X11 license.
2706
2707 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2708
2709         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2710
2711         Code contributed under MIT/X11 license.
2712
2713 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2714
2715         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2716
2717         Code contributed under MIT/X11 license.
2718
2719 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2722         debug info to 100 because 10 still slows down gdb too much.
2723
2724         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2725         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2726         them in the wrappers.
2727
2728 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2729
2730         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2731
2732         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2733
2734         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2735         function mono_aot_get_array_helper_from_wrapper ().
2736
2737         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2738         array helper methods.
2739
2740 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2741
2742         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2743         the value was loaded from memory.
2744
2745         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2746         the value was loader from there.
2747
2748         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2749         without constant swizzle.
2750
2751 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2752
2753         * mini-amd64.c: Put soft debugger functions behind a
2754         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2755
2756         * mini-amd64.h: disable the soft debugger in windows.
2757
2758         Code contributed under MIT/X11 license.
2759
2760 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2761
2762         * mini-x86.c: Put soft debugger functions behind a
2763         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2764
2765         Code contributed under MIT/X11 license.
2766
2767 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2768
2769         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2770         to mono_arch_find_jit_info_ext.
2771
2772         Code contributed under MIT/X11 license.
2773
2774 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2777
2778         * debugger-agent.c: Add support for filtering events by assemblies.
2779
2780         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2781         the agent is not enabled.
2782
2783 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2784
2785         * exceptions-x86.c: hopefully last change to fix the windows build.
2786         This one courtesy of Jonathan Chambers.
2787
2788 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2789
2790         * debugger-agent.c: remove unused function.
2791
2792 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2793
2794         * debugger-agent.c: add #ifdefs for a few header files.
2795         * mini-x86.h: disable the soft debugger in windows.
2796         Step 1 of 2 to make this compile on windows with gcc.
2797
2798 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2801         as it breaks the build.
2802
2803 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2804
2805         Merge the soft debugger branch.
2806
2807         * debugger-agent.h debugger-agent.c: New files containing the soft
2808         mode debugger module.
2809
2810         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2811         at the appropriate locations.
2812
2813         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2814         opcode.
2815
2816         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2817         enable/disable single stepping.
2818
2819         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2820         which returns all information in a StackFrameInfo structure, and can handle the
2821         LMF frames added by the debugger.
2822
2823         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2824         about an LMF frame.
2825
2826         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2827         walker function which works on a specific thread and passes a StackFrameInfo
2828         structure to its callback.
2829
2830         * mini.c (mini_init): Initialize the debugger agent.
2831
2832         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2833
2834         * mini-ops.h: Add OP_SEQ_POINT opcode.
2835
2836         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2837         arguments to the debugger agent.
2838
2839 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2840
2841         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2842         speed things up.
2843
2844         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2845
2846         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2847
2848         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2849
2850         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2851         if needed.
2852         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2853         sets the IMT argument and makes a virtual call.
2854
2855         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2856
2857 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2860         the windows build.
2861
2862 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2865         runtime. Fixes #551228.
2866
2867 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2870
2871         * basic.cs: Add a test.
2872
2873         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2874         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2875         CONSTRAINED. Fixes #550964.
2876
2877         * generics.cs: Add a test.
2878
2879 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2880
2881         * mini-posix.c (add_signal_handler): Use
2882         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2883
2884 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2885
2886         Contributed under the terms of the MIT/X11 license by
2887         Jerry Maine <crashfourit@gail.com>.
2888
2889         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2890         sse4a for simd intrinsics.
2891
2892         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2893         sse4a for simd intrinsics.
2894
2895 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2898         instead of inst_p1 which is not the same on ILP32 platforms.
2899
2900 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2903         not the mscorlib one before calling mono_get_lmf_addr.
2904
2905         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2906         of the ip to the LMF.
2907
2908         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2909         immediate in the op->op_imm optimization.
2910
2911         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2912         understand. VTypes now work, but are not abi compliant, as they are
2913         split into 4 byte parts instead of 8.
2914         (emit_memcpy): Fix the unrolled case to work on the PS3.
2915
2916         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2917
2918         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2919         the default when static linking.
2920
2921         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2922
2923         * aot-compiler.c: Add an autoreg option to automatically register
2924         statically linked aot modules using ELF .ctors.
2925
2926         * genmdesc.pl: Add __ppc64__ to allowed defines.
2927
2928 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2931         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2932
2933 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2934
2935         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2936
2937 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2938
2939         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2940         which will contain the domain where the method was found.
2941
2942         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2943         mini_jit_info_table_find ().
2944
2945         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2946
2947         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2948
2949 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2952         set, its not supported yet.
2953
2954 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2957         iface wrapper is not found.
2958         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2959
2960 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2963         which have a different name.
2964
2965         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2966         wrappers and Array.GetGenericValueImpl ().
2967
2968         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2969         because of the change above.
2970
2971         * generics.cs: Add a test for full aot + generic array ifaces.
2972
2973 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2974
2975         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2976         that hides the previous one.
2977
2978 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2981         marshalled. Fixes #541623.
2982
2983 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2986
2987 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2990
2991 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2992
2993         * mini-posix.c (sigprof_signal_handler):
2994         Implemented support for building stat call chans in different ways.
2995
2996 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2997
2998         * mini-exceptions.c (mono_find_jit_info):
2999         Also check that a jit info has been found (fixes a profiler crash).
3000
3001 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3002
3003         * mini.c (mono_codegen):
3004         Call mono_profiler_code_buffer_new with correct code address.
3005
3006 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * driver.c (mono_main): Change the date in the copyright.
3009
3010 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3011
3012         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3013         allocator in shared generic code for open classes, because we
3014         can't get those classes' vtables.  We need to make managed
3015         allocators not depend on the vtable at compile-time to solve this.
3016
3017 2009-10-13  Martin Baulig  <martin@ximian.com>
3018
3019         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3020         `const guint8 *trampoline' argument; send both the old and the new
3021         notification.
3022
3023 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3026         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3027         (can_marshal_struct): Skip structures with auto layout.
3028
3029         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3030
3031 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3032
3033         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3034         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3035         a variable to hold the stack slot used by the int<->float conversion opcodes.
3036
3037         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3038
3039 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3042         when using full-aot.
3043
3044 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3047         each instance of Comparer<T>.
3048
3049         * generics.cs: Add a new test.
3050
3051 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * driver.c (parse_debug_options): Add a 'gdb' option.
3054
3055         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3056
3057         * image-writer.c: Add support for emitting the image into a memory buffer.
3058
3059         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3060
3061         * aot-compiler.c: Add support for registering debug info with GDB using the
3062         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3063         MONO_XDEBUG to 'gdb'.
3064
3065 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3068         gdb mode.
3069
3070 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3073         can be used to set breakpoints in gdb.
3074
3075         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3076         segment to an absolute address.
3077
3078 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3079
3080         * method-to-ir.c: Use the managed array allocator method if
3081         available.
3082
3083 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3084
3085         * aot-compiler.c : Fix the MSVC builds
3086
3087         Code is contributed under MIT/X11 license.
3088
3089 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3092         avoid registering 1 symbol file per method with gdb.
3093
3094 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * mini-sparc.c: Fix the handling of enums with base type long.
3097
3098         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3099
3100         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3101         instead of using type->data.klass as the later doesn't work with generics.
3102
3103 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3104
3105         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3106         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3107         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3108         works differently now and we don't handle it in the JIT anymore.
3109
3110         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3111         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3112         the Thread class split.
3113
3114 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * driver.c: Don't run tests with the obsolete treeprop optimization.
3117
3118         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3119         variable volatile. Fixes #541577.
3120
3121         * basic-calls.cs: Add a new test.
3122
3123         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3124
3125 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3128         work/required with recent iphone sdk versions.
3129
3130         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3131         structures.
3132
3133         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3134         in the VCALL decomposition code.
3135
3136 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3137
3138         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3139
3140         * basic.cs: Add a test.
3141
3142         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3143         generic invokes.
3144
3145         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3146         searches all the domains of the current thread.
3147
3148         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3149
3150 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3153         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3154
3155         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3156         for non-jit trampolines.
3157
3158         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3159
3160         * aot-compiler.c (add_wrappers): Ditto.
3161
3162         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3163         the size of the param area used by dyn_call to 6 which covers the majority of
3164         methods.
3165
3166         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3167
3168         * mini-arm.c: Implement support for passing/receiving
3169         longs and receiving floats in the dyn_call code.
3170
3171         * mini-amd64.c: Implement support for receiving vtypes in registers in
3172         the dyn_call code.
3173
3174         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3175         the dyn_call code.
3176
3177 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3178
3179         * mini-arm.c (get_call_info): Return more precise information in
3180         ArgInfo->regtype.
3181         (dyn_call_supported): Use the information in CallInfo.
3182
3183         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3184
3185         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3186         code.
3187
3188         * mini-arm.c: Update after the dyn_call api changes.
3189
3190         * mini.c (mini_create_jit_domain_info): Register a destructor function
3191         for the runtime_invoke_hash.
3192
3193         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3194         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3195         this function.
3196         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3197         (dyn_call_supported): Simplify this by using get_call_info ().
3198         (mono_arch_dyn_call_free): New destructor function.
3199
3200         * generics.cs: Remove a printf.
3201
3202         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3203
3204         * mini-arm.c: Add support for enum return values and passing a few arguments
3205         on the stack.
3206         
3207         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3208         dyn invoke.
3209
3210         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3211
3212         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3213         the dynamic invoke wrappers.
3214
3215         * mini-arm.c: Implement OP_DYN_CALL for arm.
3216
3217         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3218         supported by the dynamic runtime invoke wrapper.
3219
3220         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3221         runtime invoke wrapper.
3222
3223         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3224         if possible when running with full-aot.
3225
3226         * mini-ops.h: Add OP_DYN_CALL opcode.
3227
3228         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3229         with dynamic arguments lists similar to libffi.
3230
3231 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3232
3233         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3234         
3235         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3236         to NEWARR.
3237
3238         * iltests.il.in: Add a new test.
3239         
3240 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3241
3242         * aot-compiler.c (add_generic_instances): Add more instances of
3243         GenericEqualityComparer.
3244
3245 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3246
3247         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3248
3249 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3250
3251         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3252         comments on some functions that now can fail.
3253
3254 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3255
3256         * Makefile.am: Add Info.plist to EXTRA_DIST
3257
3258 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3261         static synchronized wrappers. Fixes #539500.
3262
3263 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3264
3265         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3266         properly.
3267
3268 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3271         lmf before calling filter clauses as well. Fixes #539550.
3272
3273         * exceptions.cs: Add a test.
3274         
3275 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * aot-compiler.c (add_generic_class): Add instances of
3278         Array.GetGenericValueImpl as well.
3279
3280         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3281         can be tested too.
3282
3283         * generics.cs: Add a fullaot linq test.
3284
3285 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3286
3287         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3288         reg r1 on arm.
3289
3290 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3291
3292         * mini-trampolines.c (mono_delegate_trampoline) : Call
3293           mono_cominterop_get_invoke if the delegate target object
3294           is a COM object.
3295
3296         Code is contributed under MIT/X11 license.
3297
3298 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3299
3300         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3301         internal call is defined outside platform code. Reduce code 
3302         duplication with existing [Method|Field]AccessException
3303
3304 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3305
3306         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3307         if the return value is a small struct passed on regs.
3308
3309 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3310
3311         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3312
3313         * mini-codegen.c: Enable the cpu description validation for arm.
3314
3315 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3318         test which depends on structs to objects.cs.
3319         
3320         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3321         require object model related stuff working.
3322
3323         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3324
3325         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3326
3327         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3328         against the instruction metadata in mini-ops.h. amd64 only for now.
3329
3330         * mini-ops.h: Fix some instruction descriptions.
3331
3332         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3333         unused instructions.
3334
3335 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * exceptions.cs: Add a new test.
3338
3339 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3340
3341         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3342
3343 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3346         skip empty phi opcodes.
3347         
3348         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3349         correctly by zero extending after loads. Skip methods containing calls
3350         to the monitor enter/exit trampolines.
3351
3352         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3353         when calling mono_thread_force_interruption_checkpoint ().
3354
3355         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3356
3357         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3358         64 bit thunks.
3359         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3360
3361         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3362         bootstrap could run.
3363
3364 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3365
3366         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3367
3368 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3371         of the method to
3372         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3373         LLVM might be very short.
3374
3375         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3376         in OP_THROW/RETHROW.
3377
3378         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3379         alignment on osx.
3380
3381 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3384         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3385         LLVM might be very short.
3386
3387 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3390         the alignment for the value of sp.
3391
3392 2009-09-01  Geoff Norton  <gnorton@novell.com>
3393
3394         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3395         managed wrappers in full aot.
3396
3397 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3400
3401 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3404
3405 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3408
3409         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3410         saved info.
3411
3412         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3413
3414         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3415         depend on the info MonoMethodHeader which could be missing in IL stripped
3416         assemblies.
3417
3418 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3421         they are only 4 byte aligned.
3422
3423 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3424
3425         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3426         was done previously, since using SP causes too many problems.
3427
3428         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3429         frames without a frame pointer works.
3430
3431         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3432         global register in methods with calls, since the calls can go through
3433         a static rgctx trampoline which doesn't save it.
3434
3435 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3438
3439 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3442
3443 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3444
3445         * method-to-ir.c: Fix warnings for uninitialized variables.
3446
3447 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3448
3449         * mini-exceptions.c:
3450         * aot-compiler.c: Fix printf warnings.
3451
3452 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3455         Add GetGenericValueImpl<string>.
3456         
3457         * aot-compiler.c (add_generic_instances): Add instances of
3458         GenericEqualityComparer<T> for primitive types. Only emit the array
3459         wrappers into the mscorlib image.
3460
3461 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3464         the methods_loaded array using amodule->info->nmethods.
3465
3466         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3467         (MONO_AOT_FILE_VERSION): Bump this.
3468
3469         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3470         to work.
3471
3472         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3473         MonoJitInfo doesn't belong to its methods aot image.
3474
3475 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3478
3479         * mini-arm.c: Fix warnings.
3480         
3481         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3482
3483         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3484         supports it.
3485
3486 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3489         avoid clobbering IP.
3490
3491         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3492         hold the trampoline argument, so its initial value is available during
3493         debugging.
3494
3495 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3496
3497         * exceptions-arm.c:
3498         * exceptions-hppa.c:
3499         * mini.c:
3500         * exceptions-s390x.c:
3501         * exceptions-mips.c:
3502         * exceptions-ppc.c:
3503         * exceptions-sparc.c:
3504         * exceptions-alpha.c:
3505         * aot-runtime.c:
3506         * mini-trampolines.c:
3507         * exceptions-x86.c:
3508         * exceptions-s390.c: add and use #define's instead of sizeof()
3509         for MonoJitInfo and MonoJitInfoTable.
3510
3511 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3512
3513         * tramp-arm.c:
3514         * tramp-amd64.c:
3515         * tramp-ppc.c:
3516         * tramp-x86.c: use a #define instead of sizeof() for a few
3517         structures that use a zero-length array.
3518
3519 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3520
3521         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3522         case when the method is dynamic. Fixes #529238.
3523
3524 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3527         of asserting when a method is JIT compiled in full-aot mode.
3528
3529 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3530         
3531         Contributed under the terms of the MIT/X11 license by
3532         Jerry Maine <crashfourit@gail.com>.
3533         
3534         * fixed wrong dates in changelog.
3535
3536 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3537         
3538         Contributed under the terms of the MIT/X11 license by
3539         Jerry Maine <crashfourit@gail.com>.
3540
3541         * basic-simd.cs: added test for packed double square root.
3542         * cpu-amd64.md: added opcode info for packed double square root.
3543         * cpu-x86.md: added opcode info for packed double square root.
3544         * mini-ops.h: added IR opcode for packed double square root.
3545         * mini-x86.c: added IR to native translation code for packed double square root.
3546         * mini-amd64.c: removed todo for packed double square root.
3547         * simd-intrinsics.c: added method to IR opcode converstion for
3548         packed double square root.
3549
3550 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3551
3552         Contributed under the terms of the MIT/X11 license by
3553         Jerry Maine <crashfourit@gail.com>.
3554
3555         * mini-amd64.c: Added a change to help tell the difference as 
3556         to what perpose the xmm register is being used--mainly to help
3557         with debuging.
3558         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3559         (one used for special cases) xmm registers for both fp
3560         and simd ops. Added define to turn on new feature in the regalloc
3561         that allows fp and simd ops to share the xmm regs happily.
3562         * codegen.c: Added code to detect for which perpose an xmm reg is
3563         being used (fp or simd) and to translate back and forth to the
3564         correct logical reg bank (fp or simd) for 'spill load's.
3565
3566 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3567
3568         Contributed under the terms of the MIT/X11 license by
3569         Jerry Maine <crashfourit@gail.com>.
3570
3571         * basic-simd.cs: Added tests for stressing the regalloc when running with
3572         16 simd regs and when simd and fp ops share the same reg bank.
3573
3574 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3575
3576         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3577         in shared generic code, we might have to look up the class in the
3578         RGCTX.  If we use the class directly, compute its GC descriptor.
3579
3580 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3581
3582         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3583
3584 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3585
3586         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3587         check for errors. Fixed the case when the class with the Main
3588         method is broken.
3589
3590 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3591
3592         Contributed under the terms of the MIT/X11 license by
3593         Jerry Maine <crashfourit@gail.com>.
3594
3595         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3596
3597 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3600
3601 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3602
3603         * method-to-ir.c: Fix naming of stelem and ldelem.
3604
3605 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * driver.c (main_thread_handler): Check that the assembly loaded
3608         matches the filename when doing AOT.
3609
3610 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3611
3612         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3613         call it anymore.
3614
3615         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3616         utils/mono-sigcontext.h).
3617
3618         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3619         #ifdef.
3620
3621 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3622
3623         * mini.c (mono_codegen):
3624         Call profiler hook to keep track of method code buffers.
3625
3626 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3627
3628         * method-to-ir.c: Invoke write barriers for the
3629         Interlocked.(Compare)Exchange JIT intrinsics.
3630
3631 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3632
3633         * Makefile.am (version.h): Fix issues when built out of tree.
3634         Remove some redundant 'grep's piped through 'sed's.
3635
3636 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3637
3638         This patch is contributed under the terms of the MIT/X11 license
3639
3640         * mini-ppc.c (mono_arch_output_basic_block):
3641         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3642         for bits 32-47 with signed load/store diplacements for bits
3643         48-63.  Use prefered base/offset order for indexed form.
3644         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3645         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3646         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3647         OP_LOADI2_MEMBASE): Same.
3648         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3649         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3650         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3651         indexed form.
3652         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3653         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3654         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3655         OP_LOADI1_MEMINDEX): Same
3656         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3657         OP_STORER8_MEMINDEX): Same
3658         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3659         computations.
3660         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3661         for bits 32-47 with signed load/store diplacements for bits
3662         48-63.  Use prefered base/offset order for indexed form.
3663
3664 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3665
3666 This patch is contributed under the terms of the MIT/X11 license
3667
3668         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3669         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3670         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3671         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3672         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3673         cfg->stack_usage to avoid size warnings.
3674         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3675         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3676         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3677         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3678         to convert.
3679         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3680         after code varible is initialized.
3681         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3682         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3683         (mono_arch_emit_epilog): 
3684         Move Use ppc_load32 for cfg->stack_usage to avoid size
3685         warnings.
3686
3687 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3688
3689         * method-to-ir.c: The write barrier doesn't do the store anymore,
3690         so we have always to emit it.  Also, emit the wbarrier after the
3691         store.
3692
3693 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3696         for argument count 3 too.
3697
3698 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3699
3700         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3701         the caller handle the exceptions.
3702         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3703         method. Fixes #524498.
3704
3705 2009-07-22  Geoff Norton  <gnorton@novell.com>
3706
3707         * mini-exceptions.c: Fix build on ia64.
3708
3709 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3710
3711         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3712         barriers.
3713
3714 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3715
3716         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3717         code.
3718
3719 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * basic-simd.cs (Main): Pass args to the test driver.
3722
3723 2009-07-20  Geoff Norton  <gnorton@novell.com>
3724
3725         * mini-x86.h: Fix the x86 version guards to use Apple's
3726         properly defined macros.
3727
3728 2009-07-20  Geoff Norton  <gnorton@novell.com>
3729
3730         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3731         aligned access.
3732
3733 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3736         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3737         the information which is needed for invokes, so only one locking+hash table
3738         lookup is needed.
3739
3740         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3741         
3742         * aot-compiler.c (add_generic_instances): Emit instances of 
3743         GenericComparer<T> for primitive types.
3744
3745 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3746
3747         * mini-posix.c: Fix linux build.
3748
3749 2009-07-19  Geoff Norton  <gnorton@novell.com>
3750
3751         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3752         mono_gdb_render_native_backtraces
3753         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3754         so we implement the sane semantics to the runtime here
3755         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3756         so we need to call it differently (mono_gdb_render_native_backtraces)
3757         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3758         here for default implementations.
3759         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3760         support Apple's weird syscall (SYS_fork) implementation and not busy
3761         loop in abort() on native crashes on OSX anymore.
3762
3763 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3764
3765         * aot-runtime.c (load_method): Change the handling of the
3766         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3767         are used.
3768
3769         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3770
3771 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3774         seems to break the aot tests.
3775         
3776         * mini.c (mono_patch_info_equal): Fix the handling of 
3777         MONO_PATCH_INFO_RGCTX_FETCH.
3778
3779 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3782
3783         * mini.c (mono_patch_info_hash): Fix the handling of 
3784         MONO_PATCH_INFO_INTERNAL_METHOD.
3785         (mono_patch_info_equal): Ditto.
3786
3787 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3790         in a few places.
3791         
3792         * mini-llvm.c: Add some infrastructure for AOT support.
3793
3794 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * mini-llvm-cpp.c: Update to the latest llvm api.
3797         
3798         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3799         option to false to prevent llvm from installing signal handlers which
3800         trip up the gc.
3801         
3802 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3803
3804         * cpu-x86.md:
3805         * cpu-amd64.md: Revert previous change as those instructions
3806         take 2 separate arguments. Remember to read the arch docs more
3807         carefully next time.
3808
3809 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3812
3813 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3814
3815         * mini-ppc.c: exploit multiple load/store units if available (rest of
3816         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3817         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3818
3819 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3820
3821         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3822         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3823
3824 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3825
3826         * cpu-x86.md: Fix missing clobbering from trancendental simd
3827         ops.
3828
3829         * cpu-amd64.md: Same.
3830
3831 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3832
3833         Contributed under the terms of the MIT/X11 license by
3834         Jerry Maine <crashfourit@gail.com>.
3835
3836         * basic-simd.cs: Added tests for single and doulble indexers.
3837
3838         * cpu-amd64.md: Added simd opcode information.
3839
3840         * mini-amd64.c: Added IR to native simd generation code.
3841         Added simd register names and function that returns them.
3842
3843         * mini-amd64.h: Added marcos to turn on simd code compilation in
3844         amd64. Added max simd register count marco. Added caller/callee
3845         register mask marcos. Added marcos to use simd register bank.
3846
3847         * mini.h: Added helper marco for shufling dwords and simple
3848         floats.
3849
3850 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3851
3852         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3853
3854         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3855
3856         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3857         the length of the native code as well.
3858
3859         * basic-simd.cs: Add a test for #521662.
3860
3861 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3862
3863         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3864
3865 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3866
3867         * mini.c: Register function for getting the IP from a signal
3868         context with metadata.
3869
3870 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3871
3872         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3873         call a generic class init trampoline if needed. Fixes #519336.
3874
3875         * generics.cs: Add a test.
3876         
3877 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3878
3879         * method-to-ir.c: When doing a call which might be remote from
3880         shared generic code to other shared code with open type arguments,
3881         get the remoting invoke wrapper from the RGCTX and do an indirect
3882         call to it.
3883
3884 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3887         after the unbox trampoline in the full-aot case.
3888
3889 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3890         
3891         * mini.c: Move initialization of jit_mutex before debugger initialization
3892         
3893         to avoid crashes.
3894         
3895         
3896         * Info.plist: added Info.plist and link flag to enable the mono executable
3897         to access other processes. Requires codesigning of the executable to work.
3898         
3899         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3900         
3901         compile on OS X.
3902         
3903
3904 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3907
3908 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3909
3910         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3911         when the generic instance is an instantiation of a subclass of the
3912         methods class. Fixes #517166.
3913
3914 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3915
3916         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3917         code.
3918
3919         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3920         AOTed code.
3921
3922         * CMakeLists.txt: Add minimal support for installation.
3923
3924 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3927         determine whenever a method is directly callable to a separate function.
3928
3929         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3930         needed ones as a result of the previous change.
3931
3932         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3933         type of register arrays.
3934
3935         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3936         type of register arrays.
3937
3938 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3939         
3940         Contributed under the terms of the MIT/X11 license by
3941         Jerry Maine <crashfourit@gail.com>.
3942
3943         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3944
3945 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3946
3947         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3948
3949 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3950
3951         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3952         dump of structure return value. Fix some formatting.
3953         * cpu-s390x.md: Fix lengths of instruction sequences.
3954         * mini-s390.c: Minor formatting changes.
3955
3956 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3959         Use sigaction on freebsd as well.
3960
3961 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3964         uses #ifdef on it.
3965         
3966         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3967
3968 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3969
3970         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3971
3972 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3973
3974         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3975
3976 2009-06-20  Martin Baulig  <martin@ximian.com>
3977
3978         * debug-mini.c
3979         (MonoDebuggerThreadFlags): New enum typedef.
3980         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3981         (mono_debugger_thread_created): Added `gpointer func' argument;
3982         initialize the new `thread_flags' field.
3983
3984 2009-06-18  Martin Baulig  <martin@ximian.com>
3985
3986         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3987         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3988
3989         * debug-debugger.c
3990         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3991         flag in `MONO_DEBUGGER__info.runtime_info'.
3992
3993         * driver.c
3994         (mono_main): Call mini_debugger_set_attach_ok() if generics
3995         sharing is disabled.
3996
3997 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * aot-compiler.c (add_wrappers): Fix a warning.
4000
4001         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4002         the ppc load/store macro changes.
4003
4004 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4007
4008         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4009         not just the got symbol.
4010
4011         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4012         on ppc.
4013
4014         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4015         ppc.
4016         
4017         * aot-compiler.c: Remove some fixmes.
4018
4019         * driver.c (mono_main): Print a helpful message when cross-compiling.
4020
4021         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4022
4023         * method-to-ir.c (initialize_array_data): Do the optimization if the
4024         target byte order is little endian, instead of the host byte order.
4025
4026         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4027         wrappers into the mscorlib image, Emit a unique plt symbol for each
4028         image, emit symbols for plt entries.
4029
4030         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4031         a .size directive.
4032         
4033 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * aot-compiler.c (add_wrappers): Avoid calling 
4036         mono_marshal_get_type_info () since it can assert for some types.
4037
4038         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4039         ldtoken are used inside wrappers.
4040
4041         * helpers.c: Add support for prefixing tools with the arch name.
4042
4043         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4044         quantities when using ilp32.
4045
4046         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4047         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4048
4049         * image-writer.c: Use .long on ilp32.
4050
4051         * aot-compiler.c: Use 32 bit loads on ilp32.
4052         
4053 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4056
4057         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4058
4059         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4060
4061         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4062         second got slot of every aot image.
4063         
4064         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4065         aot on platforms with function pointers.
4066
4067         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4068         support for aot/full aot on ppc/ppc64.
4069         
4070         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4071         arguments which are needed on ppc.
4072
4073         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4074         argument.
4075
4076         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4077         
4078         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4079
4080         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4081
4082         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4083
4084         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4085
4086 2009-06-17  Geoff Norton  <gnorton@novell.com>
4087
4088         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4089
4090 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4093         to control whenever the dwarf writer is in xdebug or aot mode.
4094         (emit_class_dwarf_info): Use a separate abbrev for structures without
4095         children.
4096
4097         * aot-compiler.c: Pass the appending parameter to 
4098         mono_dwarf_writer_create ().
4099
4100         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4101         falls through to its next bblock. Fixes #513931.
4102
4103         * iltests.il: Add a test.
4104
4105         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4106         infor even if emit_line is FALSE, as the apple linker seems to require it.
4107
4108         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4109
4110         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4111         gcc does.
4112         (emit_fde): Ditto.
4113
4114 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4117         mips build.
4118
4119 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4122         'has_call_handler' fields.
4123
4124         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4125
4126         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4127         first bblock if not needed. Fixes #512790.
4128         
4129 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4132         
4133         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4134         wrappers.
4135
4136         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4137         remoting-invoke-with-check wrappers, which are not needed when running with
4138         full-aot, since it doesn't support remoting.
4139         
4140 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4141
4142         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4143
4144         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4145         method info, it is not used anymore.
4146
4147         * mini.h: Bump AOT file format version.
4148         
4149         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4150         word smaller.
4151
4152         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4153         change above.
4154         
4155         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4156
4157         * mini.h: Bump AOT file format version.
4158         
4159 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4160
4161         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4162         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4163         iphone.
4164
4165         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4166         of CKFINITE and FBGE for VFP.
4167
4168 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4169
4170         * aot-compiler.c: Don't align code to 16 bytes on arm.
4171         
4172         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4173         before the methods they belong to.
4174
4175         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4176         the full-aot case if possible, since the trampoline will be called right 
4177         away.
4178
4179         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4180         trampolines to 1024 after the change above.
4181
4182         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4183         trampoline to save 8 bytes per trampoline.
4184
4185         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4186         change above.
4187
4188 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4189
4190         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4191
4192 2009-06-08  Martin Baulig  <martin@ximian.com>
4193
4194         * debug-mini.c
4195         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4196         (_mono_debugger_throw_exception): Don't make this static.
4197         (_mono_debugger_unhandled_exception): Likewise.
4198         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4199
4200         * debug-mini.c
4201         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4202         (_mono_debugger_throw_exception): Add function prototype.
4203         (_mono_debugger_unhandled_exception): Likewise.
4204
4205         * mini-exceptions.c
4206         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4207         arg; return the first exception handler if the exception is caught
4208         and we're running inside the debugger.
4209         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4210         improve exception handle inside runtime-invoke, check whether the
4211         exception is actually caught in the method being invoked and not
4212         by the runtime-invoke-wrapper.
4213
4214 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * image-writer.c: Improve support for the osx assembler.
4217
4218         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4219         support them.
4220
4221 2009-06-08  Martin Baulig  <martin@ximian.com>
4222
4223         * debug-mini.c
4224         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4225         (_mono_debugger_throw_exception): Don't make this static.
4226         (_mono_debugger_unhandled_exception): Likewise.
4227         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4228
4229         * debug-mini.c
4230         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4231         (_mono_debugger_throw_exception): Add function prototype.
4232         (_mono_debugger_unhandled_exception): Likewise.
4233
4234         * mini-exceptions.c
4235         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4236         arg; return the first exception handler if the exception is caught
4237         and we're running inside the debugger.
4238         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4239         improve exception handle inside runtime-invoke, check whether the
4240         exception is actually caught in the method being invoked and not
4241         by the runtime-invoke-wrapper.
4242
4243 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * image-writer.c (append_subsection): Don't align subsections of the
4246         debug_line section as a workaround.
4247
4248         * dwarfwriter.c: Emit line number info in the AOT case as well.
4249
4250 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4251
4252         This patch is contributed under the terms of the MIT/X11 license
4253
4254        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4255        code_len <= code_size
4256
4257 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4260
4261 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4264         invoke wrappers, we now use trampolines instead.
4265
4266 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4267
4268         * mini-darwin.c: The exception thread must not be registered with
4269         the GC.
4270
4271 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4272
4273         * mini-gc.c: Disable the code because it makes SGen crash.
4274
4275 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4276
4277         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4278         instead of asserting.
4279
4280 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4281
4282         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4283         output file after the code has been compiled.
4284
4285 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4286
4287         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4288
4289 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4290
4291         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4292         entries distinction to simplify the code.
4293
4294         * mini.h: Bump AOT file format version.
4295         
4296 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * objects.cs: Fix the signature of one of the tests.
4299
4300         * mini.c (mini_create_ftnptr): New helper function, moved here from
4301         object.c.
4302         (mini_get_addr_from_ftnptr): Ditto.
4303         (mini_init): Install the new helpers.
4304
4305 2009-05-28  Martin Baulig  <martin@ximian.com>
4306
4307         Correctly initialize the debugger when embedding Mono.
4308
4309         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4310         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4311         see documentation in mini_debug_running_inside_mdb().
4312
4313         * debug-debugger.c
4314         (mini_debug_running_inside_mdb): New function to check whether
4315         we're running inside mdb.
4316
4317         * mini.c (mini_init): Call mini_debugger_init() if we're running
4318         inside the debugger.
4319
4320         * driver.c (mono_main): Moved the call to mini_debugger_init()
4321         into mini_init() to make this work when embedding Mono.
4322
4323         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4324         calls to mini_debugger_init().
4325
4326         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4327         mono_debugger_main() -> mini_debugger_main() and put them inside a
4328         `MONO_DEBUGGER_SUPPORTED' conditional.
4329
4330 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4331
4332         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4333         this is no longer in use.
4334         * mini.h: Same.
4335
4336 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4339
4340         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4341         methods.
4342
4343 2009-05-27  Martin Baulig  <martin@ximian.com>
4344
4345 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4346
4347         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4348         long_conv_to_r_un to 64 bits.
4349
4350         * cpu-x86.md: Increase the instruction size due to the changes.
4351
4352         * iltests.il.in: Add regression test.
4353
4354         Fixes #467201.
4355
4356 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4357
4358         * objects.cs: Move the previous test from basic.cs to here.
4359
4360 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4361
4362         * basic.cs: Add regression test for #506915.
4363
4364 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4365
4366         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4367         optimization we must check the bb of the first byte of stobj as
4368         it's the only one set in cil_offset_to_bb.
4369
4370         Fixes #506915.  
4371
4372 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * image-writer.c: Fix pointer directive on ppc64.
4375
4376 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4377
4378         * image-writer.c (asm_writer_emit_section_change): Avoid using
4379         .bss subsections on ppc too.
4380
4381 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * image-writer.c: Fix the definition of TARGET_ASM_....
4384         
4385         * image-writer.c: Fix the emission of assembler directives in the last
4386         change.
4387
4388         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4389         exception throwing code to accomodate ppc64.
4390
4391         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4392         size to work on ppc64 too.
4393
4394         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4395         too.
4396
4397         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4398         the assembler dialect instead of using platform specific defines.
4399
4400 2009-05-22  Geoff Norton  <gnorton@novell.com>
4401
4402         * mini-arm.c (get_call_info): If a structure is split between the stack
4403         and argument registers, we should not advance the stack pointer by the entire
4404         native size, but just by the amount that spilled.
4405
4406 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4409         correctly.
4410
4411 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4412
4413         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4414         wrappers normally.
4415         
4416         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4417         methods so wrapper don't get added twice.
4418         (add_generic_instances): Don't add methods of arrays.
4419
4420         * generics.cs: Mark one test as !FULLAOT.
4421
4422 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4423
4424         * mini-x86.c (emit_move_return_value): Remove unused vars.
4425
4426 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4427
4428         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4429         decomposing 8 bytes structs into a LCALL.
4430
4431         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4432         pointer for where to store the returned regs.
4433
4434         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4435         state the concern.
4436
4437         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4438
4439 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4440
4441         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4442         without getenv.
4443
4444 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4447
4448         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4449         generics.
4450
4451 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * local-propagation.c (mono_local_cprop): Avoid local propagation
4454         across paired add/sub if the first instruction dest reg is it's
4455         source reg. For example:
4456
4457         int_add_imm R12 <- R12 [1] clobbers: 1
4458         int_sub_imm R42 <- R12 [1] clobbers: 1
4459
4460         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4461         maintain the math identify.
4462
4463         Fixes #505375.
4464
4465 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4466
4467         * Makefile.am: avoid going on the network just to get the revision,
4468         use git log instead
4469
4470 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4471
4472         Fixed estimate for short branches on amd64 (they were off mark, and
4473         enabling call prolog-epilog instrumentations caused assertions).
4474         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4475         estimate for the maximum length of this basic block.
4476         * mini-amd64.c:
4477         - mono_arch_emit_prolog: compute max_length for each basic block
4478           (instead of max_offset), and inflate size estimate also for entry bb
4479           in case of code instrumentation.
4480         - mono_arch_output_basic_block: get rid of "cpos" (the current
4481           estimated "position" in the code), and always use "offset" instead,
4482           which is accurate; at the beginning of the function quickly recompute
4483           max_offset for all the remaining blocks, starting from the current
4484           cfg->code_len (which is correct, and not estimated) and using the
4485           estimated block lengths computed previously.
4486
4487 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4490         functions, it is already done in the caller.
4491
4492         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4493
4494         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4495         MONO_ARCH_GSHARED_SUPPORTED define.
4496
4497         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4498
4499         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4500         function.
4501
4502 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4505         call to mono_marshal_get_rgctx_invoke ().
4506
4507         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4508         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4509         gshared use the static rgctx trampolines now.
4510         
4511         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4512         platform supports it.
4513
4514 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4517
4518         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4519
4520 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4523
4524         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4525         for ppc.
4526
4527 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4528
4529         Made it possible for mono_arch_instrument_epilog to preserve
4530         argument registers, otherwise instrumenting the "epilogue" before
4531         a tail call would clobber them.
4532         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4533         if like mono_arch_instrument_epilog but with an additional parameter
4534         that states if argument registers must be preserved.
4535         * mini.c: implemented mono_arch_instrument_epilog as a call to
4536         mono_arch_instrument_epilog_full without asking to preserve argument
4537         registers (this makes the existing code work as usual).
4538         * mini-amd64.c:
4539         - mono_arch_instrument_epilog: add parameter to transform it into
4540         mono_arch_instrument_epilog_full, and preserve argument registers
4541         when required.
4542         - mono_arch_output_basic_block, OP_TAILCALL case: call
4543         mono_arch_instrument_epilog_full.
4544         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4545         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4546         only transformed mono_arch_instrument_epilog into
4547         mono_arch_instrument_epilog_full.
4548
4549 2009-05-15  Geoff Norton  <gnorton@novell.com>
4550
4551         * mini-darwin.c: This works on arm now.
4552
4553 2009-05-14  Geoff Norton  <gnorton@novell.com>
4554
4555         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4556         embedding api.
4557
4558 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4561         label names.
4562
4563         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4564         wrappers during full aot mode correctly.
4565
4566         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4567         methods correctly.
4568
4569         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4570         mono_metadata_type_hash ().
4571
4572 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4573
4574         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4575         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4576         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4577         Removed MONO_INST_BRLABEL from the instruction flags, and the
4578         remaining code that used it, because we do not support branches inside
4579         basic blocks (and branch target labels) anymore.
4580         * Makefile.am: As part of the above cleanup, remove reference to
4581         BURG files which don't exist anymore.
4582
4583 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4586         osx.
4587
4588         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4589         to use mono_arch_throw_corlib_exception.
4590
4591         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4592         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4593
4594         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4595         domain mempool.
4596
4597         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4598
4599         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4600         for the got to make debugging easier and to avoid confusing it with the
4601         system got.
4602         
4603         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4604         method so a breakpoint can be set when using gdb.
4605
4606 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4609         on mono_method_get_imt_slot ().
4610
4611         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4612         num_decodes variables.
4613
4614         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4615         change as it doesn't seem to work.
4616         
4617         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4618         wrappers.
4619
4620 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4621
4622         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4623         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4624
4625         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4626         builder when using full aot.
4627
4628         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4629         here, it is already handled.
4630         
4631         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4632         correctly for IMT.
4633
4634         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4635
4636         * mini-arm.h: Enable IMT for full aot.
4637         
4638         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4639         arch doesn't support it.
4640
4641         * mini.c (mini_init): Don't disable IMT for full aot if the
4642         architecture supports it.
4643
4644         * mini.h (MonoAotTrampoline): New enum containing the different types
4645         of 'numerous' trampolines.
4646         (MONO_AOT_FILE_VERSION): Bump this.
4647
4648         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4649         static rgctx trampolines. Add support for full-aot IMT thunks.
4650
4651         * mini-amd64.h: Enable IMT for full aot.
4652
4653         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4654         to exclude tests belonging to a category.
4655
4656         * generics.cs: Mark some tests with a !FULLAOT category.
4657
4658         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4659         generics tests.
4660
4661 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4662
4663         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4664         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4665         (emit_plt): Fix a warning.
4666
4667 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4670         back into aot-compiler.c to a place where the other functions shared by
4671         the runtime and aot compiler are.
4672         
4673         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4674         as done previously, instead of in MonoAotFileInfo, since pointers might have
4675         alignment requirements.
4676
4677         * mini.h: Bump AOT file format version.
4678
4679 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4680
4681         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4682         that is used at runtime from the aot-compiler.c, this makes it
4683         work on setups that remove the AOT compiler from the output
4684         image. 
4685
4686 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4687
4688         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4689         PPC.
4690
4691         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4692
4693         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4694
4695         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4696         stuff to mono_arch_decompose_long_opts ().
4697         (mono_decompose_opcode): Remove some dead code.
4698
4699 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4700
4701         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4702         cmethod can be null for quite a some reasons.
4703
4704 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4705
4706         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4707
4708 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4709
4710         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4711
4712 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4715         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4716         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4717         calls returning structures by addr on amd64.
4718
4719         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4720
4721         * iltests.il.in: Restructure the tail call tests a bit.
4722         
4723 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4724
4725         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4726         for virtual methods too.
4727
4728 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4729
4730         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4731         due to regression in verifying System.dll.
4732
4733 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4734
4735         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4736         in dynamic methods.
4737
4738         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4739         instances.
4740
4741         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4742         g_str_hash () which can change.
4743
4744         * driver.c (mini_regression): Disable optimizations not supported by
4745         the cpu. Fixes #500019.
4746
4747         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4748         build.
4749
4750 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4753         to the latest LLVM code.
4754
4755 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4758
4759 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4762         x86/amd64.
4763
4764         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4765         no longer saving offsets, so just save the patch types along with the other
4766         info.
4767         * aot-runtime.c (load_patch_info): Update after the changes to 
4768         encode_patch_list ().
4769         (decode_got_entry): Removed, merged into load_patch_info ().
4770         (is_shared_got_patch): Removed, call the same function from
4771         aot-compiler.c.
4772
4773         * mini.h: Bump aot file format version.
4774         
4775         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4776         half-finished no-dlsym code.
4777
4778         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4779         option.
4780
4781         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4782         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4783
4784 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4787         buffer length to work with AOT code.
4788
4789         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4790         ldfld/stfld opcodes.
4791
4792         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4793         as it is not used.
4794
4795         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4796
4797         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4798
4799         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4800         LLVM API.
4801
4802         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4803         if needed. Don't decompose long operations when using llvm.
4804
4805 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4806
4807         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4808         PAGESIZE constant.
4809
4810         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4811
4812 2009-05-03  Martin Baulig  <martin@ximian.com>
4813
4814         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4815         mono_debugger_insert_method_breakpoint() since the class init
4816         handler we're inserting at the top of the method already gives us
4817         a notification.
4818
4819 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4820
4821         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4822         to mono_arch_decompose_long_opts () for x86 and arm.
4823
4824 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4825
4826         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4827         TARGET_AMD64 here.
4828
4829 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4832         JIT code.
4833
4834 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4837         number of trampolines used in full-aot mode.
4838
4839         * aot-compiler.c: Add an ntrampolines option to set the number of 
4840         trampolines emitted in full-aot mode.
4841
4842 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4843
4844         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4845         a volatile load. Get rid of get_tempname (), llvm assigns names
4846         automatically.
4847
4848         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4849         builder function.
4850
4851         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4852         a value.
4853
4854         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4855         level 1.
4856
4857         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4858         to the same register as a fixed sreg2. Fixes #497271.
4859
4860         * iltests.il.in: Add a new test.
4861
4862 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4865         stack, since pushes complicate exception handling.
4866
4867         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4868         the stack if they are passed using moves.
4869
4870         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4871
4872         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4873         when using llvm.
4874
4875         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4876         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4877         of FMOVE if it is an R4.
4878
4879 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4882
4883         * mini.h (LLVMCallInfo): New structure to store calling convention 
4884         information for the LLVM back end similar to the CallInfo structures in 
4885         the back-ends.
4886
4887         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4888         call information in a format usable by LLVM.
4889         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4890
4891         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4892         mono_llvm_emit_call () when compiling using LLVM.
4893
4894         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4895         comments to all functions. Fix memory leaks. Add a public init/cleanup
4896         function.
4897
4898         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4899
4900         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4901         mono_array_new_va () jit icall.
4902         
4903 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4904
4905         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4906         multiple machine description files to be specified.
4907         * mini-ops.h: fixes for cross-compilation.
4908
4909 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4910
4911         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4912         some porting work.
4913
4914 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4915
4916         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4917         to prevent asserts in various passes. Fixes #497220.
4918
4919 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4922         a racy assert.
4923
4924         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4925         table to avoid duplicates.
4926
4927         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4928         
4929         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4930         option is used.
4931
4932 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4935         is for method or field access.
4936
4937 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4940         a Value to stdout.
4941
4942         * mini-llvm.c (mono_llvm_emit_method): Use it.
4943         
4944         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4945         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4946         on volatile values.
4947
4948         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4949         synchronized methods.
4950
4951         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4952
4953         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4954
4955         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4956         OP_LOADI8_MEM.
4957
4958         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4959         allowing some options to be set dynamically.
4960
4961 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4964         unconditional branch.
4965
4966         * mini.h (MonoTrampolineType): Add new trampoline type 
4967         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4968         compiled code.
4969
4970         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4971         function.
4972
4973         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4974         creation function.
4975
4976         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4977         is enabled. Instead, use the llvm vcall trampoline.
4978         
4979         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4980
4981         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4982         
4983         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4984         functions.
4985
4986         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4987         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4988
4989         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4990         OP_IA64_CSET opcode.
4991
4992         * mini.c: Fix a warning.
4993
4994         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4995         THROW to the appropriate llvm type.
4996
4997 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * mini.c (mini_method_compile): Add statistics for methods JITted
5000         with/without LLVM.
5001
5002 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5003
5004         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5005         OP_IA64_CMP_<cond>_IMM opcodes.
5006
5007 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5010         corlib exceptions.
5011
5012         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5013         correctly.
5014
5015         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5016         GENERICINST.
5017
5018 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5019
5020         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5021
5022 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5025         support.
5026
5027         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5028         rgctx invoke trampolines for x86.
5029
5030         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5031         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5032         (mono_arch_get_vcall_slot): Simplify this.
5033
5034 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5037         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5038
5039 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5040
5041         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5042         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5043
5044         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5045
5046         * liveness.c (visit_bb): Remove a needless assert.
5047
5048 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5051         full aot support to the arch specific code.
5052
5053         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5054
5055         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5056
5057         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5058         
5059         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5060         collect information about the delegate invoke impl trampolines.
5061
5062         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5063         to save trampolines during full-aot mode.
5064
5065         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5066         creation function which returns a trampoline which sets the rgctx
5067         argument.
5068         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5069         wrapper if possible.
5070         (mono_delegate_trampoline): Ditto.
5071
5072         * mini.c (mono_jit_runtime_invoke): Ditto.
5073
5074         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5075         
5076         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5077
5078         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5079         
5080 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5083         just setting the opcode to OP_NOP.
5084
5085 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * mini.c (mini_method_compile): Put the last change inside an 
5088         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5089         
5090         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5091         and extend live ranges to cover the whole method when using xdb.
5092
5093         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5094         do it in the trampolines.
5095
5096         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5097         needed.
5098
5099         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5100         
5101         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5102         call code in full-aot mode since IMT is disabled there.
5103         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5104         new JIT no longer has that restriction.
5105
5106         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5107
5108         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5109         a more compact format.
5110         (mono_aot_wrapper_name): New function to return a unique name for a
5111         wrapper method, also used by the AOT runtime.
5112
5113         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5114         aot-compiler.c.
5115
5116         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5117         when a ICollection<T> etc is encountered.
5118         (add_generic_instances): Process method arguments/locals too.
5119         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5120         trampoline names.
5121
5122         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5123         
5124 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5127
5128         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5129
5130         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5131         representing the result of the decomposition. Nullify instructions
5132         instead of setting them to OP_NOP since nops can't have registers
5133         set.
5134
5135 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5138         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5139         info. Strip 'mapping symbols' on ARM.
5140
5141         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5142         
5143         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5144         this with the native genmdesc.
5145
5146 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5147
5148         * aot-runtime.c:  Fixing the MSVC build.
5149
5150         Code is contributed under MIT/X11 license.
5151
5152 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5155         JITted code depends on it.
5156
5157 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5158
5159         * aot-compiler.c: Use new MonoGenericParam accessors.
5160
5161 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5162
5163         Reduce memory usage and improve correctness wrt MonoGenericParam
5164         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5165         handing.  Avoid allocating MonoGenericParams, but use the ones in
5166         the container itself.
5167
5168 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5169
5170         * tasklets.c: Return exceptions in the out argument.
5171
5172 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5175         opcode. Use pointer types in more places instead of casting them to 
5176         integers.
5177
5178         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5179         optimizations.
5180         (mono_llvm_optimize_method): New helper function to optimize a method.
5181
5182         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5183         widening code so it could be called from more places.
5184         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5185         code paths in the call opcodes.
5186
5187 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5188
5189         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5190
5191 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5192
5193         * dwarfwriter.c: Use _ to separate class name 
5194         components as gdb can't handle '.'. Represent reference variables
5195         as 'class <NAME>&'.
5196         
5197         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5198
5199         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5200         
5201         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5202
5203         * gc-test.cs: New file with GC stack marking tests.
5204         
5205         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5206         negative numbers for vfp.
5207
5208         * basic-float.cs: Add a test.
5209         
5210 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5211
5212         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5213
5214 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5215
5216         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5217         part of tasklet/continuation support.
5218
5219 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5222         amd64 opcodes inside an ifdef.
5223
5224         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5225         of complex types.
5226         
5227         * dwarfwriter.c (emit_type): Emit the class info for classes.
5228
5229 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5230
5231         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5232
5233         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5234
5235         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5236
5237         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5238
5239 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5242
5243         * mini-llvm.c: Update comments.
5244
5245         * mini.h (COMPILE_LLVM): New macro.
5246
5247         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5248
5249         * ssa.c (mono_ssa_compute): Ditto.
5250         
5251         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5252         the unwind ops from a DWARF FDE.
5253
5254         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5255         methods by extracting the dwarf unwind ops from the unwind info generated
5256         by LLVM.
5257         
5258         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5259         calls.
5260
5261         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5262         addressing modes.
5263
5264 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5265
5266         * Makefile.am (llvm_sources): Enable this.
5267
5268         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5269         failing back to the JIT if something cannot be handled.
5270
5271         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5272         compiling with LLVM.
5273
5274         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5275         compiling with LLVM.
5276
5277         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5278         compiling with LLVM.
5279
5280         * mini-ops.h: Add a few opcodes needed by LLVM.
5281
5282         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5283         has no unwind info.
5284
5285         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5286         backend.
5287
5288         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5289
5290         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5291
5292 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5293
5294         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5295         ridiculously large methods.
5296
5297 2009-03-31  Martin Baulig  <martin@ximian.com>
5298
5299         * debug-debugger.c (debugger_remove_breakpoint): Call
5300         mono_debugger_remove_class_init_callback ().
5301
5302 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5305         right before emitting code, not at the start.
5306
5307         * mini.c (mono_postprocess_patches): Extract this into a separate function
5308         from mono_codegen ().
5309
5310         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5311         byref types correctly.
5312
5313 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5316         by the last change.
5317
5318 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5321         indirect calls, this avoids problems where get_vcall_slot () would get
5322         confused by the native code for the instruction preceeding the call.
5323         (mono_arch_get_vcall_slot): Simplify this.
5324         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5325
5326         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5327         register allocator now seems to depend on them instead of the data in
5328         cpu-<ARCH>.md.
5329
5330         * mini.c (mini_method_compile): Throw the correct type of exception if
5331         mono_method_get_header () fails because of a loading error.
5332
5333 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * mini.c (mini_method_compile): Clear the loader error if the method
5336         header cannot be decoded.
5337
5338         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5339         interface methods on proxies correctly.
5340
5341         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5342         this argument for vtype methods. Add precise liveness info for arguments.
5343
5344         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5345         LIVERANGE_START/END opcodes.
5346
5347         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5348         for arguments and values in registers.
5349
5350 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5353         return a valuetype. Fixes #487518.
5354
5355         * iltests.il: Add a test.
5356         
5357         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5358
5359         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5360         closed over a null reference correctly.
5361
5362 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5363
5364         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5365
5366 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5367
5368         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5369         allocated to the same registers as fixed sregs.
5370
5371 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5372
5373         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5374         ATOMIC_CAS_IMM ops.
5375
5376         * method-to-ir.c: Handle more cases for
5377         Interlocked.CompareExchange.
5378
5379         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5380         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5381         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5382
5383 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5384
5385         * aot-runtime.c (decode_method_ref): Fix a warning.
5386
5387         * unwind.c (mono_unwind_frame): Ditto.  
5388
5389 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5392         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5393
5394         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5395         fix the handling of large values in the ALU_PC_G0_NC relocation.
5396
5397 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5400
5401 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5402
5403         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5404         ops.
5405
5406 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5407
5408         * method-to-ir.c: MINI_OP3 needs a comma.
5409
5410         * method-to-ir.c, mini.h, mini.c: Remove
5411         mono_init_op_sreg_counts ().
5412
5413 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5414
5415         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5416         OP_JMP.
5417         
5418         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5419         assertion.
5420
5421         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5422
5423         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5424         code somewhat.
5425
5426 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5427
5428         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5429         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5430         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5431         operations.
5432
5433 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5434
5435         * driver.c: Change location of gc_wrapper.h.
5436
5437         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5438         inside finally clauses correctly. Fixes #485721.
5439
5440         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5441         after the change above.
5442
5443         * exceptions.cs: Add a test.
5444         
5445 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5448
5449         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5450         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5451         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5452
5453         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5454         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5455
5456 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5457
5458         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5459         Simplify logic for ensure_method_is_allowed_to_call_method. 
5460         Handle wrappers on callers.
5461
5462 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5465         them don't run yet.
5466
5467         * basic-simd.cs: Fix the names of some test methods.
5468
5469 2009-03-18  Geoff Norton  <gnorton@novell.com>
5470
5471         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5472
5473 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5476
5477 2009-03-17  Jb Evain  <jbevain@novell.com>
5478
5479         * driver.c: remove now uneeded call to mono_gc_base_init before
5480         mono_profiler_load.
5481
5482 2009-03-17  Jb Evain  <jbevain@novell.com>
5483
5484         * dwarfwriter.c (token_handler): handle more cases.
5485
5486 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5487
5488         * method-to-ir.c: Remove more dead code (that was required only
5489         because of method_is_safe). Fix compiler warnings.
5490
5491 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5492
5493         * method-to-ir.c: Remove unneeded/useless method_is_safe
5494         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5495
5496 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5497
5498         * mini.c (mini_method_compile): Print the method been compiled with
5499         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5500         for people not familiar with the runtime.
5501
5502 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5505         a managed object which is later put into a GList. Return its class instead.
5506
5507         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5508         stack slots when using sgen.
5509
5510 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5513
5514 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5517         > so it works on the first vreg as well.
5518
5519 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5522         trigger randomly.
5523
5524         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5525         
5526         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5527         implement GArray.
5528
5529 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5532         native->IL offset mapping.
5533
5534 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5535
5536         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5537
5538         * basic.cs: Add a test.
5539
5540 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5541
5542         * mini-x86.c (mono_arch_output_basic_block): Use different
5543         registers in case the ones we want to overwrite are used by the
5544         other operand.  Fixes regression in #480807.
5545
5546 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5547
5548         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5549
5550         * dwarfwriter.c (emit_line_number_info): The line number info for
5551         IL code was off by one. Fix that.
5552
5553         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5554         stack.
5555
5556 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5557
5558         Contributed under the terms of the MIT/X11 license by Steven
5559         Munroe <munroesj@us.ibm.com>.
5560
5561         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5562         Fixes #483462.
5563
5564 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5567         as well.
5568
5569 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5572         the delegate ctor handling code. Fixes #482638.
5573         
5574         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5575         #481458.
5576
5577         * iltests.il.in: Add a test.
5578         
5579         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5580         mini-posix.c.
5581
5582 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5583
5584         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5585         is shared generic code, return the trampoline, even if the method
5586         has already been compiled.  Fixes #479763.
5587
5588         * mini.c, mini.h: New function
5589         mono_jit_find_compiled_method_with_jit_info() which is the same as
5590         mono_jit_find_compiled_method() but also returns the jit info.
5591
5592 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5593
5594         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5595         for methods which actually have one.  For all other methods, make
5596         sure the this argument var is live the whole method.
5597
5598         * mini.c (mini_method_compile): Every shared method has a
5599         this/vtable/mrgctx info.  Fixes #480807.
5600
5601 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5602
5603         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5604         generic/imt thunks where some entries branch through the vtable,
5605         while other entries branch directly.
5606
5607 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5608
5609         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5610
5611         * mini-windows.c: Ditto.
5612         
5613         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5614         ctors.
5615
5616 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5619         down an assert.
5620
5621 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5622
5623         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5624         #481403.
5625
5626 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5627
5628         * exceptions-x86.c: Include debug-mini.h - fixes build.
5629
5630 2009-03-04  Martin Baulig  <martin@ximian.com>
5631
5632         * debug-mini.c: Clean up the exception API and add documentation.
5633         (mono_debugger_handle_exception): New public method; this is
5634         called when throwing an exception or encountering an unhandled one.
5635         (mono_debugger_call_exception_handler): Formerly known as
5636         mono_debugger_handle_exception(); this is used to tell the
5637         debugger that we're about to invoke an exception handler.
5638
5639 2009-03-04  Martin Baulig  <martin@ximian.com>
5640
5641         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5642         ../metadata/mono-debug-debugger.c; save and reset exception state.
5643
5644 2009-03-02  Martin Baulig  <martin@ximian.com>
5645
5646         * debug-mini.c: Moved the debugger exception handling here from
5647         ../metadata/mono-debug-debugger.c.
5648
5649         * debug-mini.h
5650         (MonoDebuggerExceptionAction): New exception typedef.
5651
5652         * debug-mini.c
5653         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5654
5655         * exceptions-amd64.c
5656         (mono_amd64_throw_exception): Use the new debugger exception
5657         handling code.
5658
5659         * mini-exceptions.c
5660         (mono_handle_exception_internal): Don't call
5661         mono_debugger_unhandled_exception() here.
5662
5663 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5664
5665         * mini.c aot-compiler.c: Update after the changes to 
5666         mono_marshal_get_runtime_invoke ().
5667
5668         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5669         Virtual generic methods might not have method->slot set, work around
5670         that.
5671
5672         * generics.cs: Add a test.
5673
5674 2009-03-02  Geoff Norton  <gnorton@novell.com>
5675
5676         * mini.c:
5677         * driver.c: Allow signal chaining of SIGFPE as well.
5678
5679 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5680
5681         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5682         this since it now receives the method not its generic context in the
5683         IMT reg.
5684
5685         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5686         generic/imt thunks where some entries branch through the vtable, while
5687         other entries branch directly.
5688
5689         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5690
5691         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5692         support for interface methods as well.
5693
5694         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5695         using the normal IMT thunks.
5696
5697         generics.cs: Add new tests.
5698         
5699         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5700         the generic inst to the generic imt thunks. This fixes AOT support, 
5701         improves consistency with the normal IMT thunks, and makes it easier to
5702         add support for interface generic virtual methods later.
5703
5704         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5705         
5706 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5707
5708         * driver.c (mono_set_signal_chaining): New public API function to enable
5709         signal chaining on POSIX platforms.
5710
5711         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5712         (si@lindenlab.com) to implement signal chaining. The original patch was
5713         contributed under the MIT X/11 license:
5714         https://bugzilla.novell.com/show_bug.cgi?id=318894
5715
5716 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5717
5718         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5719         too until it can be made to run on amd64.
5720
5721 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5724         to  get_generic_context_from_code () + get_call_info () if possible.
5725
5726 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5729         suspend-on-sigsegv functionality.
5730
5731         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5732         to suspend when a native SIGSEGV is received. This is useful for debugging
5733         crashes which don't happen under gdb, since a live process contains more
5734         information than a core file.
5735
5736         * mini-exceptions.c (mono_print_thread_dump): Use 
5737         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5738
5739         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5740
5741         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5742         
5743         * basic-float.cs: Disable the tests which currently fail on amd64.
5744
5745         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5746         value to mono_arch_patch_callsite () to fix crashes.
5747         
5748         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5749
5750 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5753         nop code by patching the call address to point to the nullified class init
5754         trampoline, as the former does not seem to be safe on SMP machines.
5755
5756 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5757
5758         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5759         they were wrong.
5760
5761 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * basic-float.cs basic-calls.cs: Fix warnings.
5764
5765 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5766
5767         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5768         correct frame pointer in the LMF.  Should fix #478394.
5769
5770 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5771
5772         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5773
5774         * image-writer.c: Make the binary writer less verbose.
5775
5776 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5779         are called from runtime invoke wrappers.
5780
5781 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5782
5783         * cpu-ppc.md (store_memindex): Increase the size of this.
5784
5785 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5786
5787         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5788
5789         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5790
5791         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5792         OP_LCONV_TO_R_UN.
5793
5794         Last fix for of #467201.
5795
5796
5797 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5800
5801         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5802         and long_conv_to_r8_2:
5803
5804         Fixed part of #467201.
5805
5806 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5807
5808         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5809
5810         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5811         conversion to 32 bits.
5812
5813         * cpu-x86.md: Increase the size of int_conv_to_r4.
5814
5815         * basic-float.cs: Add a test for this.
5816
5817         Fixed part of #467201.
5818
5819 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5822
5823         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5824         conversion to 64 bits.
5825
5826         * basic-float.cs: Add a test for this.
5827
5828         Fixed part of #467201.
5829
5830 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5831
5832         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5833
5834         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5835         This behavior is compatible with MS.
5836
5837         * iltest.il.in: Add a test for this.
5838
5839         Fixed part of #467201.
5840
5841 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5842
5843         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5844
5845         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5846         change the precision of the value.
5847
5848         * cpu-x86.md: Define len for float_conv_to_r4.
5849
5850         * basic-float.cs: Add a test for this.
5851
5852         Fixed part of #467201.
5853
5854 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * mini.c: Adjust locking order to the new semantics where the loader lock
5857         comes first.
5858
5859 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5860
5861         * aot-runtime.c:
5862         * mini-amd64.c:
5863         * mini-arm.c:
5864         * mini-ia64.c:
5865         * mini-mips.c:
5866         * mini-ppc.c:
5867         * mini-sparc.c:
5868         * mini-trampolines.c:
5869         * mini-x86.c:
5870         * mini.c:
5871         * tramp-alpha.c:
5872         * tramp-amd64.c:
5873         * tramp-arm.c:
5874         * tramp-hppa.c:
5875         * tramp-ia64.c:
5876         * tramp-mips.c:
5877         * tramp-ppc.c:
5878         * tramp-s390.c:
5879         * tramp-s390x.c:
5880         * tramp-sparc.c:
5881         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5882
5883 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5886         as it is incorrect.
5887
5888 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5891         for cctors if needed.
5892
5893 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5894
5895         * mini-ppc.c: Fix build on Darwin.
5896
5897 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5900         version instead of 3 as valgrind doesn't like version 3.
5901
5902         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5903
5904         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5905         usable for hashing methods.
5906         (emit_extra_methods): Use the new hash to avoid putting every method in the
5907         same hash bucket.
5908
5909         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5910
5911         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5912         whenever a method ref could match a method.
5913         
5914         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5915         test to fail.
5916         
5917         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5918         methods refs.
5919
5920         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5921
5922         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5923         the encoding buffer.
5924
5925         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5926         mono_method_get_header () on inflated methods as an optimization.
5927
5928 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5929
5930         * ssa.c (fold_ins): Fix another crash if the instruction following the
5931         switch was optimized away.
5932
5933 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5934
5935         Contributed under the terms of the MIT/X11 license by Steven
5936         Munroe <munroesj@us.ibm.com>.
5937
5938         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5939
5940 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5943         around the mono_domain_alloc calls, it is now done by the functions
5944         themselves.
5945
5946         * aot-compiler.c (compile_method): Only add wrappers referenced by
5947         the method if compiling with full AOT.
5948         (mono_compile_assembly): Error out if --aot=full is specified on
5949         a platform where it is not supported.
5950
5951         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5952         on ARM too.
5953
5954         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5955         AOT support.
5956
5957         * aot-runtime.c (load_named_code): Handle 
5958         mono_arm_throw_exception_by_token.
5959
5960         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5961
5962         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5963         unaligned.
5964
5965         * Makefile.am (fullaotcheck): Exit if a test fails.
5966
5967         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5968         on ARM.
5969         (mono_compile_assembly): Handle the assembler failing.
5970
5971         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5972         accepting subsections of .bss.
5973
5974         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5975         was optimized away.
5976
5977         * aot-compiler.c: Remove some unused includes.
5978         
5979         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5980         now in MonoImageWriter.
5981
5982         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5983         code sequence which matches a non-virtual call. Fixes #472654.
5984
5985 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5988         xdebug code.
5989         
5990         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5991         use the image/dwarf writers directly.
5992
5993         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5994         field.
5995
5996         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5997         MonoDwarfWriter.
5998
5999         * image-writer.h: Fix some typos.
6000
6001         * dwarfwriter.h dwarfwriter.c: New files.
6002         
6003         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6004         separate module.
6005
6006         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6007         argument to return unwind info.
6008
6009         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6010
6011         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6012         
6013         * aot-runtime.c (decode_method_ref): Add a case for 
6014         MONO_AOT_METHODREF_WRAPPER_NAME.
6015
6016         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6017         for AOT.
6018
6019         * aot-compiler.c (encode_method_ref): Use the new constants.
6020
6021         * aot-runtime.c (decode_method_ref): Ditto.
6022
6023         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6024         be compiled, not the icall itself.
6025
6026 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6029         using decode_method_ref ().
6030
6031         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6032         convert it to an in32. Fixes #475859.
6033
6034         * arrays.cs: Add a test.
6035
6036 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6037
6038         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6039         OP_LCONV_TO_U2.
6040
6041         * basic-long.cs: Add a test.
6042
6043 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6044
6045         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6046         remove the frame pointer in leaf methods which don't receive any
6047         arguments, don't throw exceptions and don't do dynamic stack
6048         allocations.
6049
6050 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6053         the fail_tramp changes. Hopefully fixes #475132.
6054
6055 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6058         instead of mono_metadata_signature_dup_full.
6059
6060 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6061
6062         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6063         for processing jump tables. Fixes #473787.
6064
6065 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6066
6067         * mini-generic-sharing.c: mini_method_get_context() just calls
6068         mono_method_get_context_general() now.
6069
6070         * mini.c, mini.h: Moved get_object_generic_inst(),
6071         construct_object_context_for_method() and
6072         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6073
6074 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6077         basic block fell through to its successor bblock without a branch. Fixes
6078         #474718.
6079
6080         * iltests.il.in: Add a test.
6081         
6082         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6083         (can_encode_patch): We can now handle arrays of generic parameters and
6084         array methods.
6085
6086         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6087
6088         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6089         the AOT file to avoid some #ifdefs in aot-runtime.c
6090
6091         * mini.h: Bump AOT file format version.
6092
6093 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * Makefile.am (fullaotcheck): Make this run the tests.
6096
6097         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6098
6099 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6100
6101         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6102         individually.  Fixes #473482.
6103
6104 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6105
6106         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6107
6108 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6109
6110         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6111         (mono_compile_assembly): Hush compile warnings about
6112         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6113         code path.
6114
6115 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6116
6117         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6118
6119         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6120
6121         * aot-compiler.c: Fix arm support.
6122
6123         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6124         img_writer_emit_unset_mode () function.
6125
6126         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6127         (mono_unwind_get_dwarf_pc_reg): Ditto.
6128
6129         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6130         Move almost all platform specific code to a set of arch_ functions, 
6131         and document them to ease porting.
6132         
6133         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6134
6135         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6136
6137         * aot-compiler.c: Extract the image writing functionality into a separate
6138         module to reduce the size of this file.
6139
6140 2009-02-09  Geoff Norton  <gnorton@novell.com>
6141
6142         * mini-s390.c: Fix the signature of emit_sig_cookie.
6143
6144 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6145
6146         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6147
6148         * aot-runtime.c (is_shared_got_patch): Ditto.
6149
6150         * aot-runtime.c (load_named_code): Cope with the fact that 
6151         decode_got_entry () won't decode the patch fully if its corresponding got
6152         entry is already filled.
6153         
6154         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6155         Initialize *ji.
6156         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6157
6158         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6159         as the moving pointer instead of 'buf' for consistency with the rest of the
6160         codebase.
6161         (mono_arch_create_monitor_exit_trampoline): Ditto.
6162
6163         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6164         generic_class_init trampolines.
6165         (add_generic_class): Extract some code from add_generic_instances () into a
6166         separate function so it can be called from other places too.
6167         (compile_method): Call add_generic_class () for the classes of inflated methods
6168         referenced by the method.
6169         (can_encode_patch): Allow references to generic parameters.
6170
6171         * aot-runtime.c: Add support the patches required by the new trampolines.
6172         
6173         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6174         support.
6175
6176         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6177         full-aot support.
6178
6179         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6180         this from get_throw_pending_exception, make the signature full aot compatible.
6181
6182         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6183
6184         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6185
6186         * exceptions.cs: Add a test.
6187
6188 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6189
6190         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6191         use the DWARF_DATA_ALIGN constant instead.
6192
6193         * exception-<ARCH>.c: Update after the above change.
6194
6195         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6196         dwarf unwinder.
6197
6198         * mini-arm.c: Enable the dwarf unwinder.
6199
6200         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6201         instead of mono_class_setup_vtable ().
6202
6203 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6204
6205         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6206         dwarf unwinder.
6207
6208         * mini-x86.h: Enable the dwarf unwinder.
6209
6210 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6211
6212         Fix mcs/tests/test-7.cs
6213         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6214         2009-02-03.
6215
6216 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6217
6218         * mini.c (print_jit_stats): Remove some unused statistics.
6219
6220 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6223
6224 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6225
6226         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6227         the method we get from mono_object_get_virtual_method() because
6228         that function does it properly, now.
6229
6230 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6231
6232         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6233         opcodes. Fixes #472775.
6234
6235 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6236
6237         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6238         fact that mono_find_jit_info() sometimes returns the context
6239         corresponding to the jit info in new_ctx.  Fixes #472600.
6240
6241 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6242
6243         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6244         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6245         klass->enum_basetype directly.
6246
6247         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6248         enum subtypes.
6249
6250         * unwind.c: Avoid 0 sized arrays.
6251
6252 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6255         size on systems with 64k pages. Fixes #471389.
6256
6257 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6258
6259         Contributed under the terms of the MIT/X11 license by Steven
6260         Munroe <munroesj@us.ibm.com>.
6261
6262         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6263         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6264         necessary.
6265
6266 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6267
6268         Contributed under the terms of the MIT/X11 license by Steven
6269         Munroe <munroesj@us.ibm.com>.
6270
6271         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6272         comparison fix.
6273
6274         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6275         The trampoline can be longer on PPC64.
6276
6277 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6278
6279         Contributed under the terms of the MIT/X11 license by Steven
6280         Munroe <munroesj@us.ibm.com>.
6281
6282         * mini-ppc.c: Compiler warning fixes and trivial code
6283         simplifications.
6284
6285 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6286
6287         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6288         ins->dreg which could be a hardware register, not a vreg.
6289
6290         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6291         
6292         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6293         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6294
6295         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6296         
6297         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6298         ->dreg, that is not the vreg we are looking for.
6299
6300         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6301
6302         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6303         LIVERANGE_END.
6304
6305         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6306         strange crashes.
6307
6308 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6311
6312         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6313         the line diff is 0.
6314
6315         * aot-compiler.c: Add xdebug support on x86.
6316
6317         * unwind.c: Add x86 support.
6318         
6319         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6320         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6321
6322         * mini.c (mini_method_compile): Ditto.
6323         
6324         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6325         the variable index.
6326
6327         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6328         which mimic .push_section/.pop_section in GAS.
6329         
6330         * aot-compiler.c: Emit precise live range information for variables.
6331
6332         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6333
6334         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6335         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6336         them.
6337
6338         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6339         the live ranges of variables.
6340
6341         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6342         of the variable in terms of native offsets.
6343
6344 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6345
6346         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6347         
6348 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6349
6350         Contributed under the terms of the MIT/X11 license by Steven
6351         Munroe <munroesj@us.ibm.com>.
6352
6353         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6354         order (offset then base reg) for ppc_load_multiple_regs.
6355         (emit_save_saved_regs) Correct operand order for
6356         ppc_store_multiple_regs.
6357         (mono_arch_get_call_filter): Correct operand order for
6358         ppc_load_multiple_regs.
6359
6360         * mini-ppc.c (emit_memcpy): Fix operand order for
6361         ppc_load_reg_update and ppc_store_reg_update.
6362         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6363         (mono_arch_emit_epilog): Correct operand order for
6364         ppc_load_multiple_regs.
6365
6366         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6367         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6368
6369 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6370
6371         * cpu-ppc64.md: Fixed storer4_memindex length.
6372
6373 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6376         line number info.
6377         
6378         * aot-compiler.c (emit_line_number_info): Optimize this.
6379
6380 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6381
6382         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6383         
6384         * aot-compiler.c: Add debug info for methods without debug info by
6385         emitting an IL file and having the line number info referencing that file.
6386
6387         * aot-compiler.c: Optimize the size of the generated line number info.
6388
6389         * aot-compiler.c: Emit line number info in xdebug mode.
6390
6391         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6392         million arguments.
6393
6394 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6395
6396         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6397
6398         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6399         is used.
6400
6401 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * basic-calls.cs: Test for the weird crash found on arm.
6404         
6405 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * cpu-arm.md: Increase the size of storer8_membase_reg and
6408         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6409
6410         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6411         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6412         reg to LR otherwise we'll be loading/storing from just the offset.
6413
6414 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6415
6416         Question: if we are storing gint32's inside the "*native_offset",
6417         should we change the signature to "gint32 *native_offset" to
6418         ensure that we do not have type definition problems?
6419         
6420         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6421         an int * as this is what the other function expects, causes
6422         problems with Freescale's compiler that defined int32_t to be a
6423         long and makes int incompatible 
6424
6425 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6426
6427         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6428         filename conflict with bjam.
6429
6430 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6431
6432         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6433         as it might use decomposed ops.
6434
6435 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6438
6439         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6440         is defined.
6441
6442         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6443
6444         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6445         offsets.
6446
6447         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6448         way registers are stored in MonoContext on arm.
6449
6450         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6451         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6452
6453         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6454
6455         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6456
6457         * mini.c (mini_init): Register mono_isfinite.
6458
6459         * jit-icalls.c (mono_isfinite): New jit icall.
6460
6461         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6462         
6463         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6464         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6465         the parent frame.
6466
6467 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6468
6469         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6470         separate frame and stack pointers, so we must use FP to find the register
6471         spill area.
6472         The FP reg is retrieved from the MonoContext::regs array.
6473
6474 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6477         as FPA requires it.
6478
6479 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6482         return R4 and R8 when not running under softfloat.
6483
6484         Fixes basic-calls.exe
6485
6486 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6487
6488         * mini-arm.c: Implement some overflow opcodes.
6489
6490 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6491
6492         * ssa.c: handle another alloca.h
6493
6494         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6495         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6496         MONO_ARCH_USE_SIGACTION. 
6497
6498         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6499         capability defines.
6500
6501         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6502
6503         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6504         PPC targets as sigaction does not exist on all platforms, define
6505         this on a per-platform basis.
6506
6507         Instead of erroring out if the platform is not defined, include
6508         mini-ppc-os.h, and expect that the OS specific setting provides
6509         the required information.   
6510
6511 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6512
6513         * aot-compiler.c: Fix --enable-minimal=aot.
6514
6515 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6516
6517         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6518         previous change.
6519
6520 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6521
6522         * exceptions-arm.c: Fix warnings.
6523
6524         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6525         ARM.
6526
6527         * mini-x86.c: Fix --enable-minimal=jit build.
6528
6529         * mini.c: Really fix --enable-minimal=jit build.
6530         
6531         * mini.c (construct_object_context_for_method): Move this outside
6532         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6533
6534         "Backported" of r124984 from 2.0 branch.
6535         
6536         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6537
6538         "Backport" of r124977 + r124978 from 2.0 branch.
6539         
6540         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6541         to avoid calling mono_exception_from_token () from the throw trampoline.
6542         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6543         for throwing corlib exceptions, this fixes full-aot support for corlib
6544         exceptions.
6545
6546         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6547
6548 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6549
6550         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6551         part of the changes to split the code in mini into operating
6552         system specific files.
6553
6554         This patch was done by copying mini.c to the respective files to
6555         preserve SVN history.
6556
6557 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6560
6561 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6562
6563         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6564         remoting-invoke-with-check wrappers of shared methods.
6565
6566         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6567
6568 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6569
6570         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6571         optimization if the top of stack is the last instruction in the
6572         bblock.  Otherwise it might have been used after its definition.
6573         Fixes #469742.
6574
6575 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6578         method as well when get_vcall_slot () fails to match a code sequence.
6579
6580         * mini-arm.c: Fix the android build, which doesn't have
6581         __aeabi_read_tp.
6582
6583 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6586         the s390x build.
6587
6588 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6589
6590         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6591
6592 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6595         and put its id into jinfo->used_regs. This is only used on amd64,
6596         which is currently the only platform generating unwind info.
6597
6598         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6599         the dwarf unwinder. This is required to correctly handle async exceptions
6600         like thread abort and stack overflows, which can happen while a method
6601         is in the middle of its prolog or epilog.
6602         
6603         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6604         the unwind info belonging to an AOTed method.
6605
6606         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6607         into cfg->unwind_ops.
6608         
6609         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6610
6611         * mini.c (mini_init): Call mono_unwind_init ().
6612         (mini_cleanup): Call mono_unwind_cleanup ().
6613
6614         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6615         unwind info to be shared between methods.
6616
6617         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6618         saved in the LMF.
6619
6620         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6621         get_throw_pending_exception () to avoid initialization races.
6622
6623         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6624         mono_arch_exceptions_init () function.
6625
6626         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6627
6628 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6629
6630         * mini.c (mono_get_domain_intrinsic): New helper function.
6631         (mono_get_thread_intrinsic): Ditto.
6632
6633         * mini-arm.c mini-ia64.c: Use the new helper functions.
6634         
6635         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6636         the last constrained_call change, since it is needed in the non-AOT
6637         case as well.
6638
6639         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6640         
6641         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6642         mono_get_lmf_addr () on arm eabi linux.
6643
6644 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6645
6646         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6647         code sequence which matches a non-virtual call.
6648
6649 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6650
6651         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6652         stack pointer (r1).
6653
6654 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6655
6656         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6657         runtime-invoke wrappers, since they are also shared based on signature.
6658
6659 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6660
6661         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6662         info from the (correct) context.
6663
6664 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6665
6666         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6667         
6668         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6669         using dwarf unwinding info. Not yet used.
6670
6671         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6672
6673 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6674
6675         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6676         descriptors.
6677
6678         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6679         special case and handle mono_arch_delegate_invoke_impl() returning
6680         function descriptors.
6681
6682         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6683         trampolines return function descriptors, too.
6684
6685 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6686
6687         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6688         out_of_line optimization.
6689
6690 2009-01-21  Martin Baulig  <martin@ximian.com>
6691
6692         * mini.h
6693         (MonoCompile): Added `disable_deadce_vars' to disable removing
6694         unused variables.
6695
6696         * mini.c
6697         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6698         inside the debugger.
6699
6700         * liveness.c (mono_analyze_liveness): Don't remove any unused
6701         variables if `cfg->disable_deadce_vars' is set.
6702
6703 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6704
6705         * method-to-ir.c: Only apply exception constructor optimization if
6706         the the method actually belongs to an exception class.  Fixes
6707         #467456.
6708
6709 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6712         change inside a #ifdef __mono_ppc64__.
6713
6714         * aot-compiler.c (compile_method): Remove the previous limitation.
6715
6716         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6717         on type variables in AOTed code.
6718         
6719         * aot-compiler.c (compile_method): Skip generic methods having type 
6720         constraints on their generic parameters.
6721
6722         * aot-compiler.c (compile_method): Check for methods which cannot be
6723         encoded inside RGCTX_FETCH patches as well.
6724
6725         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6726         build.
6727
6728 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6729
6730         * method-to-ir.c: Force the vtable variable in shared generic code
6731         for the case that they might show up on a stack trace where they
6732         are needed.
6733
6734         * mini-exceptions.c: Save and use generic sharing info as well as
6735         IP in stack traces to resolve shared generic instantiations.
6736
6737 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6740         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6741
6742 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6743
6744         * method-to-ir.c: Do generic sharing for array constructors.
6745
6746 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6747
6748         * mini-exceptions.c (mono_print_thread_dump): Add information
6749         about the thread state using wapi_current_thread_desc.
6750
6751 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6752
6753         * basic-simd.cs: Tests for the new constructors. 
6754
6755 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6756
6757         * mini-ops.h: Added OP_EXPAND_*
6758
6759         * cpu-x86.md: Same.
6760
6761         * mini-x86.c (mono_arch_output_basic_block): Same.
6762         
6763         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6764
6765 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6766
6767         * iltests.il.in: Add a test for #467385.
6768
6769 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6770
6771         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6772         thread been cleaned up is not the same currently in execution.
6773
6774         Fixes appdomain-unload crashes on windows, osx and linux variants
6775         without the __thread keyword.
6776
6777 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6780         (koush@koushikdutta.com). Implement this for android.
6781
6782         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6783         begins with a digit.
6784
6785         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6786         mono_marshal_get_write_barrier ().
6787
6788 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6789
6790         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6791         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6792         that pass them on a register pair.
6793
6794         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6795         test was crashing due to that.
6796
6797 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6798
6799         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6800         trampoline code. Include ucontext.h only if available.
6801
6802 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6803
6804         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6805         and doesn't check whether it's sharable, like it was before
6806         removing the shared generics hash.  This brings IronPython
6807         performance back to what it was before that change.
6808
6809 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6810
6811         * method-to-ir.c: Handle delegate invocation optimization earlier,
6812         otherwise it would be handled (much more slowly) by the
6813         final/sealed optimization.
6814
6815 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6816
6817         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6818         domain is not set. Fixes #465864.
6819
6820 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6821
6822         * method-to-ir.c: Don't stop sharing of generic methods with catch
6823         clauses - we already handle those.
6824
6825 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6826
6827         * mini.c, mini.h: lookup_generic_method() is now
6828         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6829         making the shared_generics_hash obsolete.
6830
6831 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6832
6833         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6834         use the red zone.  Make room on the stack first and then use it,
6835         not the other way around.
6836
6837 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6838
6839         * mini.c (mini_init): Call mono_xdebug_init ().
6840
6841         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6842
6843 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6844
6845         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6846
6847         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6848         trampolines.
6849
6850         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6851         debug+unwind info for trampolines.
6852
6853         * mini.c (mono_create_unwind_op): New helper function.
6854
6855         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6856
6857 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6858
6859         * aot-compiler.c: Fix the build.
6860
6861 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * Makefile.am: Update dtrace-prelink.sh location.
6864
6865 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6868         optimization. Fixes #464520.
6869
6870 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6871
6872         * mini-amd64.c : Adding code to save/restore non-volatile registers
6873            on Winx64.
6874
6875         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6876           registers on Winx64.
6877
6878         Contributed under MIT/X11 license.
6879
6880 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6883         __GNUC_MINOR__ which can break when the major version changes.
6884
6885 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6886
6887         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6888
6889 2009-01-07  Geoff Norton  <gnorton@novell.com>
6890
6891         * helpers.c:  Allow mono -v -v -v to work on darwin.
6892
6893 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6894
6895         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6896           pattern. 
6897
6898         Contributed under MIT/X11 license.
6899
6900 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6901
6902         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6903         instead of directly accessing type->data.klass. Fixes #462016.
6904         (mono_allocate_stack_slots_full): Ditto.
6905
6906         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6907         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6908
6909         * aot-compiler.c (emit_plt): Fix ARM build.
6910
6911 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6914         
6915         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6916         change.
6917
6918         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6919         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6920         #463357.
6921
6922         * iltests.il.in: Add a regression test.
6923
6924 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6925
6926         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6927
6928 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * basic-simd.cs: Add a regression test for #462457.
6931
6932 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6933
6934         * mini-ops.h: Add a definition of XPHI.
6935
6936         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6937
6938         * ssa.c (op_phi_to_move): Handle XPHI.
6939
6940         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6941
6942         Fixes #462457
6943
6944 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6945
6946         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6947
6948 2008-12-31  Geoff Norton  <gnorton@novell.com>
6949
6950         * mini-ppc.c: The prolog size allocated can be too small for darwin
6951         ppc32 under certain circumstances.  Also fix a small logic bug.
6952
6953 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6954
6955         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6956         while loading AOT methods.
6957
6958         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6959         since only the former is nulled out after a successful cast. This prevents
6960         crashes with rethrown exceptions when using --debug=casts.
6961
6962 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6963
6964         * mini.h: New macro for checking whether a method is final,
6965         i.e. whether the method or its class is marked final.
6966
6967         * method-to-ir.c: Use the new macro for all final-checks
6968         consistently.  Fixes the crash in the System.ServiceModel tests.
6969
6970 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6971
6972         * mini-exceptions.c (get_exception_catch_class): Corrected another
6973         overly strict assertion.
6974
6975 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6976
6977         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6978         Clobbering it is not allowed because the caller might use it as
6979         the vtable register in the interface call.
6980
6981 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6982
6983         * mini-exceptions.c (get_exception_catch_class): Corrected an
6984         overly strict assertion.
6985
6986 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6987         
6988         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6989
6990         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6991
6992         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6993
6994         * cpu-mips.md: correct lengths for certain long_ opcodes.
6995
6996         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6997
6998         * 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().
6999         
7000 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7001
7002         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7003         
7004 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7005         
7006         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7007         
7008 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7009
7010         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7011         next basic block.
7012         
7013 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7014
7015         * 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
7016
7017         * 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)
7018         
7019 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7020         
7021         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7022         
7023 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7024
7025         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7026         gshared code. Fixes #458947.
7027
7028         * generics.cs: Add a test.
7029
7030 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7031         
7032         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7033         
7034         * mini-mips.c: first pass n32 code generation.
7035
7036         * mini-mips.h: datatypes and defines for n32 support.
7037
7038         * exceptions-mips.c: first pass n32 code generation.
7039         
7040         * tramp-mips.c: first pass n32 code generation.
7041         
7042         * cpu-mips.md: add long_ opcodes.
7043         
7044 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7045
7046         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7047
7048         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7049         
7050         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7051         
7052         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7053
7054         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7055
7056         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7057
7058         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7059
7060         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7061
7062         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7063
7064 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7065
7066         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7067
7068 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7069
7070         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7071
7072 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7073
7074         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7075         descriptors for helper functions directly in front of the code.
7076
7077 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7078
7079         * method-to-ir.c: Removed an unnecessary assertion.
7080
7081 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * method-to-ir.c: Merge SGEN changes from the old JIT.
7084
7085 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * driver.c (compile_all_methods_thread_main): Handle failure of
7088         mono_get_method ().
7089
7090 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7091
7092         * mini-ppc.c: Merged with mini-ppc64.c.
7093
7094         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7095
7096         * Makefile.am: Use the same sources for PPC and PPC64.
7097
7098         * mini-ppc64.c: Removed.
7099
7100 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7101
7102         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7103         code to mono_bb_is_fall_through.
7104         
7105         * branch-opts.c (mono_remove_critical_edges): Same.
7106
7107 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7108
7109         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7110         expect that an OP_BR_REG will be there.
7111
7112 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7113
7114         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7115         for the many branch ops. The original check miss OP_BR_REG.
7116
7117         Fixes #457574.
7118         
7119 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7120
7121         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7122
7123 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7126         while holding the aot lock.
7127
7128 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7129
7130         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7131         
7132 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7133
7134         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7135           to release all runtime callable wrappers held by the runtime.
7136
7137         Contributed under MIT/X11 license.
7138
7139 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7140
7141         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7142           for Winx64.
7143
7144         Contributed under MIT/X11 license.
7145
7146 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7147
7148         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7149         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7150
7151 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7152
7153         * cpu-mips.md: fix ckfinite length
7154
7155         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7156         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7157         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7158         
7159 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7160
7161         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7162         
7163 2008-12-08  Geoff Norton  <gnorton@novell.com>
7164
7165         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7166         size by 8 bytes as well.
7167
7168 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7169
7170         * basic-simd.cs: Fix method names for Vector16b.
7171         
7172 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7173
7174         * basic-simd.cs: Fix method names for Vector16sb.
7175
7176 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7177
7178         * basic-simd.cs: Fix method names for Vector8us.
7179         
7180 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7181
7182         * basic-simd.cs: Fix method names for Vector8s.
7183         
7184 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7185
7186         * basic-simd.cs: Fix method names for Vector4ui.
7187
7188 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7189
7190         * basic-simd.cs: Fix method names for Vector2l.
7191
7192 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7193
7194         * basic-simd.cs: Fix method names for Vector2d.
7195
7196 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7197
7198         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7199         that are extension methods.
7200
7201 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7202
7203         * basic-simd.cs: Fix method names for Vector4f.
7204
7205 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7208         as such. Fixes #456669.
7209
7210 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7211
7212         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7213         
7214 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7215
7216         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7217         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7218         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7219         (mips_adjust_stackframe): handle FP spills
7220                 
7221         * mini-ops.h: add mips_mtc1_s2
7222         
7223         * cpu-mips.md: add mips_mtc1_s2
7224         
7225 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * unwind.c: New file, move the unwind info encoding functions here from
7228         aot-compiler.c, so they could be used at runtime too.
7229
7230 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7231
7232         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7233         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7234         
7235 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7236
7237         * mini-mips.c: cleanup warnings
7238         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7239         (mips_adjust_stackframe): handle case of taking the address of stack locals
7240         
7241 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * aot-compiler.c: Implement a few functions missing from the asm writer.
7244         (emit_method_code): Only write symbols for methods when using the bin
7245         writer, since the assembler can't deal with the characters in our method
7246         names.
7247
7248         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7249
7250         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7251         call.
7252
7253         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7254         a bit to also restore %rax.
7255
7256 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7257
7258         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7259
7260 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7263         arguments.
7264
7265 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7266
7267         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7268
7269         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7270         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7271
7272         * exceptions-ppc64.c: Removed.
7273
7274         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7275
7276 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7277
7278         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7279         tramp-ppc64.c.
7280
7281         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7282
7283         * tramp-ppc64.c: Removed.
7284
7285 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7288         the TYPESPEC table.
7289
7290 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7291
7292         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7293
7294         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7295         mini-ppc.h instead of mini-ppc64.h.
7296
7297         * mini-ppc64.h: Removed.
7298
7299 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7300
7301         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7302         
7303         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7304         
7305 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7306
7307         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7308         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7309         code easier.
7310
7311 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7312
7313         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7314
7315 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7316
7317         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7318
7319 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7320
7321         * basic-simd.cs: Tests for operator == and != on Vector4f.
7322
7323 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7324
7325         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7326
7327         * simd-intrinsics.c: Kill useless enum.
7328
7329 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7330
7331         * cpu-mips.md: add long_conv_to_ovf_i4_2
7332         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7333
7334 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7335
7336         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7337         
7338         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7339
7340 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7341
7342         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7343         
7344 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7345
7346         * basic-simd.cs: Add tests for new methods.
7347
7348 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7349
7350         * simd-intrinsics.c: Add support for operator == and !=
7351         on Vector4(u)i.
7352
7353         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7354
7355 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7356
7357         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7358
7359 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7362
7363         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7364         MONO_PATCH_INFO_ICALL_ADDR.
7365
7366         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7367
7368         * aot-compiler.c: Resurrect full-aot support.
7369
7370 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7371
7372         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7373         
7374 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7375
7376         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7377         
7378 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7379
7380         * basic-simd.cs: Fix tests to work under ppc.
7381         Remove tests for methods that will be removed.
7382
7383 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7384
7385         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7386         generic type (via a typedef or typeref) correctly.
7387
7388 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7391         diagnose an assertion failure.
7392
7393 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7394
7395         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7396         Fix trampoline size.
7397
7398         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7399         conversion opcodes are implemented natively instead via emulation.
7400
7401 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7402
7403         * cpu-mips.md: remove mips_xori
7404
7405         * mini-ops.h:  remove mips_xori
7406
7407         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7408
7409         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7410         
7411         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7412         
7413 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7414
7415         * cpu-mips.md: fix instruction lengths.
7416
7417         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7418
7419         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7420
7421         * mini-ops.h: fix slti / sltiu op profiles.
7422         
7423 2008-12-02  Martin Baulig  <martin@ximian.com>
7424
7425         * method-to-ir.c (mono_method_to_ir): Disable debugging
7426         information for the init locals block to make the debugger stop
7427         after all locals have been initalized.
7428
7429 2008-12-02  Martin Baulig  <martin@ximian.com>
7430
7431         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7432         running inside the debugger.
7433
7434 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7437         is enabled.
7438
7439         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7440         alu->alu imm optimization which only shows if deadce is disabled.
7441
7442         * aot-compiler.c: Rename the function names for the binary and asm writers
7443         so they can coexist in the same process. Rework the xdebug code to use the
7444         asm writer. This avoids the need to call into the runtime to dump the
7445         debugging info. Add more debugging info for types.
7446
7447         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7448
7449         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7450         cpu description tables, they can't occur in cpu-<ARCH>.md.
7451
7452         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7453         the stack in CEE_LDFLDA. Fixes #450542.
7454
7455         * generics.cs: Add a new test.
7456
7457 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7458
7459         * mini-ops.h: updated MIPS opcodes
7460         * mini-mips.c: decompose long opts
7461         * mini-mips.h: decompose long opts
7462         
7463 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7464
7465         * cpu-mips.md: fix length on int_rem_un
7466         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7467         
7468 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7469
7470         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7471
7472         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7473
7474 2008-11-29  Martin Baulig  <martin@ximian.com>
7475
7476         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7477         mono_debug_using_mono_debugger() in addition to the
7478         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7479
7480 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7481
7482         * mini-ops.h: updated more MIPS opcodes
7483         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7484         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7485         
7486 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7487
7488         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7489
7490 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7491
7492         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7493         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7494         * mini-ops.h: correct selected mips opcode entries
7495         
7496 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7497
7498         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7499         make them work.
7500
7501 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7502
7503         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7504
7505 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7506
7507         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7508         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7509         * mini-mips.h: disable IMT
7510         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7511         
7512 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7513
7514         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7515
7516 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7517
7518         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7519
7520 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7521
7522         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7523         consistency.
7524
7525 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7526
7527         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7528         for Set/GetVector aligned versions.
7529
7530 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7531
7532         * basic-simd.cs: Add tests for Get/SetVector.
7533
7534 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7535
7536         * mini.c: Removed g_slist_append_mempool().  Now in
7537         metadata/mempool.c.
7538
7539 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7540
7541         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7542         size properly and make the bounds check optional.
7543
7544         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7545         for SetVector and IsAligned.
7546
7547 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * mini.c: Remove unused mono_normalize_opcodes () function.
7550
7551 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7552
7553         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7554         using the new atomic add ops now.
7555
7556         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7557         add.
7558
7559 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7560
7561         * mini-ppc64.c: Several fixes.
7562
7563 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7564
7565         * cpu-mips.md: added jump_table
7566         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7567
7568 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7569
7570         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7571
7572 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7573
7574         * mini-ops.h: corrected a handful of MIPS opcodes.
7575
7576 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7577
7578         * aot-compiler.c: MIPS to use ELF writer
7579
7580 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7581
7582         * mini-codegen.c: remove MIPS specific assert.
7583
7584 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7585
7586         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7587         fixes.  PPC64 now passes most of the runtime regressions.
7588
7589 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7590
7591         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7592         volatile intervals a bit.
7593
7594 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7595
7596         * basic-long.cs: New test case.
7597
7598 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * mini.c (mini_method_compile): Disable globalra for large methods for 
7601         now.
7602
7603         * regalloc2.c (order_moves): Add fp support.
7604
7605         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7606         source bblock ends with an OP_BR_REG.
7607
7608         * ratests.cs: Add a new test.
7609
7610 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7611
7612         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7613         sharing.  PPC64 now passes generics.exe.
7614
7615 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7616
7617         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7618
7619 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7622         memory when mono_jit_info_table_find () can't find the method in the
7623         LMF case.
7624
7625         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7626         AOTed code too.
7627         
7628         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7629         writer too.
7630
7631 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7632
7633         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7634         Several fixes.  PPC64 now runs exceptions.exe and
7635         devirtualization.exe.
7636
7637 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7638
7639         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7640         arrays.exe and basic-math.exe.
7641
7642 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7643
7644         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7645         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7646
7647 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7648
7649         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7650
7651 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7652
7653         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7654
7655         * ir-emit.h: Move macros from method-to-ir.c to here.
7656
7657 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7658
7659         * mini-ops.h: Correct the long simd ops to use LREG.
7660
7661 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7664         
7665         * mini-ops.h: Correct the dreg type of a few long opcodes.
7666
7667         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7668         Add netbsd support.
7669
7670 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7671
7672         * mini-ppc.c: remove negative stack references in epilog
7673         for platforms that don't support the red zone.
7674
7675 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7676
7677         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7678         point regs.  Now PPC64 passes basic-calls.exe.
7679
7680 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * basic-simd.cs: Add tests for accessors of Vector2l.
7683
7684 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7685
7686         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7687
7688         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7689         
7690         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7691
7692 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7693
7694         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7695         PPC64 passes basic-long.exe.
7696
7697 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7698
7699         * decompose.c: Decompose carry and overflow add on PPC64 like on
7700         other 64 bit archs.  Don't decompose sub at all on PPC64.
7701
7702         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7703         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7704         basic-long.exe.
7705
7706 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         * basic-simd.cs: Add tests for accessors of Vector2d.
7709
7710 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7713
7714         * cpu-x86.md: Same.
7715
7716         * mini-x86.c (mono_arch_output_basic_block): Same.
7717         
7718         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7719
7720 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7721
7722         * basic-simd.cs: Add tests for accessors of Vector4f.
7723
7724 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7725
7726         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7727
7728         * cpu-x86.md: Same.
7729
7730         * mini-x86.c (mono_arch_output_basic_block): Same.
7731         
7732         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7733
7734 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7735
7736         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7737
7738 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7739
7740         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7741
7742         * cpu-x86.md: Same.
7743
7744         * mini-x86.c (mono_arch_output_basic_block): Same.
7745         
7746         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7747
7748 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7749
7750         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7751
7752 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7753
7754         * simd-intrinsics.c: Enable setters for Vector16sb.
7755
7756 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7757
7758         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7759
7760         * cpu-x86.md: Same.
7761
7762         * mini-x86.c (mono_arch_output_basic_block): Same.
7763         
7764         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7765
7766 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7767
7768         * simd-intrinsics.c: Implement setter for Vector8us.
7769
7770 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7773         for dead variables.
7774
7775 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7776
7777         * mini-ppc.c: remove references to the red zone in the prolog
7778         (for systems that don't support it).
7779
7780 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7781
7782         * cpu-ppc64.md: Fixed a few instruction lengths.
7783
7784         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7785         now.
7786
7787 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7788
7789         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7790         basic.exe now.
7791
7792 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7793
7794         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7795
7796 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * mini-ops.h: Added OP_INSERT_I2.
7799
7800         * cpu-x86.md: Same.
7801
7802         * mini-x86.c (mono_arch_output_basic_block): Same.
7803         
7804         * simd-intrinsics.c: Implement setter for Vector8s.
7805
7806         * simd-methods.h: Add the names of get setters of Vector8s.
7807
7808 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7811         
7812         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7813         parameters.
7814
7815         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7816
7817 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7818
7819         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7820         for PPC64.  An empty program runs now.
7821
7822 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7823
7824         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7825
7826         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7827         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7828         info for JITted code is emitted into a shared library, loadable into gdb.
7829
7830 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7831
7832         * Makefile.am: Changes to build PPC64.
7833
7834         * mini-arch.h: Include mini-ppc64.h on PPC64.
7835
7836 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7837
7838         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7839         in PPC code up to r119147.
7840
7841 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7842
7843         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7844         cpu-ppc64.md: Changes for PPC64.
7845
7846         Based on code submitted by andreas.faerber@web.de at
7847         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7848         X11/MIT license.
7849
7850 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7851
7852         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7853         cpu-ppc64.md: Copied from the corresponding PPC files from
7854         r118846.
7855
7856 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7857
7858         * mini-ops.h: Added OP_ROUND.
7859
7860         * cpu-x86.md: Added round.
7861
7862         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7863
7864         * basic-math.cs: Added test_0_round to test rounding.
7865
7866         Contributed under MIT/X11 license.
7867
7868 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7869
7870         * aot-compiler.c : Fix the Winx64 build.
7871
7872         Contributed under MIT/X11 license.
7873
7874 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7875
7876         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7877         in OP_EXTRACT_R8 to avoid possible stack corruption.
7878
7879 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7880
7881         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7882
7883         * cpu-x86.md: Added extract_r8.
7884
7885         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7886         
7887         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7888         a couple of OP_EXTRACT_I4.
7889
7890         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7891
7892         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7893
7894 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7895
7896         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7897         and not 4.1. 
7898
7899 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7902         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7903
7904         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7905         are not needed any more.
7906
7907         * mini.h: Remove the unused INS_LIST macros.
7908
7909         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7910         longer needed.
7911
7912         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7913         ir-emit.h.
7914
7915         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7916         mono_alloc_ireg () instead.
7917
7918         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7919         macros.
7920
7921         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7922         on amd64.
7923
7924         * aot-runtime.c (load_aot_module): Disable AOT when running under
7925         CAS.
7926
7927         * mini-amd64.h: Change the monitor fastpath defines to check for
7928         !PLATFORM_WIN32 so they work on *bsd too.
7929
7930         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7931
7932         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7933
7934         * mini.h (MonoCompile): Remove new_ir flag.
7935
7936         * regalloc.h regalloc.c: Remove unused code.
7937
7938         * cpu-*.md: Remove more unused opcodes.
7939
7940         * simple-cee-ops.h simple-mini-ops.h: Removed.
7941
7942         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7943         
7944 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7945
7946         * aliasing.h: Removed.
7947
7948         * *.c: Remove references to aliasing.h and inssel.h.
7949
7950         * mini.c: Remove additional unused functions.
7951
7952         * mini-ops.h cpu-*.md: Remove unused opcodes.
7953
7954 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7955
7956         Remove the old JIT code.
7957
7958         * inssel*.brg: Removed.
7959
7960         * ssa.c abcremoval.c aliasing.c: Removed.
7961
7962         * ssa2.c: Renamed to ssa.c.
7963
7964         * abcremoval2.c: Renamed to abcremoval.c.
7965
7966         * *.c: Removed all !cfg->new_ir code.
7967
7968         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7969         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7970
7971         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7972         
7973 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7974
7975         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7976         to simplify the code and cut back on the number of global symbols in the AOT
7977         file.
7978         
7979         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7980
7981 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7982
7983         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7984         with the got/got_info tables.
7985
7986         * mini.h: Bump AOT file format version.
7987         
7988         * unwind.h: New file, contains definitions for stack unwinding.
7989
7990         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7991         to cfg->unwind_ops.
7992         
7993         * aot-compiler.c: Generalize the emitting of unwind information to use the
7994         information in cfg->unwind_ops.
7995
7996         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7997
7998         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7999         AOT method frames. Enable writing symbols for methods by default.
8000
8001 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8002
8003         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8004         and make it work with vectors of element sizes 1, 2 and 4.
8005
8006         * simd-intrinsics.c: Enable getter for all vectors with element size
8007         1, 2 or 4.
8008
8009         * simd-methods.h: Add the names of other getters.
8010
8011         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8012
8013         * cpu-x86.md: Same.
8014
8015         * mini-x86.c: Same.
8016
8017 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8018
8019         * mini-ppc.h: portability fix.
8020
8021 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8022
8023         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8024         buggy and will overwrite it.
8025
8026 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8029         Use it to emit local symbols for all methods so AOTed methods show up with
8030         their full name in gdb/valgrind output.
8031
8032 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8033
8034         * mini-ppc.c: portability fixes.
8035
8036 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8037
8038         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8039         entries out of the if (!generic_shared...) code so it is always done.
8040         (mono_class_init_trampoline): Do the patching when running under valgrind
8041         too, newer versions of valgrind have no problems with it.
8042
8043 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8044
8045         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8046         further sections.
8047
8048 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8049
8050         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8051         filters.
8052
8053 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8054
8055         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8056
8057 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8058
8059         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8060
8061         * cpu-x86.md: Same.
8062
8063         * mini-x86.c: Same.
8064
8065         * simd-intrinsics.c: Same.
8066
8067 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8068
8069         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8070
8071 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8072
8073         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8074         to work with more Vector types.
8075
8076 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8077
8078         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8079         store the elemens directly instead of using and intermediate.
8080
8081 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8084
8085         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8086         to preserve %eax for aot plt trampolines.
8087
8088         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8089         (encode_method_ref): Flag synchronized methods so they won't go through
8090         the AOT trampoline.
8091
8092         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8093         wrappers.
8094
8095         * cpu-ia64.md (jmp): Increase max length.
8096
8097 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8100         open generic classes.
8101
8102         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8103
8104         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8105         box+brtrue optimization since it causes test failures on x86.
8106
8107 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8108
8109         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8110
8111         * cpu-x86.md: Same.
8112
8113         * mini-x86.c: Same.
8114
8115         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8116         for simd ctor values. 
8117
8118         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8119         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8120
8121 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8124         LogicalRightShift.
8125
8126         * simd-instrincs.c: Same.
8127
8128         * basic-simd.cs: Same.
8129
8130 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8131
8132         * ratests.cs: Add more tests.
8133
8134         * regalloc2.c (add_spill_code): Handle more corner cases.
8135
8136 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8137
8138         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8139         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8140         both the source an destination of an instruction.
8141
8142 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8143
8144         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8145         wapihandles.c: more portability changes.
8146
8147 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8148
8149         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8150         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8151         safe to execute in a signal handler and the kernel provides better
8152         the info in /proc/self/smaps. Avoid the assert on sigaction during
8153         cleanup.
8154
8155 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8156
8157         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8158         do the bblock linking hack if it is actually needed.
8159
8160         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8161         up linking.
8162
8163         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8164         crash problem is fixed.
8165
8166         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8167         bblocks.
8168
8169         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8170         for catch clauses.
8171         (mini_method_compile): Set the starting value of next_vreg to 
8172         MAX_IREGS + MAX_FREGS when using globalra.
8173
8174         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8175         filter clauses with BB_EXCEPTION_HANDLER.
8176
8177         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8178
8179 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8180
8181         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8182         space for stdcall.  Fixes regressions on Win32.
8183
8184 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8185
8186         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8187         bblocks.
8188         (linear_scan): Remove an assert which doesn't seem to be needed.
8189
8190         * local-propagation.c (mono_local_deadce): Avoid a call to
8191         MONO_DELETE_INS which would screw up the instruction linking.
8192
8193         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8194
8195         * regalloc2.c: Upgrade to work the current JIT code.
8196
8197 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8198
8199         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8200         case.
8201
8202         * aot-runtime.c: Remove some dead code.
8203
8204         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8205         consistency.
8206         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8207
8208         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8209         trampolines using sscanf since atoi doesn't work on large unsigned values.
8210
8211         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8212         Initialize code_size.
8213
8214 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8215
8216         * method-to-ir.c (mini_emit_inst_for_method): Make
8217         Interlocked.CompareExchange work for Int arguments on 32 bit
8218         archs, as well.
8219
8220 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8221
8222         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8223
8224 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8225
8226         * main.c Fix MSVC build.
8227
8228         Contributed under MIT/X11 license.
8229
8230 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8231
8232         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8233         alignment larger than 8 bytes are aligned correctly, too.
8234
8235         * mini.c: Honor the min_align field of MonoClass when laying out
8236         the stack.
8237
8238 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8241
8242         * aot-compiler.c (emit_plt): Fix a warning.
8243         
8244         * aot-compiler.c: Implement ARM support in the binary writer.
8245
8246 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8247
8248         * basic-simd.cs: Add test for getter with byref arg.
8249         Fix the naming of a few tests.
8250         Add missing checks to a test.
8251
8252 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8255
8256         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8257         most of the full-aot support for monitor enter/exit trampolines.
8258
8259         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8260         enter/exit trampoline creation functions.
8261
8262         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8263         make dist.
8264
8265 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8266
8267         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8268         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8269         implement the needed functionality without adding crap to the runtime.
8270
8271 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8272
8273         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8274         non-x86 builds.
8275
8276         * mini.c (mono_build_date): New global version holding the build date in
8277         string format.
8278         
8279         * Makefile.am (buildver.c): Generate a file containing the build date.
8280
8281         * main.c: Set the build date from the generated file.
8282
8283         * mini.c (mono_get_runtime_build_info): New helper function returning build
8284         information in a string format.
8285         
8286         * driver.c (mono_main): Print the build date in --version.
8287
8288         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8289         file when the bind-to-runtime-version option is used.
8290
8291 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8292
8293         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8294
8295 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8296
8297         * simd-methods.h: Rename prefetch methods.
8298
8299         * simd-intrinsics.c: Same.      
8300
8301 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8302
8303         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8304         sizes.
8305
8306 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * aot-compiler.c: Use the bundled elf header files instead of depending on
8309         the system one.
8310         
8311         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8312         mempool.
8313
8314         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8315         on every call.
8316
8317 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8318
8319         * cpu-x86.md: Add store nta ops.
8320
8321         * mini-ops.h: Same.
8322
8323         * mini-x86.c: Same.
8324
8325         * mini.h: Add an enum for simd prefetch modes.
8326
8327         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8328         of store. Use the changed code to support store nta.
8329
8330         * simd-intrinsics.c: Add prefetch ops for all vector types.
8331
8332 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8335         threads.
8336         
8337         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8338         names.
8339
8340         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8341         trampolines.
8342
8343 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8344
8345         * mini-x86.c: Fixed commit.
8346
8347 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8348
8349         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8350
8351 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8352
8353         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8354         and MONITOR_EXIT, for the ASM fastpaths.
8355
8356         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8357         available.
8358
8359         * mini.c, patch-info.h: Signature and patch infos for
8360         Monitor.Enter/Exit trampolines.
8361
8362         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8363
8364         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8365         Monitor.Enter/Exit ASM fastpath for Linux.
8366
8367 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8370
8371         * objects.cs: Add a new test.
8372         
8373         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8374
8375         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8376         if MONO_LOG_LEVEL is set.
8377
8378         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8379
8380         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8381
8382         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8383         
8384         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8385         of file offsets. Align the sections belonging to the data segment to 
8386         PAGESIZE.
8387
8388 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8389
8390         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8391         elf.h. Port it to amd64.
8392
8393 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8394
8395         * driver.c: Enable SIMD by default.
8396
8397 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * cpu-x86.md: Add prefetch op.
8400
8401         * mini-ops.h: Same.
8402
8403         * mini-x86.c: Same.
8404
8405         * mini.h: Add an enum for simd prefetch modes.
8406
8407         * simd-methods.h: Add prefetch function names.
8408
8409         * simd-intrinsics.c: Add prefetch ops for all vector types.
8410
8411 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8412
8413         * aot-compiler.c (emit_bytes): Speed this up a little.
8414
8415 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8416
8417         * aot-compiler.c: Add JIT time etc. statistics.
8418         
8419         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8420
8421         * mini.h (MonoCompile): Add 'got_offset' field.
8422
8423         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8424         method_got_offsets array.
8425
8426         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8427         wrappers.
8428
8429         * aot-compiler.c (compile_method): Add generic method instances referenced
8430         by the method to the list of methods to be compiled, this is required so if
8431         A<T> references B<T>, and another assembly references A<int>, then it will
8432         also get a copy of B<int>.
8433
8434         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8435         when checking for monitor enter/exit.
8436
8437 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8438
8439         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8440         for Monitor.Enter and Monitor.Exit if enabled.
8441
8442         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8443         Solaris.
8444
8445 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8446
8447         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8448         of an OP_MOVE. Fixes #440046.
8449
8450         * basic-long.cs: Add a new test.
8451
8452 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8453
8454         * mini.h: Add synchronization note for the managed counter-part.
8455
8456         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8457         returns the simd caps of the current cpu.
8458
8459 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8460
8461         * basic-simd.cs: Remove Console.WriteLine.
8462
8463 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8464
8465         * basic-simd.cs: New tests for Vector2ul.
8466
8467 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8468
8469         * simd-intrinsics.c: Add new vector type Vector2ul.
8470
8471 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8472
8473         * basic-simd.cs: New tests for Vector2l.
8474
8475 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8476
8477         * cpu-x86.md: Add long version of most packed int ops.
8478
8479         * mini-ops.h: Same.
8480
8481         * mini-x86.h: Same.
8482
8483         * simd-intrinsics.c: Add new vector type Vector2l.
8484
8485 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8486
8487         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8488
8489         * simd-methods.h: Remove SN_op_BitwiseXor.
8490
8491 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8492
8493         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8494         alignment.
8495
8496 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * basic-simd.cs: Test for Vector2d.
8499
8500         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8501         value.
8502
8503 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8504
8505         * cpu-x86.md: Add double version of all packed float ops.
8506
8507         * mini-ops.h: Same.
8508
8509         * mini-x86.h: Same.
8510
8511         * simd-intrinsics.c: Add new vector type Vector2d.
8512
8513         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8514
8515         * simd-methods.h: Add Duplicate.
8516
8517 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * basic-simd.cs: Test for packing with signed saturation.
8520
8521 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8524         found in the TYPESPEC table.
8525
8526 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8529         too.
8530
8531         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8532
8533         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8534         instead of the RVA, since the RVA can be changed by tools like the cil 
8535         stripper.
8536
8537         * method-to-ir.c (mono_method_to_ir2): Ditto.
8538
8539         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8540         (deserialize_variable): Ditto.
8541
8542 2008-10-25  Martin Baulig  <martin@ximian.com>
8543
8544         * debug-mini.c (write_variable): Use
8545         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8546
8547 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8548
8549         * cpu-x86.md: Add unsigned variants of packd and packw.
8550
8551         * mini-ops.h: Same.
8552
8553         * mini-x86.h: Emit the right instruction for packd and packw.
8554         Add unsigned variants of packd and packw.
8555
8556         * simd-intrinsics.c: Packd and packw were used in place of their
8557         unsigned variants. Change that.
8558         Add intrinsics for (Signed)PackWithSignedSaturation.
8559
8560         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8561
8562 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8563
8564         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8565
8566 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8569
8570         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8571
8572         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8573         sse instructions.
8574
8575         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8576
8577 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8578
8579         * method-to-ir.c, mini.c: Special casing for the synchronized
8580         wrapper for the ldtoken+GetTypeFromHandle case.
8581
8582 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8583
8584         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8585
8586         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8587         created/split bblocks.
8588
8589 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8590
8591         * mini-ops.h: Add packed signed mul high.
8592         
8593         * cpu-x86.md: Same.
8594
8595         * mini-x86.c (mono_arch_output_basic_block): Same.
8596
8597         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8598
8599         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8600
8601 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * basic-simd.cs: Tests for Vector16sb.
8604
8605 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8608
8609 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8610
8611         * mini-ops.h: Add packed signed min, max and compare greater.
8612         
8613         * cpu-x86.md: Same.
8614
8615         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8616         saturation.
8617
8618         * simd-methods.h: Add CompareGreaterThan.
8619
8620         * simd-methods.h: Remove CompareEquals.
8621
8622         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8623
8624         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8625
8626         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8627         CompareEqual.
8628
8629 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8630
8631         * basic-simd.cs: Fix tests due to change in the API.
8632
8633 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8634
8635         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8636
8637 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8638
8639         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8640
8641         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8642         inst_offset as this has invalid values for LDADDR.
8643
8644 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8647
8648         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8649
8650 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8653         for accessing field->data.
8654
8655 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8656
8657         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8658
8659 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8660
8661         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8662
8663         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8664
8665 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8668         from the cfg mempool.
8669
8670 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8671
8672         * basic-simd.cs: Tests for new methods in Vector8us.
8673
8674 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8675
8676         * mini-ops.h: Add multiply and store high.
8677         
8678         * cpu-x86.md: Same.
8679
8680         * mini-x86.c (mono_arch_output_basic_block): Same.
8681
8682         * simd-methods.h: Same.
8683
8684         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8685         and CompareEqual.
8686
8687 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8688
8689         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8690         mono_class_setup_vtable ().
8691
8692         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8693         mono_class_get_vtable_entry () for accessing klass->vtable.
8694
8695         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8696
8697         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8698         found.
8699
8700         * method-to-ir.c (mono_save_token_info): Don't save references made from
8701         wrappers.
8702
8703         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8704         of generic instances.
8705
8706         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8707
8708 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8709
8710         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8711         OP_JMP depends on the method signature.  Calculate it properly.
8712
8713 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8714         
8715         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8716         called directly.
8717
8718         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8719         instances.
8720         (emit_extra_methods): Add another table mapping method indexes to 
8721         offsets in the extra_method_info table.
8722
8723         * mini.h: Bump AOT file format version.
8724         
8725         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8726         and mono_aot_get_method_from_token () into one function.
8727
8728 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8729
8730         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8731         separate counter.
8732
8733 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8736         methods.
8737
8738         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8739         disable_aot.
8740
8741         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8742
8743         * mini.h: Bump aot file format version.
8744
8745         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8746         AOT file can contain native code for methods which are not in the METHOD
8747         table. Generate code for non-sharable generic instances of generic methods
8748         found in the METHODSPEC table.
8749         
8750         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8751         encoding generic type handles.
8752
8753         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8754         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8755
8756         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8757         macros + MONO_ADD_INS.
8758
8759         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8760         context as well.
8761
8762         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8763
8764         * mini.h: Bump aot file format version.
8765
8766         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8767
8768 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8769
8770         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8771         platforms, with definable stack alignment value.  Set to 16 now
8772         for all platforms.
8773
8774         * mini.c, mini.h, driver.c: Command line option for disabling
8775         stack alignment.
8776
8777 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8778
8779         * basic-simd.cs: Tests for new methods in Vector4ui.
8780
8781 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8782
8783         * mini-ops.h: Add packed int shuffle.
8784         
8785         * cpu-x86.md: Same.
8786
8787         * mini-x86.c (mono_arch_output_basic_block): Same.
8788
8789         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8790         extract mask, max, min, shuffle.
8791
8792         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8793
8794 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8795
8796         * basic-simd.cs: Tests for new methods in Vector8us.
8797
8798 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8799
8800         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8801         RuntimeTypeHandle, not a TypedReference.
8802
8803 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8804
8805         * simd-intrinsics.c: remove relocations.
8806
8807 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8810         optimizations from the x86 backend.
8811
8812 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8813
8814         * simd-methods.h, simd-intrinsics.c: debloat method names and
8815         prepare for no relocations.
8816
8817 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8818
8819         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8820         
8821         * cpu-x86.md: Same.
8822
8823         * mini-x86.c (mono_arch_output_basic_block): Same.
8824
8825         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8826         extract mask, max, min and sum of absolute differences.
8827
8828         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8829         method name.
8830
8831 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8832
8833         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8834         Renamed one test for consistency.
8835
8836 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8837
8838         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8839         fix to the code that deal with other blocks.
8840
8841 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8842
8843         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8844
8845 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8846
8847         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8848         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8849         able to process the source reg.
8850
8851 2008-10-16  Martin Baulig  <martin@ximian.com>
8852
8853         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8854
8855         * inssel.brg: Add `OP_HARD_NOP'.
8856
8857         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8858
8859         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8860         `OP_HARD_NOP' instruction when running inside the debugger.
8861
8862         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8863         `OP_HARD_NOP' instruction when running inside the debugger.
8864
8865 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8868         now works. The issue with the regalloc tripping up no longer
8869         happens.
8870
8871         * simd-intrinsics.c (load_simd_vreg): Same.
8872
8873 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8874         
8875         * basic-simd.cs: Tests for new Vector8ui methods.
8876
8877 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8878
8879         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8880         only for type. This fixes crashes where MonoInst::klass is checked
8881         for ops of type != VTYPE or OBJ.
8882
8883         * simd-intrinsics.c (load_simd_vreg): Same.
8884
8885 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8886
8887         * mini-ops.h: Add ops for packed shuffle/max/avg and
8888         extract mask.
8889         
8890         * cpu-x86.md: Same.
8891
8892         * mini-x86.c (mono_arch_output_basic_block): Same.
8893
8894         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8895         extract mask.
8896
8897         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8898         to emit extract mask op.
8899
8900         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8901         to emit word shuffles.
8902
8903 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8904
8905         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8906         the largest alignment needed by a variable, but at least
8907         sizeof(gpointer).
8908
8909 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8910
8911         * basic-simd.cs: Tests for the fixes in the last commit.
8912
8913 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8916         no longer handles STACK_PTR input.
8917
8918         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8919
8920         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8921         get_simd_vreg   but handles STACK_PTR input.
8922
8923         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8924         as the input can be an arbitrary pointer.
8925
8926         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8927         LDADDR local optimization directly otherwise use a store op.
8928
8929 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8930
8931         * basic-simd.cs: Tests for dup low and dup high.
8932
8933 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8934
8935         * mini-ops.h: Add dup low and dup high ops.
8936         
8937         * cpu-x86.md: Same.
8938
8939         * mini-x86.c (mono_arch_output_basic_block): Same.
8940
8941         * simd-intrinsics.c (vector4f_intrinsics): Same.
8942
8943 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8944
8945         * basic-simd.cs: Tests for recently added functionality.
8946
8947 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8948
8949         * mini-ops.h: Add remaining sse1 fp ops.
8950         
8951         * cpu-x86.md: Add remaining sse1 fp ops.
8952
8953         * mini-x86.c (mono_arch_output_basic_block): Same.
8954
8955         * mini.h: Add enum for simd FP compare conditions.
8956
8957         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8958
8959         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8960         so the backed can generate the appropriate op.
8961
8962 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8963         This patch squeese one more byte from the SimdIntrinsc struct.
8964
8965         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8966         a a shift amount intead of simply or'ing it.
8967
8968         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8969
8970         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8971         byte so we can have an aditional flags field without increasing struct size.
8972
8973         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8974         against the simd_supported_versions bitmask.
8975
8976         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8977
8978 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8979
8980         * mini.c: remove rawbuffer code (the only use here is unsafe because
8981         it takes locks during signal handling and the kernel now provides much
8982         better info in proc/pid/smaps these days).
8983
8984 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8985
8986         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8987         OP_X86_PUSH_OBJ. Fixes #434620.
8988
8989         * objects.cs: Add a test.
8990         
8991 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8992
8993         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8994         that the packuswb/packusdw don't work with unsigned numbers for what
8995         would be negative numbers in signed format.
8996
8997         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8998         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8999
9000         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9001
9002         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9003
9004         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9005
9006         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9007
9008         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9009         add more ops.
9010
9011         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9012         version as the enum in mini.h.
9013
9014         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9015         for sse3 ops, check the simd_version field if present. This way the code
9016         works with all versions of sse.
9017
9018 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9019
9020         * simd-intrinsics.c: Fixed intrinsic name typo.
9021
9022         * mini.h: Added missing simd exported function.
9023
9024         * basic-simd.cs: Added tests for Vector4ui.
9025         Fixed broken test for Vector16b.
9026
9027 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9028
9029         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9030         the max length to 64.
9031
9032 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9033
9034         * method-to-ir.c: Only do the fast virtual generic method call for
9035         non-wrapper methods.
9036
9037         * mini.h, mini-trampolines.c: The new generic virtual remoting
9038         trampoline handles virtual method calls via the vtable (as done by
9039         the fast virtual generic method calls) to remoting proxies.
9040
9041         * mini.c (mono_jit_create_remoting_trampoline): For generic
9042         methods reate a generic virtual remoting trampoline.
9043
9044         * mini-amd64.h: Enable fast virtual generic method calls again.
9045
9046 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9047
9048         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9049         restore registers when doing tail calls.
9050
9051 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9052
9053         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9054         Vector4ui.
9055
9056 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9059
9060 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9061
9062         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9063
9064 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9065
9066         * basic-simd.cs: Retrofit for API changes.
9067
9068 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9069
9070         * mini-ppc.c: Handle integer stack arguments for tail calls.
9071
9072 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9073
9074         * optflags-def.h: Removed sse3 optimization.
9075
9076         * driver.c: Same.
9077
9078         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9079         sse3.
9080
9081         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9082
9083         * mini.h: Added enumeration with simd versions.
9084
9085         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9086         for detecting SSE3.
9087
9088         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9089
9090         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9091
9092 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9093
9094         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9095
9096         * basic-simd.cs: Fixed test naming.
9097
9098 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9099
9100         * mini-ops.h: Added ops for packed and saturated math, shifts
9101         and packing/unpacking.
9102
9103         * cpu-x86.md: Added descriptors for the above ops.
9104
9105         * mini-x86.c: Added code to emmit the above ops.
9106
9107         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9108
9109 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * aot-compiler.c (compile_method): Enable AOT for generic code.
9112
9113         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9114
9115 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9116
9117         * mini.c: add a workaround for a common screwup that ends up blamed
9118         to mono (other processes blocking signal delivery).
9119
9120 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9123         in the LDFLD/STFLD opcodes. Fixes #432673.
9124
9125         * iltests.il.in: Add a new test.
9126
9127 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9128
9129         * mini-arm.c: attach the thread in unmanaged->managed transitions
9130         using delegates (bug #433148).
9131
9132 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9133
9134        * basic-simd.cs: Use new ShuffleSel constants.
9135
9136 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9139
9140         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9141         only disable simd intrinsics if no sse2 is detected.
9142
9143         * optflags-def.h: Added sse3.
9144
9145         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9146         is disabled.
9147
9148 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9151         when adding delegate-invoke wrappers.
9152
9153 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * Makefile.am: Reenable the simd tests.
9156
9157 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9158
9159         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9160           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9161           other vreg is allocated to that hreg.
9162
9163         Contributed under MIT/X11 license.
9164
9165 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9168         yet checked in.
9169
9170 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9171
9172         * basic-simd.cs: New test suite for SIMD intrinsics.
9173
9174         * Makefile.am: Added new tests.
9175
9176 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9177
9178         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9179
9180         * mini-ops.h: Same.
9181
9182         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9183
9184         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9185         using SSE2 aware opcodes.
9186
9187         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9188         is enabled, this code path is only reachable if conversion ops are emmited after
9189         mono_method_to_ir.
9190
9191         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9192
9193         This optimization saves 6 bytes per conversion against the old version.
9194
9195 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * aot-compiler.c (compile_method): Don't skip methods referencing 
9198         generic methods without a corresponding entry in token_info_hash, since
9199         encode_method_ref () can handle all generic methods now.
9200
9201         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9202         generic context is set.
9203         
9204         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9205         generic sharing of LDTOKEN.
9206
9207 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9208
9209         * mini-amd64.h: Temporarily disabled fast virtual generic method
9210         calls because it breaks the System.Runtime.Remoting tests.
9211
9212 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9213
9214         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9215
9216         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9217         so inlining actually works.
9218         (check_inline_caller_method_name_limit): Ditto.
9219
9220 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9221
9222         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9223         64 bit safety (from Olaf Hering and Andreas Farber).
9224
9225 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9226         
9227         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9228         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9229         unused virtual call support code.
9230
9231         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9232         
9233         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9234         which can't use aot trampolines.
9235         (decode_patch): Don't create aot trampolines for methods which can't use
9236         them.
9237
9238         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9239         use aot trampolines.
9240
9241         * mini.h: Bump AOT image format version.
9242         
9243 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9246         to save_token_info () since cmethod is inflated for constrained calls.
9247
9248         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9249
9250 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9251
9252         * Makefile.am: Add build rules for ppc64.
9253         This avoids the build failing at pedump with unresolved symbols
9254         due to lack of arch_sources. Instead it will now fail earlier
9255         due to lack of cpu-ppc64.md.
9256
9257         Contributed under MIT/X11 license.
9258
9259 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9260
9261         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9262         tail calls.
9263
9264         * iltests.il.in: Add test case for tail call with many arguments.
9265
9266 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9267
9268         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9269         to the fast virtual generic method code until the aot case is fixed.
9270
9271 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9272
9273         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9274
9275 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9276
9277         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9278         thunks.
9279
9280 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9281         
9282         * simd-intrinsics.c: Forgot to add this one.
9283
9284         * mini-codegen.c: Fix macro in case SIMD is not supported.
9285
9286 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9287         
9288         This patch land initial JIT support for simd intrinsics.
9289
9290         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9291
9292         * Makefile.am: Added simd-intrinsics.c
9293
9294         * simd-intrinsics.c: New file with simd instrinsic related
9295         code.
9296
9297         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9298
9299         * cpu-x86.md: Add simd related instructions.
9300
9301         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9302
9303         * driver.c: Added two new --regression variants.
9304
9305         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9306
9307         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9308
9309         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9310         extract some complicated logic to helper functions.
9311
9312         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9313
9314         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9315
9316         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9317         the specialized simplification pass.
9318
9319         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9320
9321         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9322
9323         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9324         table.
9325
9326         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9327         if MONO_ARCH_NEED_SIMD_BANK is defined.
9328
9329         * mini-ops.h: Added the new simd ops.
9330
9331         * mini-x86.c: Added mono_arch_xregname.
9332
9333         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9334
9335         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9336
9337         * mini-x86.h: Define simd related MONO_ARCH macros.
9338
9339         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9340
9341         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9342
9343         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9344         MONO_CLASS_IS_SIMD to deal with simd related IR.
9345
9346         * mini.h (MonoInst): Added spill_var to the backend union.
9347
9348         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9349
9350         * mini.h: Added forward declarations of the new simd fuctions.
9351
9352         * optflags-def.h: Added new optimization names SIMD.
9353
9354         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9355
9356         * regalloc.h: Added support for working with 3 register banks.
9357
9358         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9359
9360         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9361
9362 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9363
9364         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9365
9366 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9367
9368         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9369         instead of one on 64 bit systems.
9370
9371         * method-to-ir.c: Remove unused includes.
9372
9373 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9376         cfg->used_int_regs, since the two are different on arm.
9377
9378 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9379
9380         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9381         mono_method_get_vtable_index() to get the vtable index.
9382
9383 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9384
9385         * method-to-ir.c (mono_method_to_ir2): Don't create native
9386         wrappers for array methods, because they're never called (and if
9387         they were called they wouldn't work).
9388
9389 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9390
9391         * method-to-ir.c (mono_method_to_ir2): Array methods are
9392         special-cased and must not be invoked indirectly via the (M)RGCTX
9393         when generic sharing is turned on.  Fixes #431413.
9394
9395 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9396
9397         * method-to-ir.c: When generic sharing is active, call
9398         non-interface virtual generic methods via the standard trampoline.
9399
9400         * mini-trampolines.c: Handle virtual generic shared methods.
9401
9402         * mini.h, mini-x86.c, mini-x86.h: New argument for
9403         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9404         method thunks and which is the trampoline to call if the lookup
9405         fails.  Enable the virtual generic method thunk for x86.
9406
9407         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9408         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9409         argument but assert that it's NULL, because these archs don't yet
9410         implement the virtual generic method thunk.  Changes in the IMT
9411         thunk data structures.
9412
9413 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * aot-compiler.c (emit_globals): Avoid invalid characters in
9416         the static linking symbol.
9417
9418         * objects.cs: Add a test for the range check optimization. Fix warnings.
9419
9420         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9421         optimization from the current JIT.
9422
9423         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9424         later in decompose_array_access_opts () to allow more optimizations.
9425
9426         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9427         mono_decompose_soft_float () for consistency.
9428
9429         * mini-ops.h: Fix arguments of OP_STRLEN.
9430
9431         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9432         into a separate function.
9433         (reset_cast_details): Ditto.
9434         (handle_unbox): Save cast details. Fixes #431254.
9435
9436         * method-to-ir.c: Remove some obsolete FIXMEs.
9437
9438 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9439
9440         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9441
9442 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9443
9444         * mini-codegen.c: More work on macros to make them
9445         ready for multiple regbanks.
9446
9447 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9448
9449         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9450
9451         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9452
9453 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9454
9455         * mini-codegen.c (mono_spillvar_offset): Proper support for
9456         multiple regbanks.
9457
9458 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9461         the stack overflow changes.
9462
9463 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9464
9465         * mini-codegen.c: Make all bank macros depend on reg_bank.
9466
9467         * mini-codegen.c (mono_local_regalloc): Make free mask
9468         initialization regbank aware.
9469
9470 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9471
9472         * mini-codegen.c (mono_local_regalloc): Extract callee
9473         mask selection to a function and make it regbank aware.
9474
9475 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9476
9477         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9478         code to deal with many regbanks.
9479
9480 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9481
9482         * mini-codegen.c: More fp->regbank changes.
9483
9484 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9487         of a hardcoded constant.
9488
9489 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9490
9491         * method-to-ir.c (type_from_stack_type): Fix typo.
9492
9493 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9494
9495         * mini-ia64.c (emit_move_return_value): Convert float return values to
9496         double.
9497
9498         * objects.cs: Add a new test.
9499         
9500         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9501         VARARG methods to fix an assert later.
9502
9503         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9504         end so it at least compiles.
9505
9506 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9509
9510 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9511
9512         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9513         optimization to a new function (emit_optimized_ldloca_ir) and enable
9514         it for both ldloca and ldloca_s.
9515
9516 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9517
9518         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9519         gshared CASTCLASS code.
9520
9521         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9522         amd64, where the libc stack unwinder encounters stack frames referring to
9523         native code in unmapped memory.
9524
9525         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9526         sharing.
9527
9528         * generics.cs: Add new test.
9529
9530 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9531
9532         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9533         add a check that one of the ARM_FPU_ constants is defined.
9534
9535         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9536         
9537         * mini-exceptions.c: Fix build on non-altstack platforms.
9538
9539         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9540         sharing of vtypes.
9541
9542         * ir-emit.h: Add a comment to NEW_PCONST.
9543
9544         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9545
9546         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9547
9548         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9549         after the changes to MonoJitDomainInfo.
9550
9551 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9552
9553         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9554
9555 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9556
9557         * mini-ppc.c: Compiler warning fixes.
9558
9559 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9560
9561         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9562         for pinvokes.
9563
9564 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9565
9566         * exceptions-ppc.c, mini-ppc.h: Compile
9567         mono_arch_handle_altstack_exception() on Darwin, too.
9568
9569 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9570
9571         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9572         work on archs which don't have generic sharing implemented, only
9573         without the vtable_arg.
9574
9575 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9576
9577         * mini.c: Added comment explaining why delegate ctor icall
9578         wrappers are compiled.
9579
9580 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9581
9582         * mini.c: Don't produce trampolines to delegate ctor icall
9583         wrappers but compile them upfront.
9584
9585 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9586
9587         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9588         runtime-set function when going back to managed code. Currently this
9589         is used to set back the protection on the soft ovf pages and/or to
9590         throw the stack overflow exception that happened in unmanaged code.
9591
9592 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9593
9594         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9595         runtime-set function when going back to managed code. Currently this
9596         is used to set back the protection on the soft ovf pages and/or to
9597         throw the stack overflow exception that happened in unmanaged code.
9598
9599 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9600
9601         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9602         the support code for restoring stack protection after stack overflows
9603         that happen in unmanaged code. Don't set the exec permission on the
9604         soft overflow area.
9605
9606 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9609         delegate->method_ptr is set. Fixes #428054.
9610
9611 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * tests.cs: Rename to ratests.cs.
9614
9615         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9616         emit_get_rgctx_... functions.
9617
9618 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9619
9620         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9621
9622 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9623
9624         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9625         before asserting that method is sharable.
9626
9627 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9628
9629         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9630         whether method needs a static RGCTX wrapper used instead of
9631         complex conditions.
9632
9633         * generic-sharing.c, mini.h: A few functions moved to
9634         metadata/generic-sharing.c.
9635
9636 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9637
9638         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9639         Generic code sharing for value types, which essentially means
9640         treating value type methods like static methods.  The RGCTX is
9641         passed in the same way.
9642
9643 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9646         opcode when creating multi-dimensional arrays of open types.
9647
9648         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9649         open generic types.
9650
9651         * generics.cs: Add a test.
9652
9653         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9654
9655 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9658
9659         * mini.c (mini_method_compile): Set it when running under the debugger. 
9660
9661         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9662         vreg optimization if the flag is set.
9663
9664         * driver.c (mono_main): Add --attach= option to pass options to
9665         the attach agent.
9666
9667         * mini.c (sigquit_signal_handler): Start the attach agent.
9668
9669         * ssapre.c: Disable this to save space since it is not yet ported to
9670         linear IR.
9671
9672         * regalloc2.c: Disable this to save space.
9673
9674         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9675
9676 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9677
9678         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9679         the -v option useful again.
9680
9681 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9682
9683         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9684         --break-at-bb.
9685
9686         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9687         arrays of arrays. Fixes #428406.
9688
9689         * method-to-ir.c (mini_emit_castclass): Ditto.
9690
9691         * objects.cs: Add new test.
9692         
9693 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9694
9695         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9696         was wrong at it choked against target_type_is_incompatible for byref types.
9697
9698 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9701         places.
9702
9703 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9704
9705         * mini-exceptions.c: update a few more exceptions-related counters.
9706
9707 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9708
9709         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9710         new functions to allocate from persistent mempools.
9711
9712 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9715         multiple register banks in the future.
9716
9717         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9718
9719 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9720
9721         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9722
9723         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9724
9725         * mini.h: Export type_to_eval_stack_type.
9726
9727         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9728         is only ins->klass of byref types.
9729
9730 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9733         (mini_emit_memcpy2): Ditto.
9734
9735         * mini-amd64.c: Fix a warning.
9736
9737 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9738
9739         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9740         linking.
9741
9742 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9743
9744         * method-to-ir.c: Extract stloc micro-optimization to a
9745         function and apply it to all cases.
9746
9747 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9748
9749         * method-to-ir.c: Don't fail generic code sharing in cases we
9750         already support.
9751
9752 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9753
9754         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9755
9756 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9757
9758         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9759         implementation.
9760
9761 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9762
9763         * trace.c: make tracing more useful and correct, with per-thread
9764         id and indent info.
9765
9766 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9767
9768         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9769         doing a method call and the argument is an R4.
9770
9771 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9772
9773         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9774         generic methods.
9775
9776 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9777
9778         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9779
9780 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9783         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9784
9785 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9786
9787         * driver.c: Add a --agent argument (not supported yet) to load managed
9788         agent assemblies before loading the main assembly, similarly to how the
9789         Java VM handles agents.
9790
9791 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9792
9793         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9794         function to do stack layout of local variables.
9795
9796 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9797
9798         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9799         calculation.
9800
9801 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9804         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9805         JIT if DISABLE_JIT is defined.
9806
9807         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9808         defined.
9809
9810 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9811
9812         * iltests.il.in: Disable the fconv test on PPC (the result is
9813         undefined according to ECMA).
9814
9815 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9816
9817         * iltests.il.in: Enable tail call tests for PPC.
9818
9819         * mini.h: Add variable for storing incoming valuetype argument
9820         addresses for tail calls.
9821
9822         * mini-ppc.c: Implement valuetype arguments and return values for
9823         tailcalls on Linux.
9824
9825 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9826
9827         * mini-ppc.c: Partially implement tail calls (struct arguments and
9828         return values not supported).
9829
9830         * method-to-ir.c: Enable tail calls on PPC.
9831
9832 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9833
9834         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9835         runtime-invoke wrappers to work around the problem of them getting
9836         assigned to a random class.
9837
9838         * aot-runtime.c (mono_aot_get_method): Ditto.
9839         
9840 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9843         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9844
9845 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9846
9847         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9848         until they're implemented properly.
9849
9850         * exceptions-ppc.c: Use arch-independent exception-handling code
9851         instead of custom one.
9852
9853         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9854         for Linear IR.
9855
9856         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9857
9858         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9859         applies when __powerpc__ is defined.
9860
9861 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9864         methods to their code to avoid computing the full name of wrappers and
9865         doing a lookup in a string hash table.
9866
9867 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9868
9869         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9870         we identify bblocks before method_to_ir () is ran.
9871
9872         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9873         Also avoid optimizing branches pointing to themselves.
9874
9875         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9876
9877 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9878
9879         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9880
9881 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9884         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9885         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9886         'buf'.
9887
9888         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9889         jumped to the same entry in plt_jump_table.
9890
9891 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9892
9893         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9894         dynamic images.
9895
9896 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9897
9898         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9899         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9900         #421807.
9901
9902 2008-08-29  Geoff Norton  <gnorton@novell.com>
9903
9904         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9905         segment, and doesn't properly handle .space as .text.  Fixes
9906         AOT Mach/ARM
9907
9908 2008-08-29  Geoff Norton  <gnorton@novell.com>
9909
9910         * mini.c: Disable the mach exception handler when running on 
9911         ARM
9912
9913 2008-08-29  Geoff Norton  <gnorton@novell.com>
9914
9915         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9916         globals on Darwin/ARM
9917
9918 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9921         since too many things depend on it. Instead, call 
9922         mono_runtime_set_no_exec ().
9923         
9924         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9925         the new JIT.
9926
9927         * aot-compiler.c: Add an 'asm-only' AOT option.
9928
9929         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9930                 
9931         * aot-compiler.c (compile_method): Disable gshared support for now as it
9932         doesn't yet work.
9933
9934 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9935
9936         * mini-amd64.h : Fix a compiler warning.
9937
9938         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9939           Changed to use a callback function to retrieve the unwind info.
9940           This avoids problems observed when code blocks were removed by
9941           unloading an app domain.
9942
9943         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9944           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9945           to work properly.
9946
9947         Contributed under MIT/X11 license.
9948
9949 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9950
9951         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9952           case to keep the stack aligned to 8.
9953
9954         Contributed under MIT/X11 license.
9955
9956 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9957
9958         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9959         avoid repeated linear searches.
9960
9961 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9964         methods it can't handle.
9965         
9966         * aot-compiler.c (add_method): Avoid adding a method twice.
9967         (add_wrappers): Add runtime invoke wrappers for all methods.
9968
9969         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9970         function to create an aot-compatible version of this trampoline.
9971
9972         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9973
9974 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9977
9978         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9979         with a generic sharing failure.
9980
9981         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9982
9983         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9984         CEE_RETHROW. Fixes #419634.
9985
9986         * mini.c (mono_method_to_ir): Ditto.
9987
9988         * exceptions.cs: Add a new test.
9989         
9990         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9991         to mono_type_stack_size_internal () since some callers might not pass in
9992         an rgctx.
9993
9994         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9995         instrument_prolog. Fixes #419878.
9996
9997         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9998         doubles in soft float mode volatile.
9999
10000 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10003
10004         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10005         to handle soft float correctly.
10006
10007         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10008         the fast path.
10009
10010         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10011
10012         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10013         to sp, since the generics catch code requires it.
10014
10015         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10016         copying.
10017
10018         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10019         mono_arch_emit_imt_argument ().
10020
10021         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10022
10023         * mini-arm.c tramp-arm.c: Generic sharing updates.
10024
10025 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * mini-arm.c: Fix the arm build.
10028
10029         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10030         handling enums, generic instances and generic sharing.
10031         (mini_type_stack_size_full): Ditto.
10032
10033         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10034         
10035         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10036
10037         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10038
10039         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10040         trampolines.
10041
10042         * mini-arm.c: Various small generic sharing changes.
10043
10044         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10045         this for x86.
10046         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10047         custom code.
10048
10049         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10050         helper function to return a generic class init trampoline.
10051
10052         * method-to-ir.c mini.c: Use it.
10053         
10054         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10055         arch-specfic function to return a generic class init trampoline.
10056
10057         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10058         the GENERIC_CLASS_INIT custom code.
10059
10060         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10061         a fatal error, not a sharing failure.
10062
10063         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10064         needed.
10065
10066         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10067         trampoline argument from MONO_ARCH_VTABLE_REG.
10068
10069         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10070         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10071         argument, and pass the vtable in VTABLE_REG.
10072
10073         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10074         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10075         argument, and pass the vtable in VTABLE_REG.
10076         (mono_arch_create_trampoline_code_full): Remove some special casing for
10077         the rgctx fetch trampoline.
10078
10079         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10080         Fixes #419273.
10081
10082         * iltests.il: Add a test for it.
10083
10084 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10085
10086         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10087
10088         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10089         no longer needed.
10090
10091         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10092         use mono_jit_info_table_find () to avoid recursion.
10093         (mono_delegate_trampoline): Add a sync wrapper here.
10094
10095         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10096         here.
10097
10098         * mini.c (mono_method_to_ir): Ditto.
10099         
10100         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10101         add_sync_wrapper argument. Don't add a sync wrapper here.
10102         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10103
10104         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10105         
10106 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10107
10108         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10109           of nonvolatile registers back from MonoContext to CONTEXT.
10110
10111         Contributed under MIT/X11 license.
10112
10113 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10114
10115         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10116           arguments on Winx64 there are only 4 argument registers.  For this
10117           logic to work the last argument must be pulled from the stack.  
10118
10119         Contributed under MIT/X11 license.
10120
10121 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10124
10125         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10126         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10127         encode/decode_method_ref ().
10128
10129         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10130
10131         * aot-runtime.c (decode_patch): Ditto.  
10132
10133         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10134         MONO_PATCH_INFO_METHOD.
10135
10136         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10137         MonoGenericJitInfo.
10138
10139         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10140         MonoGenericJitInfo.
10141
10142         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10143
10144         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10145         one from the caller.
10146
10147         * aot-runtime.c (decode_generic_inst): New function to decode and
10148         return a interned generic inst.
10149         (decode_klass_ref): Use it.
10150         (decode_method_ref): Ditto.
10151
10152         * aot-compiler.c (emit_exception_debug_info): Save 
10153         jinfo->has_generic_jit_info too.
10154
10155 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10158
10159         * iltests.il.in: Add a test for fconv_to_i.
10160
10161         * liveness.c: Disable the liveness2 pass for now to save space.
10162
10163         * regalloc2.c: Include mempool-internals.h to fix warnings.
10164
10165         * aot-compiler.c (encode_method_ref): Encode the context of generic
10166         instance methods.
10167
10168         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10169         the context saved in the aot file.
10170
10171         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10172
10173         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10174
10175         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10176         volatile so they won't be optimized away.
10177
10178 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10179
10180         * ssa.c:
10181         * ssa2.c:
10182         * mini.c:
10183         * regalloc2.c:
10184         * dominators.c: Remove duplicated functions that now are in
10185         mempool-internals.h.
10186
10187 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * aot-compiler.c: Fix warnings.
10190
10191         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10192
10193         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10194
10195         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10196         as the patch type.
10197
10198         * mini.c (mono_resolve_patch_target): Ditto.
10199         
10200         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10201         (encode_klass_ref): Add support for encoding VARs/MVARs.
10202
10203         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10204
10205         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10206         the handling of the got entries into a separate 'decode_got_entry' function.
10207         Add support for RGCTX_FETCH.
10208
10209         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10210         clobbered by the trampoline code.
10211
10212         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10213         not clobbered by the indirect calling code.
10214
10215 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10218         to fix the build.
10219
10220 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10221
10222         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10223         signature using the compilation mempool otherwise we would leak it.
10224
10225 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10226
10227         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10228         mono_emit_abs_call ().
10229
10230         * patch-info.h: Add GENERIC_CLASS_INIT.
10231
10232         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10233
10234         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10235         as their target as a near call.
10236
10237         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10238         ABS handling code.
10239         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10240
10241         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10242         call to a runtime function described by a patch.
10243
10244         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10245         mono_emit_abs_call, this has the advantage that the ABS handling code in
10246         mono_codegen () can handle them both, and can handle other stuff in the
10247         future without additional code.
10248
10249         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10250         entry.
10251         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10252         abs addresses.
10253
10254         * mini.h: Add missing bblock related prototypes.
10255
10256         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10257         reverse_inst_list_len fields.
10258
10259         * mini.c: Refactor this file a bit by moving branch optimizations to 
10260         branch-opts.c.
10261
10262         * method-to-ir.c: Merge generic sharing changes missed earlier.
10263
10264         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10265
10266         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10267         shared patches. Process METHODCONST as a shared patch.
10268
10269         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10270         as it crashes on the 2.0 mscorlib.
10271
10272         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10273         to cause crashes.
10274         
10275         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10276         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10277         by IMT.
10278
10279         * aot-compiler.c: Reorganize the got handling code to be a bit more
10280         understandable.
10281
10282 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10285         mono_patch_info_equals/hash, and use it to massively simplify
10286         get_plt_index ().
10287
10288         * mini.c (mono_patch_info_hash): Simplify this and add support for
10289         more patch types.
10290
10291         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10292
10293         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10294         handling code, since an offset is not enough to identify a trampoline.
10295
10296         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10297
10298 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10299
10300         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10301
10302         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10303
10304         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10305
10306         * decompose.c: PPC decompositions for various ops.
10307
10308         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10309
10310 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10311
10312         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10313         call the generic trampoline code using a call, instead of a jump, to
10314         remove some special casing from the generic trampoline code.
10315
10316         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10317         (mono_codegen): Ditto.
10318
10319         * aot-compiler.c aot-runtime.c: Ditto.
10320
10321         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10322
10323         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10324         helper function to find the offset corresponding to a lazy fetch trampoline.
10325
10326         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10327         when doing generic sharing.
10328
10329         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10330         places.
10331         
10332         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10333         mini-trampolines.c to be with the other trampoline creation functions.
10334
10335         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10336         as it is equal to method->signature in most cases, add a 
10337         mono_emit_method_call_full variant which takes a signature and an imt
10338         argument as well.
10339
10340 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10343         to this function, since it could be computed easily from the method 
10344         argument.
10345         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10346         more.
10347
10348         * method-to-ir.c mini.c: Remove references to 
10349         compile_generic_method_wo_context.
10350
10351         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10352         generic method calls.
10353         
10354         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10355         dimensional non-szarrays.
10356
10357         * mini.c (mini_init): Register mono_array_new_1.
10358
10359         * jit-icalls.c (mono_array_new_1): New jit icall.
10360
10361         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10362         pointing to the method.
10363
10364         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10365         method addresses belonging to METHOD_JUMP patches in the 
10366         jump_target_got_slot_hash.
10367         (mono_aot_load_method): Ditto.
10368
10369         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10370         METHOD_JUMP patches.
10371
10372         * mini.c (mini_create_jit_domain_info): New helper function which 
10373         initializes/frees domain->runtime_info.
10374         (mini_free_jit_domain_info): Ditto.
10375         (mini_init): Install the domain hook functions with the runtime.
10376
10377         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10378         information maintained by the JIT.
10379
10380         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10381         insertion into jump_table_hash into mono_codegen (), also implement proper
10382         locking.
10383
10384         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10385         tail calls, it is already done by the aot code.
10386         
10387         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10388         mechanism on amd64.
10389
10390         * iltests.il.in: Make the jmp test a bit more complex.
10391
10392         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10393         generic instances which doesn't have a token.
10394
10395         * aot-runtime.c (decode_method_ref): Ditto.
10396         
10397         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10398         can handle this case now.
10399         (handle_box): Ditto.
10400
10401 2008-08-15  Geoff Norton  <gnorton@novell.com>
10402
10403         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10404         debugging check.
10405
10406 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10407
10408         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10409         calling generic methods.
10410
10411         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10412
10413         * aot-runtime.c (decode_patch_info): Ditto.
10414
10415         * mini.c (mono_resolve_patch_target): Ditto.
10416         
10417         * patch-info.h: Add METHOD_RGCTX.
10418
10419         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10420
10421 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10424         arguments in registers.
10425
10426         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10427         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10428
10429         * mini.c (mini_method_compile): Abort aot compilation for generic
10430         methods if generic sharing is disabled.
10431         
10432         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10433         an mrgctx.
10434
10435         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10436         requiring an mrgctx.
10437
10438         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10439         store instructions when converting a vcall to a normal call.
10440
10441         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10442         mono_arch_find_jit_info.
10443
10444 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10445
10446         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10447         avoid calling mono_method_full_name () for every method even if the
10448         env var is not set.
10449         (check_inline_caller_method_name_limit): Ditto.
10450
10451 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10454         assemblies in one run.
10455
10456         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10457         skipped methods if it is not 0.
10458
10459         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10460
10461 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10462
10463         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10464           MONO_ARCH_HAVE_UNWIND_TABLE.
10465
10466         Contributed under MIT/X11 license.
10467
10468 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10469
10470         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10471           from default optimizaton list on Winx64.
10472
10473         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10474
10475         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10476           the LMF from the MonoJitTlsData structure.
10477
10478         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10479
10480         Contributed under MIT/X11 license.
10481
10482 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * mini.c (sigsegv_signal_handler): Fix the build.
10485
10486         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10487         assembly->aot_module.
10488
10489         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10490         hash table. This simplifies and speeds up a lot of code, and fixes support
10491         for .netmodules.
10492
10493         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10494         with the runtime.
10495
10496         * mini-exceptions.c: Ditto.
10497         
10498         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10499         'native_offset' argument, since these are computed in the 
10500         mono_find_jit_info () function.
10501
10502         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10503         is used by exceptions-ppc.c.
10504
10505         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10506         mono_arch_find_jit_info ().
10507         
10508         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10509         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10510         generic code in mini-exceptions.c.
10511
10512 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10515
10516         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10517         
10518         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10519         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10520         called while holding the loader lock. Fixes #415608.
10521         (mono_aot_get_method_from_token_inner): Ditto.
10522
10523 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10524
10525         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10526         to reduce differences between this and the generic implementation in
10527         mini-exceptions.c.
10528         (ves_icall_get_frame_info): Ditto.
10529
10530         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10531
10532         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10533         longer neccesarry.
10534
10535         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10536         mono_arch_get_call_filter () and make it non-static, for consistency with the
10537         other architectures.
10538
10539 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10540
10541         * mini.c:
10542         * local-propagation.c:
10543         * mini-x86.c: Correct the name of arch defines.
10544
10545 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10546
10547         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10548         NO_EMULATE_LONG_SHIFT_OPS define.
10549
10550 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10553         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10554
10555         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10556         MACH fixes. Merged from the 2.0 branch.
10557
10558         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10559
10560         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10561         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10562
10563         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10564
10565         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10566         mono_marshal_get_native_wrapper () signature changes.
10567
10568 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10569
10570         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10571         conversion bug under arm.
10572
10573 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10574
10575         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10576
10577         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10578         with overflow checking.
10579
10580 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10581
10582         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10583         to the genmdesc.pl file
10584
10585 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10588         arg_array in the soft-float versions of the LOAD/STORE macros.
10589
10590         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10591         implementation.
10592
10593         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10594
10595 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10598         a float HFA. Fixes #413621.
10599
10600 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10601
10602         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10603         frame_size to args_size. Fixes build.
10604
10605 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10606
10607         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10608         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10609
10610         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10611         the stack are not unaligned. Fixes #413247.
10612         
10613 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10614
10615         * mini.c: update jitted methods performance counters.
10616
10617 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini-exceptions.c: increase the exceptions thrown performance
10620         counter in mono_handle_exception ().
10621
10622 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10625         can work with netmodules.
10626
10627 2008-07-28  Geoff Norton  <gnorton@novell.com>
10628
10629         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10630         regression tests.
10631
10632 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10635         correct place.
10636
10637 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10638
10639         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10640           The float param registers and other param registers must be the 
10641           same index on Windows x64.
10642
10643         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10644           ArgValuetypeAddrInIReg argument case.  Setting the argument
10645           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10646
10647         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10648           variable computed above as the copy length for arguments of storage
10649           type ArgValuetypeAddrInIReg.
10650
10651         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10652           ArgValuetypeAddrInIReg argument case.  This case will rely on
10653           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10654
10655         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10656           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10657           jump and tail call instructoins as they do not follow the typical call behavior.
10658
10659         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10660           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10661           local variable and pass the local variable by reference to the called method.
10662
10663         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10664           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10665           of a struct is passed in a register it must be saved with the other
10666           volatile argument on the stack.
10667
10668         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10669           frame pointer the stack adjustment value must be saved to the unwind 
10670           info structure.
10671
10672         Contributed under MIT/X11 license.
10673
10674 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10677         which got lost in the merge.
10678
10679 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10682         build.
10683
10684         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10685         
10686         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10687         icalls, since they won't be patched.
10688
10689         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10690         different code sequence when running under valgrind to prevent some valgrind
10691         errors.
10692
10693         * iltests.il.in: Add new regression test.
10694
10695         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10696         end with a throw.
10697
10698         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10699         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10700
10701         * iltests.il.in: Add new test.
10702
10703         * aot-compiler.c: Fix some warnings.
10704
10705         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10706         Fixes #412494.
10707
10708 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10711         (mini_usage_jitdeveloper): Add a missing --wapi option.
10712
10713 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini-codegen.c: Simplify the is_fp macros.
10716         (free_up_ireg): Remove, use free_up_reg instead.
10717         (free_up_reg): Fix the fp case.
10718
10719 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10720
10721         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10722         lowered earlier.
10723
10724         * exceptions-x86.c: Merge some changes which seemed to have got lost
10725         in the linear-ir merge.
10726
10727         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10728
10729         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10730         long vreg volatile even if the variable was already created.
10731
10732         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10733         volatile variables.
10734
10735 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10738
10739         * mini.c (mono_jit_compile_method_inner): Add support for 
10740         MONO_EXCEPTION_BAD_IMAGE.
10741
10742         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10743         mini_method_get_context () returns NULL. Fixes #356531.
10744
10745         * mini.c (mono_method_to_ir): Ditto.
10746         
10747         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10748         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10749
10750 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10751
10752         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10753         in the LDFTN implementation.
10754
10755 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10756
10757         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10758         code, patch calls to icalls, too, even if they're not in the
10759         shared generic code hash.  Fixes #411962.
10760
10761 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10762
10763         * cpu-x86.md: Increase the length of the fcall opcodes.
10764
10765         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10766         calls returning floats.
10767
10768         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10769         on NEWARR.
10770         
10771         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10772         missed earlier.
10773
10774         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10775         into the domain->method_code_hash.
10776
10777         * aot-compiler.c: Fix win32 build.
10778
10779         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10780         
10781         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10782         gshared NEWARR implementation.
10783
10784         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10785
10786         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10787         can be used outside of method_to_ir.
10788
10789         * mini.h (MonoCompile): Add arg_types field.
10790
10791         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10792         
10793         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10794         the values of the local arg_array and param_types array.
10795
10796 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10797
10798         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10799         got accesses might only get generated later when NEWOBJ is decomposed.
10800         
10801         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10802         looking up the native code of the target method when a delegate is called
10803         for the first time.
10804
10805         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10806         optimization.
10807
10808         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10809
10810         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10811         AOT work on platforms without a working dlsym implementation.
10812
10813         * mini.h: Bump AOT image format version.
10814         
10815 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10816
10817         * mini-exceptions.c: Free a MonoType with
10818         mono_metadata_free_type() instead of g_free().
10819
10820         * aot-runtime.c: Free a MonoType.
10821
10822 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10825         optimization.
10826
10827         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10828         fp stack on x86.
10829
10830 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10831         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10832         profiler hook.
10833
10834 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10837         NEWOBJ calls on valuetypes.
10838
10839         * iltests.il.in: Add new test.
10840
10841         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10842
10843 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10846         is no longer needed.
10847
10848         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10849         non register sized integer arguments.
10850         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10851         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10852         emit_memcpy2 ().
10853
10854         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10855         CEE_MONO_RETOBJ.
10856         
10857         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10858         two a binop with different sized arguments is emitted.
10859
10860         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10861         instruction in the ins==NULL case.
10862
10863 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10864
10865         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10866
10867         * mini-x86.c: Fix osx build.
10868
10869         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10870         opcodes as well.
10871
10872         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10873         instruction for non int sized variables.
10874
10875         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10876         implementation.
10877
10878 2008-07-23  Robert Jordan  <robertj@gmx.net>
10879
10880         * method-to-ir.c: Fix MSVC build.
10881
10882 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10883
10884         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10885         a non int sized type, widen it to an int since newer versions of gcc seem to
10886         generate code which needs this.
10887
10888         * ssa2.c abcremoval2.c: Fix warnings.
10889
10890         * *: Merge the Linear IR branch.
10891
10892         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10893         the ChangeLog file there describes all the changes done over the years. 
10894         Further documentation can be found at www.mono-project.com/Linear_IL.
10895
10896 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10897
10898         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10899           The float param registers and other param registers must be the 
10900           same index on Windows x64.
10901
10902         Contributed under MIT/X11 license.
10903
10904 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10905
10906         * mini.c: Make the previous fix GC safe.
10907
10908 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10909
10910         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10911
10912 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10913
10914         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10915           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10916           ArgValuetypeAddrInIReg instead.
10917
10918         Contributed under MIT/X11 license.
10919
10920 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * mini-codegen.c (get_register_spilling): Fix a warning.
10923
10924 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10925
10926         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10927         for types which the initialization fails. Raises the provided exception
10928         at the right stop after cleanup.
10929
10930 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10931
10932         * aot-compiler.c: Free most of the memory allocated during compilation.
10933
10934         * mini.c (mini_parse_debug_options): Fix a leak.
10935         
10936         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10937         during aot compilation.
10938
10939 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10940
10941         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10942         it has too much register pressure.
10943
10944 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10945
10946         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10947
10948 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10951         on x86.
10952
10953         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10954         on amd64 similar to the way it is done on arm.
10955
10956         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10957
10958         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10959         consistency, normalize error messages, avoid loading aot-only modules in
10960         normal mode.
10961
10962         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10963         for consistency.
10964
10965         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10966
10967 2008-07-11  Martin Baulig  <martin@ximian.com>
10968
10969         * debug-debugger.h
10970         (MonoDebuggerInfo): Add `interruption_request'.
10971
10972 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * aot-compiler.c (emit_plt): Remove some dead code.
10975
10976         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10977
10978         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10979         return the plt info offset belonging to a given plt entry.
10980
10981         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10982         mono_aot_get_plt_info_offset.
10983         
10984         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10985         similar to the amd64 code by makeing jumps through a separate jump table 
10986         instead of embedding the jump addresses into the code.
10987
10988 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10991         method.
10992
10993 2008-07-10  Martin Baulig  <martin@ximian.com>
10994
10995         * mini.c (mini_method_compile): Disable generics sharing when
10996         running in the debugger.
10997
10998 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11001
11002         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11003         the local register allocator from running out of registers on x86 when 
11004         using aot.
11005
11006 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11007
11008         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11009         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11010         C4146.
11011
11012         Contributed under MIT/X11 license.
11013
11014 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11017         speed up the assembler.
11018
11019 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11020
11021         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11022         support.
11023
11024         * mini.c: Move the soft float handling macros a bit earlier, add 
11025         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11026         place.
11027
11028         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11029
11030         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11031         read-only to help catch code allocation requests.
11032         
11033         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11034         and turn it off when using --aot-only or when compiling with --aot=full.
11035
11036         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11037         jump table for switches from the normal domain mempool, not the code
11038         manager.
11039
11040         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11041         unbox trampoline which handles aot-only mode too.
11042
11043         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11044         an AOTed unbox trampoline.
11045
11046         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11047
11048 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11049
11050         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11051         ""
11052
11053         Contributed under MIT/X11 license.
11054
11055 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11056
11057         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11058           the unwind information for the method at the end of the allocated block.
11059           
11060         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11061           MonoCompileArch to hold the unwind info for SEH on Winx64
11062         
11063         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11064           frame pointer info for the method being compiled.
11065           
11066         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11067           the call to mono_exception_from_token.
11068           
11069         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11070           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11071           information is stored a the end of the method block because it is all 32-bit offset based.
11072
11073         Contributed under MIT/X11 license.
11074
11075 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11078
11079         * wapihandles.c: Fix warnings.
11080
11081         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11082         mode.
11083
11084         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11085         mono_jit_compile_method in aot-only mode since that calls the type 
11086         initializer.
11087         
11088         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11089         get_delegate_invoke_impl in aot-only mode.
11090
11091         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11092
11093 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11096
11097         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11098         is on by default.
11099
11100         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11101
11102         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11103         init trampoline from the AOT file as well.
11104
11105         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11106         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11107         code.
11108
11109         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11110         mono_init.
11111
11112         * exceptions-amd64.c: Add _full variants for the remaining exception code
11113         creation functions as well, allow emission of relocatable code, remove
11114         caching since that is now done by the caller.
11115
11116         * mini-exceptions.c: Add _full variants for the remaining exception code
11117         creation functions as well, add aot-only support.
11118
11119         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11120         if we can determine a proper token for them.
11121         (add_wrappers): Add a few more wrappers.
11122         (emit_method_code): Remove some dead code.
11123         (emit_trampolines): Emit exception code too.
11124
11125         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11126
11127         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11128         mono_array_new_va which avoids varargs.
11129
11130         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11131
11132         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11133         mono_arch_create_specific_trampoline () in all places.
11134
11135         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11136         a bit so it can be used for other things as well.
11137         
11138         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11139         on demand as well.
11140
11141         * exceptions-amd64.c: Rename the caching from the exception code creation
11142         functions, it is done by the caller instead.
11143         
11144         * exceptions-amd64.c: Change the signature of the exception code creation 
11145         functions to allow the creation of relocatable code later.
11146
11147         * mini-exceptions.c: Add a set of functions to query the various 
11148         runtime-generated exception functions.
11149
11150         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11151         mono_arch_.. () functions.
11152         
11153 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11154
11155         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11156
11157         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11158
11159         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11160         (mini_get_vtable_trampoline): Ditto.
11161
11162         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11163         code in the AOT case by returning the code size and a list of relocations to
11164         the caller.
11165
11166         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11167
11168 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11169
11170         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11171           clean the stack.
11172
11173         Contributed under MIT/X11 license.
11174
11175 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11176
11177         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11178         so the buffer size can be computed correctly. Fixes #404735.
11179
11180         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11181         normally as cfg->debug_info is already freed.
11182
11183 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * mini-amd64.c: For calls returning vtypes in registers, don't store
11186         the return address on the stack, instead allocate a separate local for
11187         it. Fixes #404729.
11188
11189 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11190
11191         * mini-trampolines.c, mini.h: Add an argument to
11192         mono_create_jit_trampoline_in_domain() for turning off the adding
11193         of the sync wrapper.
11194
11195         * mini.c: Use the JIT trampoline without sync instead of
11196         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11197         be patched.
11198
11199 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11200
11201         * driver.c: Turn on GSHARED optimization by default.
11202
11203 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11204
11205         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11206         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11207
11208         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11209         create a variant of the generic trampoline code callable from AOTed trampolines.
11210
11211         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11212         trampoline code callable from AOTed trampolines.
11213
11214         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11215
11216 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11217
11218         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11219         pass-through manner.
11220
11221         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11222         and don't fail sharing for them anymore.
11223
11224         * mini-exceptions.c: Handle exceptions in shared generic methods.
11225
11226         * generic-sharing.c: When checking the context of a generic
11227         method, also check its class's context.  Don't treat wrappers as
11228         sharable.
11229
11230         * mini-trampolines.c: Some code factored out to
11231         metadata/generic-sharing.c.  Handle the MRGCTX case.
11232
11233         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11234         we must deal with the method being of another instantiation of the
11235         class.  Add static rgctx invoke wrappers to generic methods.
11236
11237 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11238
11239         * mini.c: Provide all jit infos of generic shared methods with a
11240         generic jit info.
11241
11242         * mini-exceptions.c: Handle the new situation that a generic info
11243         might be available, but not info about the this/vtable/mrgctx
11244         variable.
11245
11246 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11247
11248         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11249         generic methods.
11250
11251 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * dominators.c (check_dominance_frontier): Fix a warning.
11254
11255         * mini.h: Add some missing prototypes.
11256
11257         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11258
11259         * driver.c (mono_jit_init_version): Correct the comments since the first
11260         argument should be the name of the root domain, not a filename.
11261
11262         * aot-runtime.c (make_writable): Error out if this is called while running
11263         with --aot-only.
11264         (load_aot_module): Ditto.
11265
11266         * aot-compiler.c: Really fix the computation of method indexes.
11267
11268         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11269         optimizations as this is no longer called frequently.
11270
11271         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11272         method and the invoke impl code and pass it to the delegate trampoline instead of
11273         just the delegate class.
11274
11275 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * aot-compiler.c: Fixup the computation of method indexes.
11278         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11279         the method builder infrastructure.
11280
11281         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11282         has no header.
11283
11284         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11285         mode, load the method right away instead of creating a trampoline.
11286
11287         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11288
11289         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11290         some checks a bit.
11291
11292 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11295         (mono_aot_load_method): Use method_index instead of method->token.
11296
11297         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11298         can handle icalls etc. properly.
11299
11300         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11301
11302         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11303
11304         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11305         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11306         JIT_ICALL_ADDR patch type.
11307
11308         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11309
11310         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11311         request flag.
11312         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11313
11314         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11315
11316 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11317
11318         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11319         domain->jit_code_hash.
11320
11321 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11322
11323         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11324
11325 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11326
11327         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11328         get_this_arg_from_call, let it compute it when needed.
11329
11330         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11331         gsctx from code only when needed.
11332
11333         * mini-trampolines.c (get_generic_context): Rename this to 
11334         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11335         it can be called by the arch backends.
11336
11337         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11338
11339 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * driver.c (mono_main): Add experimental --aot-only command line option.
11342
11343         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11344         set.
11345
11346 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11347
11348         * driver.c (DllMain): Remove mono_module_handle.
11349
11350         Contributed under MIT/X11 license.
11351
11352 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11355         for emitting methods which are not in the source assembly. Detect and report
11356         failure of assembling+linking.
11357         
11358         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11359
11360         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11361
11362 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11363
11364         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11365
11366 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * mini.h: Remove some obsolete prototypes.
11369
11370         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11371
11372 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11373
11374         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11375         supported by Visual Studio, so use alloca().
11376
11377 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11378
11379         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11380         Fixes #402585.
11381
11382 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11383
11384         * mini.c: Fail sharing of a generic method if it contains an open
11385         catch clause (because we don't pass MRGCTXs yet).
11386
11387 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11388
11389         * mini.c: When compiling a method with generic sharing, insert the
11390         method instantiated with an all-Object generic context into the
11391         jit info table, instead of the context of the first instantiation
11392         of the method we happen to compile.
11393
11394 2008-06-18  Martin Baulig  <martin@ximian.com>
11395
11396         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11397         `major_version' and `minor_version'.
11398
11399 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11400
11401         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11402         mono_method_is_generic_sharable_impl() takes an additional
11403         argument specifying whether to treat type variables as reference
11404         types.
11405
11406 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11407
11408         * mini.h: Removed obsolete prototypes.
11409
11410 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11411
11412         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11413         already handle them.
11414
11415 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11416
11417         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11418         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11419         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11420         tramp-x86.c: Added a MonoGenericContext* argument to
11421         mono_arch_get_unbox_trampoline() so that it can call other
11422         functions which require it.
11423
11424 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11425
11426         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11427         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11428         mono_arch_get_this_arg_from_call() takes a
11429         MonoGenericSharingContext* as well.
11430
11431 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11432
11433         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11434         implement generic sharing of unbox.
11435
11436 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11437
11438         * mini.c: Don't compute the vtable to determine whether a field is
11439         special static, because it might not work for open types.
11440
11441 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11442
11443         * mini.c: Removed the unused token_type and token_source arguments
11444         from get_runtime_generic_context_ptr().
11445
11446 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11447
11448         * mini.c (ADD_BINOP): fix the build
11449
11450 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11451
11452         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11453         a widening op.
11454
11455 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11456
11457         * mini.h: Removed class relations enum that's not used anymore.
11458
11459 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11460
11461         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11462
11463         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11464         the lazy fetch trampoline access code.
11465
11466 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11469
11470 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11473
11474         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11475
11476         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11477
11478 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11479
11480         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11481         intrinsics.
11482
11483         * mini-ops.h: Add MIN/MAX_UN opcodes.
11484
11485         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11486         intrinsics.
11487
11488         * basic-math.cs: Add more min/max tests.
11489
11490         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11491
11492 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11493
11494         * mini.c: Small fix in the prologue of emit_castclass.
11495
11496 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11497
11498         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11499
11500         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11501         do not work even for unsigned types. Fixes #400014.
11502
11503         * basic-math.cs: Add regression tests for unsigned Min/Max.
11504
11505 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11506
11507         * mini.c: Added additional context_used argument to several
11508         functions, which will be needed for sharing generic methods.  Use
11509         GET_RGCTX macro wherever appropriate.  Declare only one
11510         context_used in mono_method_to_ir().
11511
11512 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11513
11514         * mini.c, generic-sharing.c: Removed generic class relations.
11515
11516         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11517         functions due to MRGCTX changes.
11518
11519 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11520
11521         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11522         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11523         with calculated IMT.
11524
11525         * mini.c: Generic sharing of calls via generic interfaces.
11526
11527         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11528         generic method with non-constant MonoGenericContext*.  Instead,
11529         the context is taken out of the method itself.
11530
11531 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11532
11533         * mini.c: Generic sharing of ldvirtftn.
11534
11535 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11536
11537         * mini.c: Generic sharing of ldftn.
11538
11539 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11540
11541         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11542
11543 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11544
11545         * mini.c: Generic sharing of the special case of ldtoken followed
11546         by a call to GetTypeFromHandle.
11547
11548 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11549
11550         * mini.c: Generic sharing of box for nullable types.
11551
11552 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11553
11554         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11555         are passed on the stack. Fixes #324807.
11556
11557 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11558
11559         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11560         for the ArgValuetypeAddrInIReg case.
11561
11562         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11563         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11564
11565         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11566         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11567         local variable and pass the local variable by reference to the called method.
11568           
11569         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11570         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11571
11572         Contributed under MIT/X11 license.
11573
11574 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11575
11576         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11577
11578         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11579         everything.
11580
11581 2008-06-10  Martin Baulig  <martin@ximian.com>
11582
11583         * debug-mini.c
11584         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11585
11586 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11587
11588         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11589         possible error when no arguments are passed.
11590
11591         Contributed under MIT/X11 license.
11592
11593 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11594
11595         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11596         where the file name is NULL.
11597
11598 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11599
11600         * mini.c: Fix s390 build.
11601
11602 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * trace.c (mono_trace_parse_options): Fix warnings.
11605
11606         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11607
11608 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * mini.c (remove_block_if_useless): Avoid printing the method name.
11611         
11612         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11613         MONO_INST_NEW.
11614
11615         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11616         LMF. Not yet used.
11617
11618         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11619         translated code after it has been patched.
11620
11621 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11624         avoid problems during code patching on SMP systems.
11625         (emit_call): Avoid adding a patch info which is already added by 
11626         emit_call_body.
11627         (mono_arch_emit_exceptions): Ditto.
11628
11629 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11632         MONO_TYPE_ISSTRUCT already checks for it.
11633
11634 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11635
11636         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11637           structs with floats on Winx64 the float registers are not used.  
11638           The integer registers are always used..
11639         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11640           only one register will be used and only if the size of the struct 
11641           is 1,2,4, or 8 bytes.
11642
11643         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11644           to work for Winx64.
11645
11646         Contributed under MIT/X11 license.
11647
11648 2008-06-05  Martin Baulig  <martin@ximian.com>
11649
11650         * debug-debugger.c (debugger_lookup_class): Also call
11651         mono_class_setup_methods() here; we're only called from RTI.
11652
11653 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11654
11655         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11656         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11657         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11658         Post-process object files and add dtrace-generated object, if necessary.
11659
11660         Contributed under MIT/X11 license.
11661
11662 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11663
11664         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11665         element class.
11666
11667         * mini.c: Generic sharing for unbox.any and castclass.
11668
11669 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11670
11671         * mini.c: Ignore tailcall prefix in shared generic code and when
11672         doing calls which require a vtable/rgctx argument.
11673
11674 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11675
11676         * mini.c: Don't free the JIT info.
11677
11678         * driver.c: Changes in the JIT info table testing code.
11679
11680 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11681
11682         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11683         interruption. Fix some warnings.
11684
11685         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11686         interruption_checkpoint.
11687
11688 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11689
11690         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11691         from embedding applications.
11692
11693 2008-06-02  William Holmes  <billholmes54@gmail.com>
11694
11695         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11696           reserving 32 bytes on the stack when making calls. 
11697
11698         Contributed under MIT/X11 license.
11699
11700 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11701
11702         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11703         the linear IL branch.
11704
11705         * driver.c: Print out more information for --version on arm.
11706
11707 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11708
11709         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11710         bb_exit instead, since out of line bblocks might not actually be emitted
11711         out-of-line.
11712         
11713         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11714         maximum epilog size for out of line bblocks if tracing is enabled.
11715
11716         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11717
11718 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11719
11720         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11721
11722 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11723
11724         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11725         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11726         opcodes.
11727
11728 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11729
11730         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11731         the 'value' to store is a constant.
11732
11733         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11734
11735         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11736         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11737
11738 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11739
11740         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11741         for accessing method->generic_container.
11742
11743 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11744
11745         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11746         
11747         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11748
11749         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11750
11751         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11752         fails.
11753
11754 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11755
11756         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11757
11758         * mini.c: Handle the case when mono_class_vtable () fails.
11759
11760 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11761         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11762         the stat profiler.
11763
11764 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11765
11766         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11767         together with domain sharing.
11768
11769 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11770
11771         * mini.c: Treat callvirts to final methods like non-virtual calls
11772         when doing generic sharing, i.e. look them up in the runtime
11773         generic context.
11774
11775 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11776
11777         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11778         with computed types (for generic sharing).
11779
11780         * mini.c: Generic sharing for mkrefany and refanyval.
11781
11782 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11783
11784         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11785         possible.
11786
11787         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11788         the generic sharing code.
11789         
11790         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11791         when needed.
11792
11793 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11794
11795         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11796
11797 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11798
11799         * driver.c: updated copyright date
11800
11801 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11802
11803         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11804         needed.
11805
11806 2008-05-19  Martin Baulig  <martin@ximian.com>
11807
11808         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11809         pointing to the new `_mono_debug_using_mono_debugger' variable.
11810
11811         * driver.c
11812         (mono_main): Check mono_debug_using_mono_debugger() rather than
11813         the `MONO_INSIDE_MDB' environment variable to check whether we're
11814         inside the debugger.
11815
11816 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11819         argument.
11820
11821 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11822
11823         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11824
11825         * mini.c: Added mini_assembly_can_skip_verification. This
11826         function checks if the assembly requested to skip verification. 
11827         Fixes part of #387274.
11828
11829 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * mini.c (mini_get_method): Disable the check for open generic classes when
11832         using generic sharing.
11833
11834         * generics.cs: Add a test for #387034.
11835
11836         * mini.c (mini_get_method): Check whenever the method class is an open generic
11837         type, and return NULL in that case, causing a verification error. Fixes
11838         #384123.
11839
11840 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11841
11842         * driver.c (mono_main): Revert r102623. The right
11843         thing to do is to enable the verifier under verifiable
11844         unless a --security flag was passed.
11845
11846         We need this non-trivial behavior for --verify-all otherwise
11847         mcs-compileall won't be able to use it. As it needs everything to
11848         be verified under validil.
11849
11850 2008-05-06  Martin Baulig  <martin@ximian.com>
11851
11852         Fix #383749.
11853
11854         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11855         (mono_debugger_thread_cleanup): Likewise.
11856         (mono_debugger_extended_notification): Likewise.
11857
11858 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11859
11860         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11861         against both inflated and non-inflated methods. We need to check against the
11862         generic definition for cases where the instantiated method is not visible.
11863         We need to check against the inflated types for cases where the instantiation
11864         changes any super type. This fixes #382986.
11865
11866         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11867         that check for visibiliy as generic params only appears as the type subject
11868         of tokens on call opcodes. Field manipulation and ldftn must always
11869         target an exact type.
11870
11871 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11872
11873         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11874         if no related --security flag is passed.
11875
11876 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11877
11878         * mini-arch.h: Prepare support for ppc64.
11879
11880         Contributed under MIT/X11 license.
11881
11882 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11883
11884         * aot-runtime.c: Prepare support for ppc64.
11885
11886         Contributed under MIT/X11 license.
11887
11888 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11889
11890         * mini-ops.h: Prepare support for ppc64.
11891
11892         Contributed under MIT/X11 license.
11893
11894 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11895
11896         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11897
11898         Contributed under MIT/X11 license.
11899
11900 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11901
11902         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11903         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11904         assemblies on windows.
11905
11906 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11907
11908         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11909         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11910         * main.c: Use UTF-8 encoded command line instead of Windows default code
11911         page on Windows to support Unicode.
11912         * driver.c (DllMain): New function for mixed-mode assembly support.
11913         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11914         export __stdcall functions without decoration.
11915
11916         Contributed under MIT/X11 license.
11917
11918 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11919
11920         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11921         saving it very early.
11922
11923 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11924
11925         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11926         deleted.  The only way to access the new RGCTX is via the
11927         trampline.
11928
11929         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11930         vtable instead of the RGCTX to static methods.
11931
11932         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11933         accessing the new RGCTX.
11934
11935         * generic-sharing.c: There is no separation between self, type
11936         arguments and other types in the RGCTX anymore.
11937
11938 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11939
11940         * mini-amd64.c (add_general): Remove previous stack adjustment.
11941         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11942         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11943         for 32 bytes of stack space reserved for all calls.
11944         
11945         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11946         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11947         adjustment.
11948         
11949         Code contributed under MIT/X11 license.
11950
11951 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11952
11953         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11954         against the root definition, peeling out method and type instantiations.
11955         Cache verify success results, code that fails verification is still
11956         checked multiple times.
11957
11958 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11961
11962 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11963
11964         * mini-amd64.c (add_general): Always increment stack on Win64.
11965         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11966         on Win64.
11967         
11968         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11969         stack based argument handling on Win64.
11970         
11971         Code contributed under MIT/X11 license.
11972
11973 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11974
11975         * Makefile.am (version.h): Add support for git-svn.
11976
11977 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11980         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11981         avoiding allocations and libc functions which might deadlock.
11982         
11983         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11984         'no-gdb-backtrace' option is set.
11985
11986         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11987
11988         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11989
11990 2008-04-21  Martin Baulig  <martin@ximian.com>
11991
11992         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11993         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11994
11995 2008-04-21  Martin Baulig  <martin@ximian.com>
11996
11997         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11998         `thread_vtable', `event_handler_ptr' and `event_handler'.
11999
12000 2008-04-21  Martin Baulig  <martin@ximian.com>
12001
12002         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12003         allows delayed initialization of the `executable_code_buffer' when
12004         attaching.
12005
12006 2008-04-21  Martin Baulig  <martin@ximian.com>
12007
12008         * mini.h (mono_debugger_create_notification_function): Removed.
12009         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12010
12011         * mdb-debug-info64.s
12012         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12013
12014         * mdb-debug-info32.s
12015         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12016
12017         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12018         currently only works on x86 and x86_64, so don't create it on ppc.
12019
12020 2008-04-21  Martin Baulig  <martin@ximian.com>
12021
12022         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12023
12024         * mini.c
12025         (mini_method_compile): In the fp elimination check, check
12026         `debug_options.mdb_optimizations' in addition to
12027         mono_debug_using_mono_debugger().       
12028
12029         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12030         disable some JIT optimizations which are only disabled when
12031         running inside the debugger.
12032         Added `--help-debug' option to describe the debugging options.
12033         (parse_debug_options): New static function to parse the `--debug'
12034         options, so we can easily add more stuff in future.
12035
12036 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12037
12038         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12039         the method has no body.
12040
12041 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12042
12043         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12044         assembly is not allowed in MSVC 64-bit compiler. 
12045         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12046         as we get floating point exceptions everywhere.
12047         
12048         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12049         correctly align arguments for call to throw_exception.
12050         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12051         
12052         Code contributed under MIT/X11 license.
12053
12054 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12055
12056         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12057
12058 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12061
12062         * mini-amd64.c (NEW_INS): Set cil_code.
12063
12064         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12065         from mini-amd64.c so all debugger related logic is in one place.
12066
12067         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12068         later won't have a random ip assigned to them.
12069
12070 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12073         the arch specific function initializes code_size.
12074         (mono_create_delegate_trampoline): Ditto.
12075
12076         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12077         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12078         platforms.
12079
12080         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12081         running under the debugger.
12082
12083         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12084         debugger.
12085
12086         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12087         debugger. Also move the disabling of optimizations here from driver.c.
12088         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12089         debugger.
12090
12091         * mini.h (MonoCompile): Add a few new flags.
12092
12093 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12096         so the cil_code field of created MonoInst's is properly set.
12097         (mini_select_instructions): Ditto.
12098
12099         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12100         (MONO_INST_NEW_CALL): Ditto.
12101
12102         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12103         in many places so the ins->cil_code field is properly initialized.
12104
12105         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12106         place.
12107
12108 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * mini.c (mini_method_compile): Print a different message when compiling a 
12111         shared method.
12112         
12113         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12114         > 1.
12115
12116 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12117
12118         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12119         SSE2 instructions.
12120
12121         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12122         
12123 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12124
12125         * mini.c (handle_stack_args): Make this return void since its return value was
12126         never used. Also set cfg->unverifiable for invalid IL instead of calling
12127         G_BREAKPOINT ().
12128
12129 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12130
12131         * mini.c: Make sure "this" is live in catch clauses with type
12132         variables in shared generic code.
12133
12134 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12135
12136         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12137         generic_class_is_reference_type() to ensure the proper behaviour
12138         when sharing generic code and the type in question is a type
12139         argument.
12140
12141 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12144         race conditions when printing thread dumps. Fixes #377738.
12145
12146 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12147         
12148         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12149         shows up when both MonoInst arguments can cause aliasig.
12150         There is likely no way in the current JIT to trigger this problem, but
12151         it showed up in the development of generics sharing, when in a new
12152         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12153         When the generics sharing code will be committed, its tests will be
12154         valid also for this bug.
12155
12156 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12159         PATCH_INFO_METHOD.
12160
12161         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12162         NULL.
12163
12164 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12165
12166         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12167         use a more detailed exception message for InvalidCastException.
12168
12169         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12170
12171         * driver.c (mono_main): Add --debug=casts option to turn on better 
12172         InvalidCastException message details.
12173
12174         * mini.c (mini_get_debug_options): New helper function to return the address of
12175         the debug_options variable.
12176
12177         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12178         the jit_tls TLS variable.
12179
12180         * mini.c (mono_jit_tls): New TLS variable.
12181
12182         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12183         option is used.
12184
12185 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12186
12187         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12188
12189         * mini.c: Removed verifer related stuff, code moved to verify.c.
12190
12191         * driver.c: Using code from verify.c instead of mini.c.
12192
12193 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12196         longer valid.
12197
12198 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12199
12200         * mini.c (check_for_method_verify): Enabling verification of
12201         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12202         have been fixed.
12203
12204 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12207         caller saved registers as well.
12208         
12209         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12210         saved registers as well.
12211
12212 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12215
12216         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12217         code.
12218
12219 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12222         to get_call_info.
12223         (get_call_info): Take a gsctx argument instead of 'cfg'.
12224
12225 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12226
12227         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12228         mono_verify_all is set.
12229
12230         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12231
12232         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12233
12234 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12235
12236         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12237         an exception.
12238
12239         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12240         verifier and the code generated by the compiler.
12241
12242 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12243
12244         * mini.c: Generic sharing of the non-nullable case of the box
12245         instruction.
12246
12247 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12248
12249         * inssel.brg: Fix the build.
12250
12251         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12252
12253 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12254
12255         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12256         Array:Address. Fixes #372410.
12257
12258         * iltests.il.in: New tests for readonly prefix.
12259
12260 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12263         mini-trampolines.c.
12264
12265         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12266         mini-exceptions.c.
12267
12268         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12269         
12270         * mini.c (mono_decompose_op_imm): New helper function.
12271
12272         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12273         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12274         return value.
12275
12276         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12277         mono_arch_output_basic_block. Fix warnings.
12278
12279         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12280         for now.
12281
12282 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12285         since the extra frame is now detected automatically inside the loop.
12286
12287         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12288         opts which are now in mono_peephole_ins ().
12289         
12290         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12291
12292         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12293         frames and skip duplicate managed-to-native frames. Fixes #367665.
12294
12295         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12296         opts which are now in mono_peephole_ins ().
12297         (mono_arch_peephole_pass_2): Ditto.
12298
12299         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12300
12301         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12302         arch independent peephole optimizations.
12303
12304         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12305         opts which are now in mono_peephole_ins ().
12306
12307         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12308         
12309         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12310
12311         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12312         pattern.
12313
12314         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12315         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12316         opcode. 
12317
12318 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12319
12320         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12321         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12322         return value.
12323
12324         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12325         mono_arch_output_basic_block. Fix warnings.
12326
12327 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12328
12329         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12330         conv.ovf.u.un.
12331
12332 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12333
12334         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12335         conv.ovf.u.un.
12336
12337         * iltests.il: Add new tests.
12338
12339 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12340
12341         * mini.c: Removed Windows version macros.
12342
12343 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12344
12345         * generic-sharing.c: Put reflection types in the extensible part
12346         of the runtime generic context.
12347
12348         * mini.c: Generic sharing of the GetTypeHandle special case of the
12349         ldtoken instruction.
12350
12351 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12352
12353         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12354
12355         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12356         
12357         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12358         consistency with the other version on the linear IR branch.
12359
12360         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12361
12362         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12363
12364         * iltests.il.in: Add new tests.
12365
12366 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12369
12370         * iltests.il.in: Add new tests.
12371
12372 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12373
12374         * mini.c: Two variables with the same name were declared in
12375         nesting contexts and one wasn't initialized.  Fixed.
12376
12377 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12378
12379         * mini.c: Generic sharing of the initobj instruction.
12380
12381 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12382
12383         * mini.c: make the test to optimize ldtoken from typeof() more
12384         precise.
12385
12386 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12387
12388         * mini.c: Generic sharing of the initobj instruction for reference
12389         types.
12390
12391 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12392
12393         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12394         the mono_breakpoint_clean_code() code to perform bound checks.
12395
12396 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12397
12398         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12399         mono_arch_patch_callsite() to include the start of the managed method
12400         to be able to perform bound checks.
12401
12402 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12403
12404         * mini.c: Generic sharing for the isinst instruction.
12405
12406 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12407
12408         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12409         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12410         with the runtime generic context argument.
12411
12412         * mini.c: Share calls to several types of unsharable methods by
12413         putting the address of the method code in the runtime generic
12414         context and doing an indirect call.
12415
12416         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12417         to switches.
12418
12419 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12420
12421         * generic-sharing.c: Change due to a change in the runtime genric
12422         context API.
12423
12424 2008-03-15  Martin Baulig  <martin@ximian.com>
12425
12426         * tramp-x86.c
12427         (mono_arch_nullify_class_init_trampoline): Add call to
12428         mono_breakpoint_clean_code() to make things work when running
12429         inside the debugger.
12430
12431         * tramp-amd64.c
12432         (mono_arch_nullify_class_init_trampoline): Add call to
12433         mono_breakpoint_clean_code() to make things work when running
12434         inside the debugger.
12435
12436 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * inssel-long.brg (reg): Fix 64 bit build.
12439
12440 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12441
12442         * mini.c, mini.h: Share static generic code by passing it an
12443         implicit argument pointing to the runtime generic context.
12444
12445         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12446         inssel-long32-mips.brg: New opcodes for calling shared static,
12447         which need to be passed the runtime generic context.
12448
12449         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12450         argument on the stack in the prologue if needed.  New function for
12451         finding the runtime generic context argument from the registers
12452         saved by the trampoline.
12453
12454         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12455         runtime generic context argument.
12456
12457         * tramp-amd64.c: Also restore the register used for the runtime
12458         generic context argument.
12459
12460         * mini-trampoline.c: Resolve shared static calls by consulting the
12461         runtime generic context via the new argument.
12462
12463         * generic-sharing.c: Add an argument to sharability-checking
12464         functions that specifies whether type variables should be treated
12465         as sharable type arguments.
12466
12467         * inssel-x86.brg: Removed a superfluous, buggy rule.
12468
12469         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12470         to switches.
12471
12472 2008-03-14  Martin Baulig  <martin@ximian.com>
12473
12474         * debug-debugger.c (main_thread_handler): Call
12475         mono_runtime_run_main() without sending any notifications.
12476
12477         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12478
12479 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12482
12483 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12484
12485         * tramp-x86.c: Fixed register restore offsets in the trampoline
12486         code for ECX and EDX.
12487
12488 2008-03-12  Geoff Norton  <gnorton@novell.com>
12489
12490         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12491         different ucontext_t implementations.
12492         * exceptions-arm.c: Use the above defines to get exceptions working on 
12493         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12494         * mini-arm.c: Implement iPhone icache support (based on a patch by
12495         Luke Howard lukeh@padl.com)
12496
12497 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12498
12499         * mini.c: Enable generic sharing of calls to non-static
12500         non-interface non-generic non-value-type methods.
12501
12502         * mini-trampolines.c: Resolve calls from shared generic code.
12503
12504 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12507
12508         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12509
12510 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12511
12512         * mini.c: some fixes for the AOT compiler.
12513
12514 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * cpu-amd64.md: Add clob:1 to some float opcodes.
12517
12518 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12519
12520         * mini.h: Added MiniVerifierMode enumeration.
12521
12522         * mini.c: Added mini_verifier_set_mode to control
12523         the usage of the new verifier.
12524
12525         * mini.c (mono_method): Integrated the new verifier.
12526
12527         * driver.c: Extended --security option with validil and
12528         verifiable options to activate the new verifier.
12529
12530 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12533         optimization to ctors taking 0 or 2 arguments too.
12534
12535         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12536         a bit.
12537
12538         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12539
12540         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12541
12542 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12543
12544         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12545         non-aot case as well.
12546
12547         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12548
12549         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12550         changes.
12551
12552         * aot-compiler.c (encode_patch): Ditto.
12553
12554         * mini.h (G_MININT32): Fix the definition of this.
12555
12556 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12557
12558         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12559
12560         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12561
12562 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12563
12564         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12565         methods returning vtypes in registers.
12566         (mono_arch_allocate_vars): Ditto.
12567
12568         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12569
12570         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12571
12572         * generics.cs: Add a test from the linear IR branch.
12573
12574         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12575
12576         * mini.c (inline_method): Cache failed inline attempts.
12577
12578 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12579
12580         * mini.c: For shared methods of generic classes put the location
12581         of "this" into the MonoGenericJitInfo.
12582
12583         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12584         register out of a MonoContext by register number.  Add the generic
12585         sharing context as an argument to mono_arch_find_this_argument().
12586
12587         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12588         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12589         for new arch function.
12590
12591         * mini-exception.c: Handle open exception clauses in shared
12592         generic code.
12593
12594         * mini-trampolines.c: Supply additional argument to
12595         mono_arch_find_this_argument().
12596
12597 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12598
12599         * Makefile.am (regtests): Run the bench.exe tests last.
12600
12601 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12602
12603         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12604         a bit.
12605
12606 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12609         with MS.
12610
12611         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12612         
12613         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12614
12615         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12616         whose class has no cctor.
12617
12618         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12619
12620 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12621
12622         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12623         unverified.
12624
12625 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12626
12627         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12628         to be in sync with the code on the linear IR branch.
12629
12630         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12631
12632         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12633
12634 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12635
12636         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12637
12638         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12639
12640         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12641
12642         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12643
12644         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12645         
12646         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12647         body.
12648
12649 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12650
12651         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12652         OP_LOADR4_MEMBASE emission.
12653
12654         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12655         (mono_spillvar_offset_float): Ditto.
12656
12657         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12658
12659         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12660         emission.
12661
12662         * basic-long.cs: Add regression tests for them.
12663
12664         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12665         use.
12666         (mono_arch_allocate_vars): Fix representation of single-precision float
12667         argument.
12668         (mono_arch_output_basic_block): Ditto.
12669
12670         * inssel-mips.brg: Ditto, remove duplicate items.
12671
12672         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12673         arguments of tail calls as on other platforms.
12674         (mono_arch_output_basic_block): Handle tail calls.
12675
12676         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12677         register.
12678
12679         * objects.cs (test_5_pass_static_struct): Add test for it.
12680
12681         Contributed under MIT/X11 license.
12682
12683 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12684
12685         * Makefile.am: Use gmcs for compiling the regression tests.
12686
12687         * *.2.cs *.2.il: Rename to *.cs and *.il.
12688
12689 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * regalloc.h: Make the vassign array smaller.
12692
12693         * mini.c (mini_method_compile): Remove an unused field in cfg.
12694
12695         * mini-codegen.c: Add a bunch of micro optimizations.
12696
12697 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * regalloc.h: Remove some unused fields.
12700
12701 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12704
12705         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12706
12707 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12708
12709         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12710
12711         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12712         trampoline: Fetch an entry from the runtime generic context.  If
12713         it's NULL, jump to the actual trampoline to fill the runtime
12714         generic context.  Otherwise, return it.
12715
12716         * mini.c: Call the lazy fetch trampoline to get entries out of the
12717         runtime generic context.
12718
12719         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12720         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12721         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12722
12723 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12724
12725         * mini.c: Fetch data out of the extensible part of the runtime
12726         generic context instead of calling a helper function.
12727
12728         * generic-sharing.c: Some functions moved into
12729         metadata/generic-sharing.c.  Helper function for fetching other
12730         types now checks and asserts against extensible rgctx (just for
12731         debugging purposes - the helper function isn't called anymore
12732         unless for debugging).
12733
12734 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12735
12736         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12737         for tail calls up to the point that the tests in iltests.exe run. Also add a
12738         dummy CKFINITE implementation.
12739         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12740         needed for trampoline LMF frames.
12741
12742         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12743         trampoline LMF frames.
12744
12745 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12746
12747         * mini.c (inline_method): clean any pending loader error when inlining fail.
12748         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12749
12750 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12753
12754         * aot-runtime.c (decode_patch_info): Ditto.
12755
12756         * mini.c (mono_resolve_patch_target): Ditto.
12757         
12758         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12759         icall wrappers.
12760
12761         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12762         
12763         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12764         if it references an icall address.
12765
12766 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12767
12768         * cpu-s390x.md: Remove some more unused opcodes.
12769         
12770         * cpu-s390x.md: Remove some unused opcodes.
12771
12772         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12773         mono_op_imm_to_op ().
12774
12775         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12776         instead of a switch statement.
12777         
12778         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12779         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12780
12781         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12782         
12783         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12784
12785         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12786         -1.
12787
12788 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12791         opened. Fixes #362607.
12792
12793         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12794
12795         * iltests.il.in: Add a test for static methods in interfaces.
12796
12797 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12798
12799         * genmdesc.c (build_table): Fix a crash on older glib versions.
12800
12801         * cpu-sparc.md: Remove some unused opcodes.
12802         
12803         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12804         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12805
12806         * cpu-amd64.md: Remove some unused opcodes.
12807
12808         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12809         like the other opcodes.
12810
12811 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12814
12815         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12816
12817         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12818         variables 'cfg' instead of 'm' for consistency.
12819
12820         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12821
12822         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12823         argument holding the vtype return address, to avoid the ambigious use of
12824         cfg->ret for this purpose.
12825
12826         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12827
12828         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12829         
12830         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12831         new mono_print_ins () function which only takes one argument.
12832
12833 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12834
12835         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12836         macro arguments.
12837
12838 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12839
12840         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12841
12842         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12843
12844         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12845         opcodes and other small changes.
12846
12847         * mini-ops.h: Add some new opcodes from the linear IR branch.
12848
12849         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12850
12851         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12852         opcodes, use the REG_MEMBASE opcodes instead.
12853         
12854         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12855         opcodes, use the REG_MEMBASE opcodes instead.
12856         
12857         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12858         linear IR branch.
12859
12860         * mini.c (mono_op_imm_to_op): New helper function.
12861
12862         * mini-ops.h: Add some opcodes from linear IR branch.
12863
12864 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12867         <tsv@solvo.ru>.
12868
12869 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12872         OP_ICONV_TO_R4/R8.
12873
12874         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12875
12876 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12877
12878         * aot-compiler.c (emit_method_code): Add an assert.
12879
12880         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12881         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12882         methods.
12883
12884 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12885
12886         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12887         some load/store opcodes so they are consistent. 
12888         (mono_arch_emit_prolog): Simplify some code.
12889
12890         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12891
12892         * objects.cs: Add tests for large argument offsets on ARM.
12893
12894         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12895         stack offsets. Fixes #359651.
12896
12897         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12898
12899         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12900
12901         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12902
12903         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12904
12905         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12906
12907         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12908         rid of CEE_CONV_R_UN.
12909
12910         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12911
12912 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12915
12916         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12917
12918         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12919
12920         * cpu-amd64.md: Remove some unused opcodes.
12921
12922         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12923
12924         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12925
12926         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12927         arch specific functions for its parts. Call the peephole pass after local
12928         regalloc so the prolog can compute a more accurate max_offset.
12929         
12930         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12931         the corresponding OP_I/OP_L opcodes.
12932
12933         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12934
12935         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12936
12937 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12940         as they are handled in mini.c.
12941
12942         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12943         
12944         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12945         case since it is handled in mini.c.
12946
12947         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12948
12949         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12950
12951         * *.c: Use the new opcodes in the IR and back end code.
12952
12953         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12954
12955         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12956
12957 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12958
12959         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12960         an assert because it has a race condition.
12961
12962 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12963
12964         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12965
12966         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12967
12968         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12969
12970         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12971         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12972
12973 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * cpu-amd64.md (move): Correct the maximum size of move.
12976
12977 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12978
12979         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12980         the generic class init trampoline to return quickly if the class
12981         is already inited.
12982
12983 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12984
12985         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12986         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12987
12988 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12989
12990         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12991         branch.
12992
12993 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12994
12995         * objects.cs: Add some soft-float tests.
12996
12997         * mini.c: Fix a couple more soft-float issues.
12998
12999         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13000
13001         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13002         avoid a REX prefix.
13003
13004 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13007         exception happens while compiling a virtual method.
13008
13009 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13012         
13013         * mini-sparc.c: Fix build.
13014
13015         * mini-sparc.c (get_call_info): Add support for generic sharing.
13016
13017         * mini-exceptions.c: Add a FIXME.
13018
13019 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13020
13021         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13022         altstack handling code.
13023
13024         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13025         
13026         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13027
13028         * mini-s390.c: Add support for generic sharing.
13029
13030         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13031         Fix CAS on s390.
13032         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13033
13034         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13035
13036         * mini-s390x.c: Add support for generic sharing.
13037         
13038         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13039         Fix CAS on ia64.
13040         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13041
13042         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13043         can be used since it takes a 16 bit signed immediate.
13044
13045         * inssel-s390x.brg: Fix OP_SETRET.
13046
13047         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13048
13049         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13050
13051         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13052
13053         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13054
13055         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13056         in one place.
13057
13058         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13059         stuff.
13060
13061         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13062         of the unused mono_arch_patch_delegate_trampoline stuff.
13063
13064 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13065
13066         * basic-long.cs: Move the fp related tests to basic-float.cs.
13067
13068         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13069
13070         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13071
13072         * basic-calls.cs: Add a test for proper float argument passing.
13073
13074         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13075         if the context corresponds to an exception received through a signal.
13076
13077         * exceptions.cs: Add a test for nullref handling at the start of a try
13078         clause.
13079
13080         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13081
13082         * jit-icalls.c (mono_break): New JIT icall.
13083
13084         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13085
13086         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13087
13088 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * cpu-*.md: Get rid of unused opcodes.
13091
13092         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13093
13094         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13095         by all platforms.
13096
13097         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13098         define.
13099
13100         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13101         the arch independent trampoline code in mini-trampolines.c.
13102
13103         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13104
13105         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13106
13107         * mini-s390.h: Remove an unused define.
13108         
13109         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13110         the arch independent trampoline code in mini-trampolines.c.
13111
13112         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13113
13114 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13115
13116         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13117
13118         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13119
13120         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13121
13122         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13123
13124         * cpu-amd64.md: Use smaller sizes for int opcodes.
13125
13126         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13127
13128         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13129         objects.cs.
13130
13131         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13132         debugging.
13133
13134         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13135         instead of though a pointer to save an indirection when accessing elements of
13136         the array.
13137
13138         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13139         some typos.
13140         (NOT_IMPLEMENTED): New helper macro.
13141         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13142         of a bb.
13143
13144         * *.c: Use the new helper macro.
13145
13146 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13149
13150 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13151
13152         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13153         stack slots.
13154
13155 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13156
13157         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13158         profiling is enabled.
13159         
13160         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13161         the end.
13162         (mono_arch_emit_prolog): Add more first bblock optimizations.
13163
13164         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13165         in order if possible.
13166         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13167         bblock, since the arguments are still in their original registers.
13168
13169         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13170
13171 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13174         as well.
13175
13176         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13177         offset 0.
13178
13179         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13180
13181         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13182         process async exceptions received while in unmanaged code.
13183
13184         * mini.c (mini_init): Install a callback with the runtime which will be called
13185         when a thread receives an async exception while in unmanaged code.
13186
13187         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13188
13189         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13190
13191 2008-01-16  Wade Berrier  <wberrier@novell.com>
13192
13193         * cpu-g4.md:
13194         * cpu-arm.md:
13195         * cpu-s390x.md:
13196         fix build
13197
13198 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13201         compilation with sun cc.
13202
13203         * cpu-*.md: Fix the build.
13204
13205         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13206
13207         * mini-amd64.h: Add some comments to the MonoLMF structure.
13208
13209         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13210         
13211         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13212         in the LMF structure if possible. This saves two instructions in the
13213         managed->native wrappers.
13214
13215         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13216
13217 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13218
13219         * generic-sharing.c: New type argument lookup code which uses the
13220         runtime generic context template.
13221
13222 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13225
13226         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13227         (mono_arch_output_basic_block): Fix localloc implementation.
13228
13229         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13230
13231         * mini-ia64.c (peephole_pass): Fix ia64 build.
13232
13233         * mini-amd64.c (peephole_pass): Fix a warning.
13234         
13235         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13236         at a constant offset from sp/fp.
13237
13238         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13239         instead of obtaining it from *lmf in the managed method case.
13240
13241 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13242
13243         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13244
13245 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13246
13247         * mini.h (MonoInstList): New type.
13248         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13249         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13250         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13251         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13252         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13253         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13254         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13255         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13256         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13257         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13258         MONO_INST_LIST_FOR_EACH_ENTRY,
13259         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13260         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13261         mono_inst_list_first, mono_inst_list_last,
13262         mono_inst_list_next, mono_inst_list_prev): New instruction
13263         list handling interfaces.
13264         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13265         list head 'ins_list'.
13266         (MonoInst): Replace next pointer with list head 'node'.
13267         (MonoCallInst): Make 'out_args' a MonoInstList.
13268         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13269         (MonoCompile): Delete reverse_inst_list and
13270         reverse_inst_list_len.
13271         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13272         mono_arch_lowering_pass, mono_arch_local_regalloc,
13273         mono_arch_output_basic_block, mono_arch_emit_prolog):
13274         Convert to new instruction lists.
13275         (insert_after_ins): Delete.
13276         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13277         instruction lists.
13278         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13279         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13280         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13281         mono_emulate_opcode, mono_emit_load_got_addr,
13282         inline_method, mono_method_to_ir, mono_print_bb_code,
13283         print_dfn, decompose_pass, nullify_basic_block,
13284         replace_out_block_in_code, remove_block_if_useless,
13285         merge_basic_blocks, move_basic_block_to_end,
13286         try_unsigned_compare, optimize_branches, mono_print_code,
13287         mini_select_instructions, remove_critical_edges): Likewise.
13288         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13289         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13290         mono_arch_output_basic_block, mono_arch_emit_prolog):
13291         Likewise.
13292         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13293         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13294         mono_arch_output_basic_block): Likewise.
13295         (inst_list_prepend, insert_after_ins): Delete.
13296         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13297         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13298         instruction lists.
13299         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13300         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13301         mono_arch_emit_prolog): Likewise.
13302         * cfold.c (mono_constant_fold): Likewise.
13303         * liveness.c (visit_bb, mono_analyze_liveness,
13304         optimize_initlocals): Likewise.
13305         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13306         * graph.c (mono_draw_code_cfg): Likewise.
13307         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13308         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13309         mono_ssa_cprop): Likewise.
13310         * abcremoval (get_relations_from_previous_bb, process_block):
13311         Likewise.
13312         * local-propagation (mono_cprop_invalidate_values,
13313         mono_local_cprop_bb): Likewise.
13314         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13315         peephole_pass, mono_arch_output_basic_block,
13316         mono_arch_emit_prolog): Likewise.
13317         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13318         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13319         mono_arch_emit_prolog): Likewise.
13320         (insert_after_ins): Delete.
13321         * aliasing.c (print_code_with_aliasing_information,
13322         mono_build_aliasing_information, mono_aliasing_deadce):
13323         Convert to new instruction lists.
13324         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13325         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13326         mono_arch_local_regalloc, mono_arch_output_basic_block):
13327         Likewise.
13328         (insert_after_ins): Delete.
13329         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13330         peephole_pass, mono_arch_output_basic_block): Convert to
13331         new instruction lists.
13332         * mini-codegen (InstList, inst_list_prepend,
13333         insert_after_ins): Delete.
13334         (insert_before_ins, get_register_force_spilling,
13335         get_register_spilling, free_up_ireg, free_up_reg,
13336         create_copy_ins, create_spilled_store, alloc_int_reg,
13337         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13338         to new instruction lists.
13339         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13340         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13341         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13342         (insert_after_ins): Delete.
13343         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13344         mono_arch_local_regalloc, mono_arch_output_basic_block,
13345         mono_arch_call_opcode): Convert to new instruction lists.
13346         (insert_after_ins): Delete.
13347         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13348         peephole_pass, mono_arch_output_basic_block,
13349         mono_arch_emit_prolog): Convert to new instruction lists.
13350
13351 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13354
13355         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13356         Fixes #353182.
13357
13358         * Makefile.am (version.h): Make this work with non-bash shells.
13359
13360 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13361
13362         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13363
13364 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13365
13366         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13367         the InitializeArray optimization.
13368
13369 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini.c driver.c: Don't include os/gc_wrapper.h.
13372
13373 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * mini.c (print_jit_stats): Print GC statistics if available.
13376
13377 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13378
13379         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13380
13381 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13382
13383         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13384
13385 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13388         
13389         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13390
13391         * driver.c (mono_main): Ditto.
13392
13393 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13396
13397         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13398         in the vtable can't be encoded.
13399         (compile_method): Ditto.
13400
13401 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13402
13403         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13404         defined.
13405
13406         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13407         lmf->rbp.
13408
13409         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13410         the top LMF entry belongs to the current method.
13411
13412         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13413
13414 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13415
13416         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13417         
13418         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13419
13420         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13421
13422         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13423
13424         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13425
13426         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13427         implementation.
13428
13429         * basic-float.cs: Add an ulong->double cast test.
13430
13431 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13432
13433         * mini.c (mono_method_to_ir): Fix a warning.
13434
13435 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13436
13437         * mini-ops.h: Add OP_SWITCH.
13438
13439         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13440         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13441
13442 2007-12-11  Geoff Norton  <gnorton@novell.com>
13443
13444         * mini-s390x.c: Minor change to the MAX() define to allow
13445         it to compile with other gcc versions.
13446
13447 2007-12-11  Geoff Norton  <gnorton@novell.com>
13448
13449         * cpu-s390x.md:
13450         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13451
13452 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13453
13454         exceptions-arm.c (mono_arch_get_restore_context): Restore
13455         the frame pointer.
13456
13457         exceptions-arm.c (throw_exception): Save the frame pointer.
13458         This is a partial fix for #323747. Only the client side is
13459         fixed.
13460
13461 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13462
13463         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13464         was using an unrelated variable to log the class which
13465         needed the cctor to be called. This was crashing on arm.
13466
13467 2007-12-09  Robert Jordan  <robertj@gmx.net>
13468
13469         * mini-x86.c (mono_arch_emit_epilog):
13470         Consider all kinds of 64-bit types. Fixes #323114.
13471
13472 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13473
13474         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13475
13476 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13479
13480 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13481
13482         * mini.c: run type ctor before allocating an object, not only
13483         when running it's constructor method (fixes at least part of bug #342507).
13484
13485 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13486         
13487         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13488         
13489         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13490         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13491         function.
13492
13493         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13494         mono_generic_class_init_trampoline () the same as it is done with the other
13495         trampolines.
13496
13497         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13498         aot-runtime.c aot-compiler.c: Implement AOT support.    
13499
13500 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13501
13502         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13503         build for archs which don't have the vtable trampoline defined
13504         yet.
13505
13506 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13509
13510         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13511
13512         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13513
13514         * tramp-<ARCH>.c: Use the new helper function.
13515
13516 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13517
13518         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13519         trampoline call, which takes a vtable argument.
13520
13521         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13522         OP_TRAMPCALL_VTABLEs like other calls.
13523
13524         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13525         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13526         call.  Implemented a support function which fetches the vtable
13527         from a register set.
13528
13529         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13530         Implemented a generic class init trampoline, using the
13531         OP_TRAMPCALL_VTABLE opcode.
13532
13533         * mini.c: Implemented static field access when sharing generic
13534         code.  This implies initing the class using the new
13535         OP_TRAMPCALL_VTABLE call.
13536
13537 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13538
13539         * mini.c: Don't compile methods with sharing enabled if their
13540         classes are disabled for sharing.
13541
13542 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13545         opcodes. Fixes #346563.
13546
13547         * objects.cs: Add a new test.
13548
13549         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13550
13551         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13552         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13553
13554 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13557
13558 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13559
13560         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13561         code stream.
13562
13563 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13566
13567         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13568         optimization in the AOT case.
13569         
13570 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13573         
13574         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13575
13576         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13577
13578         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13579
13580         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13581         is created by the inlined delegate ctor.
13582
13583         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13584
13585         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13586
13587 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13588
13589         * cpu-x86.md: Fix the length of ckfinite.
13590
13591 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13592
13593         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13594         
13595         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13596         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13597
13598         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13599
13600         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13601         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13602
13603 2007-11-28  Martin Baulig  <martin@ximian.com>
13604
13605         * mini-x86.c
13606         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13607         after creating the trampoline.
13608
13609 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13610
13611         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13612
13613         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13614         the same version.
13615
13616         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13617         instead of the calling method to help AOT.
13618
13619         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13620
13621 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13624         is defined.
13625
13626 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13629         
13630         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13631         (encode_method_ref): No need to handle generic method definitions specially.
13632
13633         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13634
13635         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13636         decode_klass_info.
13637
13638         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13639         encode_klass_info.
13640         (compile_method): Enable generic sharing.
13641
13642 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13645         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13646
13647         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13648         generic code.
13649
13650         * mini-trampolines.c: Fix a warning.
13651
13652         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13653         NEW_PCONST.
13654         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13655         (generic_class_is_reference_type): Remove unused function.
13656
13657         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13658         in the generic vtable trampoline case.
13659
13660         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13661         
13662         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13663         return an AOT method based on a vtable slot.
13664
13665         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13666
13667         * mini.c (mini_get_vtable_trampoline): Export this.
13668
13669 2007-11-22  Martin Baulig  <martin@ximian.com>
13670
13671         * debug-debugger.h
13672         (MonoDebuggerInfo): Move `debugger_version' up.
13673
13674 2007-11-22  Martin Baulig  <martin@ximian.com>
13675
13676         * mini-amd64.c
13677         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13678
13679         * mini-trampolines.c
13680         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13681         after compiling the method.
13682
13683 2007-11-20  Martin Baulig  <martin@ximian.com>
13684
13685         * debug-mini.c
13686         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13687         (mono_debugger_remove_breakpoint): Likewise.
13688         (mono_debugger_check_breakpoints): Likewise.
13689
13690         * debug-debugger.c: Implement the new breakpoint interface here.
13691
13692 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13693
13694         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13695         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13696
13697         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13698
13699 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13700
13701         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13702
13703         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13704         mini.c.
13705
13706         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13707         mini.c.
13708
13709         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13710         returning a vtype in a register.
13711
13712         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13713         here from the arch specific code.
13714
13715         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13716         mini.c.
13717
13718         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13719         (mono_arch_emit_prolog): Increment maximum prolog size.
13720
13721         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13722         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13723
13724         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13725         MonoGenericSharingContext.
13726
13727         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13728         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13729
13730 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13731
13732         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13733         which extract fields out of the runtime generic context.  Full
13734         sharing of the NEWARR opcode.
13735
13736 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13737
13738         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13739         --enable-minimal=ssa.
13740
13741 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13744         mono_marshal_get_delegate_invoke () signature change.
13745
13746 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13747
13748         * mini.c: Removed the shared context in favor of the generic
13749         sharing context.  Allocate the MonoJitInfo structure with room for
13750         the generic sharing context if it's needed.
13751
13752         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13753         domain-internals.h now.
13754
13755         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13756
13757         * generic-sharing.c: Several changes for working without a shared
13758         context and instead operating on open types instead.
13759
13760 2007-11-12  David S. Miller  <davem@davemloft.net>
13761
13762        * inssel-sparc.brg: Fix double instruction emit.
13763
13764 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13765
13766         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13767         Get/Set/Address methods.
13768         
13769         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13770         mono_marshal_get_delegate_invoke signature change.
13771
13772 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13773
13774         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13775         This can happens with dynamic methods. Fixes the other bug in #322722.
13776
13777 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13778
13779         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13780         BX call sequence.
13781
13782         * mini-arm.c (arm_patch): Implement patching of BX call
13783         sequence. Fixes one of the bugs in #322722.
13784
13785 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13786
13787        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13788        under Linux.  We only need to flush every 32-byte cache line.    
13789
13790 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13791
13792         * mini.c:
13793         move_basic_block_to_end: Add branches when needed, eventually creating
13794         a new BB.
13795         optimize_branches: added a parameter that tells if it's ok to create
13796         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13797         and avoid calling move_basic_block_to_end when it's not ok.
13798         Fixes bug 318677.
13799
13800 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13801
13802         * mini.c: Abort inlining call to InitializeArray if something
13803         looks wrong.  Let the icall handle it, which now has proper safety
13804         checks.
13805
13806 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13807
13808         * mini.c (mono_spill_call): add support for soft-float.
13809
13810         * mini.c (mono_method_to_ir): add support for soft-float
13811         to inlined functions that return float.
13812
13813         * mini.c (mono_method_to_ir): add support for soft-float
13814         to cee_stsfld opcode on float fields.
13815
13816 2007-11-05  Geoff Norton  <gnorton@novell.com>
13817
13818         * mini-x86.h: Fix the structure access for X86 Leopard.
13819
13820
13821 2007-11-05  Martin Baulig  <martin@ximian.com>
13822
13823         * mini-trampolines.c
13824         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13825         after compiling the method to notify the debugger.
13826
13827 2007-11-05  Martin Baulig  <martin@ximian.com>
13828
13829         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13830
13831 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13834         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13835
13836 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13839         native-to-managed wrappers.
13840         
13841 2007-11-01  Geoff Norton  <gnorton@novell.com>
13842
13843         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13844         members.
13845
13846 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13847
13848         * mini.c, mini-x86.c: when getting back from unmanaged code
13849         to managed via a marshaled delegate we also need to set the
13850         right domain.
13851
13852 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13853
13854         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13855         for amd64.
13856
13857 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13858
13859         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13860         let the debugger or other external agents to tell the JIT when
13861         a sw breakpoint has been inserted in the code that the JIT needs
13862         to be able to inspect.
13863
13864 2007-10-31  Martin Baulig  <martin@ximian.com>
13865
13866         * debug-debugger.h
13867         (MonoDebuggerInfo): Remove `runtime_class_init'.
13868
13869 2007-10-30  Martin Baulig  <martin@ximian.com>
13870
13871         * debug-mini.h
13872         (mono_debugger_thread_created): Added `MonoThread *' argument.
13873         (mono_debugger_extended_notification): New public method.
13874         (mono_debugger_trampoline_compiled): New public method.
13875
13876         * debug-mini.c
13877         (MonoDebuggerThreadInfo): Added `thread' and
13878         `extended_notifications' fields.
13879
13880         * debug-debugger.c
13881         (debugger_executable_code_buffer): New static variable.
13882
13883         * debug-debugger.h
13884         (MonoDebuggerInfo): Added `executable_code_buffer',
13885         `executable_code_buffer_size', `breakpoint_info_area',
13886         `breakpoint_table' and `breakpoint_table_size'.
13887
13888 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13889
13890         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13891         that IP  either is an unused value or the vtable pointer. IMT 
13892         calls use vtable + offset now. Reduced by almost half the size
13893         of IMT entries.
13894
13895 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13896
13897         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13898         defines to access param registers. Replace long usage with
13899         gsize as sizeof(long) != sizeof(void*) on Win64.
13900
13901         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13902         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13903         instead of non-existant _GetAddressOfReturnAddress.
13904
13905         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13906         param registers. Save/restore %rdi and %rsi in MonoLMF.
13907
13908         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13909         param registers. Modify (throw_exception) signature to take 
13910         %rdi and %rsi on Win64. 
13911
13912         Code is contributed under MIT/X11 license.
13913
13914 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13915
13916         * helpers.c: unlink debugging output files.
13917
13918 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13919
13920         * mini.c: Move mono_create_ftnptr () to object.c.
13921
13922 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13923
13924         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13925         optional. This function can now be used to disassemble code generated
13926         outside the JIT such as trampolines and IMT thunks.
13927
13928         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13929
13930         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13931         vtable pointer from a ldr instruction.
13932
13933         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13934         new IMT call sequence.
13935
13936         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13937         call sequence for interface invocations.
13938
13939         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13940         for imt support. This function is empty since IMT on ARM requires no
13941         special handling on the IR side.
13942
13943         * mini-arm.c (mono_arch_find_imt_method): added, required for
13944         imt support.
13945
13946         * mini-arm.c (mono_arch_find_this_argument): added, required
13947         for imt support.
13948
13949         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13950         a ldr instruction to load a value stored in the code stream.
13951
13952         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13953         for imt support.
13954
13955
13956 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * mini.c (mini_init): Install the jump trampoline callback.
13959
13960 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13961
13962         * mini-trampolines.c: handle synchronized methods with the common
13963         vtable trampoline (bug #335601).
13964
13965 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13968
13969         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13970         64 bit platforms.
13971
13972         * mini-ia64.h mini-ia64.c: Add support for IMT.
13973
13974         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13975         prolog. Fixes #331958.
13976
13977 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13978
13979         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13980
13981 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13982
13983         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13984         trampoline.
13985
13986 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13987
13988         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13989         trampoline.
13990
13991 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13992
13993         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13994         trampoline.
13995
13996 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13997
13998         * mini-trampolines.c: changed the magic rampoline to understand
13999         the common vtable trampoline method: the method to invoke is
14000         determined by the vtable displacement of the call.
14001
14002 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14003
14004         * mini.c, mini.h: register the common vtable trampoline if the
14005         architecture supports it.
14006
14007 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14008
14009         * cpu-amd64.md: use the correct max length for tls_get.
14010
14011 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14014         CEE_STELEM_ANY. Fixes #333696.
14015
14016 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14017
14018         * exceptions-x86.c: provide more graceful handling of the case where
14019         we followed a bogus function pointer from managed code (bug #332866).
14020
14021 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14022
14023         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14024         replaces the generic_shared flag and will carry more information
14025         in the future.
14026
14027         * generic-sharing.c: Added mini_type_stack_size() which allows
14028         allows open types if given a generic sharing context.
14029         mini_get_basic_type_from_generic() takes a
14030         MonoGenericSharingContext* instead of a MonoCompile* now.
14031
14032         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14033         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14034         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14035         changes above.  Just passing arguments through to the right
14036         places.
14037
14038 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14039
14040         * mini-arm.c: unify the call emission to emit_code_seq().
14041
14042 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14043
14044         * tramp-arm.c: reduced the trampoline size.
14045
14046 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14047
14048         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14049         variable handling out of arch-specific code.
14050
14051 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14052
14053         * mini-arm.c: implemented fast delegate dispatch.
14054
14055 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14058         that fp elimination is turned off if the space required by locals is too
14059         big. Fixes #331958.
14060
14061 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14062
14063         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14064         ARM to the new style trampoline.
14065
14066 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14069
14070         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14071
14072 2007-10-09  Martin Baulig  <martin@ximian.com>
14073
14074         * debug-debugger.h
14075         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14076         `field_info_offset_offset'.     
14077
14078 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14079
14080         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14081         removed more internal usage of the r11 register and made it available
14082         to the register allocator.
14083
14084 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14085
14086         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14087         when sharing generics and treat type variables as references.
14088
14089 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14090
14091         * mini-ppc.c: started removing the internal uses of register r11
14092         to eventually allow the register allocator to manage it as an
14093         additional available register.
14094
14095 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14096
14097         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14098
14099 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14100
14101         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14102         specific trampolines as they are not performance critical as a jump
14103         target (maybe align as before only for AOT code?). This saves about
14104         200 KB of native code on x86 for monodevelop startup.
14105
14106 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14107
14108         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14109         monodevelop startup.
14110
14111 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14112
14113         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14114
14115         * mini-sparc.h mini-sparc.c: Implement IMT support.
14116
14117         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14118         its smaller and doesn't clobber sparc_g1.
14119
14120         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14121
14122 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14123
14124         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14125
14126 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14127
14128         * mini-ppc.c: implemented fast delegate invocation.
14129
14130 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14131
14132         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14133
14134 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14135
14136         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14137         code to the new style trampoline in preparation for IMT support.
14138
14139 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14140
14141         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14142         systems already. This also reduces the specific trampiline sizes and
14143         prepares for the use of r12 as the IMT identifier register.
14144
14145 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14146
14147         * mini-mips.h: endianess fix (simplified from a patch by
14148         Thomas Kunze <thommy@tabao.de>, bug #323737).
14149
14150 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14151
14152         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14153         to access ucontext fields and enable netbsd support
14154         (partially from Magnus Henoch <mange@freemail.hu>).
14155
14156 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14157
14158         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14159         use the preprocessor from the CPP env var if it is set.
14160
14161 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14162
14163         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14164         code, before interface_offset gets used.
14165
14166 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14169         mono_class_setup_vtable () before accessing klass->vtable.
14170
14171 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14172
14173         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14174         hackish.
14175
14176 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14177
14178         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14179         IMT slots (this saves hundreds of KB of memory in programs like
14180         IronPython and Monodevelop).
14181
14182 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14183
14184         * mini.c: print the delegate counter.
14185
14186 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14187
14188         * mini-x86.c: make it easier to enable the debugging code for IMT
14189         slots.
14190
14191 2007-09-28  Martin Baulig  <martin@ximian.com>
14192
14193         * debug-debugger.h
14194         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14195         `mono_method_klass_offset' and `mono_method_token_offset'.
14196
14197 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14198
14199         * mini.c: First generics sharing implementation.  Can only share
14200         in very simple cases.  If sharing doesn't work it falls back to
14201         dedicated compilation.
14202
14203         * mini.h: Flag in MonoCompile to specify whether generic
14204         compilation is shared.  Flags enum for marking which generic inst
14205         of a context is used.  Prototypes for helper functions.
14206
14207         * generic-sharing.c: Helper functions for generic method sharing.
14208
14209         * optflags-def.h: Optimization flag (gshared) for enabling generic
14210         method sharing added.
14211
14212         * Makefile.am: generic-sharing.c added.
14213
14214 2007-09-19 Daniel Nauck <dna@mono-project.de>
14215
14216         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14217
14218 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14219         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14220         fixes bug 325507.
14221
14222 2007-09-19  Martin Baulig  <martin@ximian.com>
14223
14224         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14225         mono_debug_cleanup() is now part of mono_cleanup().
14226
14227 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * driver.c (mono_main): Fix a warning.
14230
14231 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14232
14233         * aot-compiler.c: Optimize various parts when processing large assemblies.
14234         Fixes ##325568.
14235
14236         * mini.c (mono_patch_info_hash): Improve hash function.
14237
14238 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14239
14240         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14241         
14242         Code is contributed under MIT/X11 license.
14243
14244 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * mini.c (mini_init): Fix a leak.
14247
14248         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14249
14250 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14251
14252         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14253
14254 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14255
14256         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14257
14258 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14259
14260         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14261         variance tests.
14262
14263         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14264
14265         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14266
14267         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14268
14269         * aot-runtime.c (decode_patch_info): Ditto.
14270
14271 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14272
14273         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14274         static case. Cache delegates in architecture specific code, 
14275         based on number of parameters.
14276         
14277         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14278         in architecture specific code, based on number of parameters.
14279         
14280         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14281         caching happen in architecture specific code now.
14282         
14283         Code is contributed under MIT/X11 license.
14284
14285 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14286
14287         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14288         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14289         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14290
14291         Code is contributed under MIT/X11 license.
14292
14293 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14294         * mini.c: (mono_thread_abort) Fixed bug #82416.
14295
14296 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14297
14298         * mini.: hook the new managed GC allocation feature into the JIT.
14299
14300 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.c: implementation for the new runtime tls opcode.
14303
14304 2007-09-11  Martin Baulig  <martin@ximian.com>
14305
14306         * debug-debugger.h
14307         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14308         `mono_method_inflated_offset'.
14309
14310 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14313         async exceptions into a method.
14314
14315         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14316         purpose of testing whenever the unwinder works at every instruction.
14317
14318 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14319
14320         * mini.c: check accessibility of method used in ldftn (fixes
14321         bug #82635).
14322
14323 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14324
14325         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14326
14327         * inssel.brg: Fix a warning.
14328
14329 2007-09-03  Martin Baulig  <martin@ximian.com>
14330
14331         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14332         now takes the `main_method' as argument.
14333
14334 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14335
14336         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14337
14338 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14339
14340         * driver.c: include the cil-coff.h header on Windows.
14341         
14342         Code is contributed under MIT/X11 license.
14343
14344 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14345
14346         * mini.c, driver.c: don't include the cil-coff.h header.
14347
14348 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14349
14350         * mini.c: flag places that needs fixes fo soft-float support.
14351
14352 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14353
14354         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14355         endian systems (partially from Dean Jenkins, bug #81924).
14356
14357 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14358
14359         * mini.c (check_linkdemand): Remove embedded reference object in
14360         call to LinkDemandSecurityException.
14361         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14362         with an IntPtr instead of a reference object.
14363
14364 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14365
14366         * mini.c (handle_initobj): Handle alignment properly.
14367
14368         * inssel.brg (mini_emit_memset): Ditto. 
14369
14370         * inssel.brg (mini_emit_memcpy): Ditto. 
14371
14372         * inssel-sparc.brg: Ditto.              
14373
14374         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14375
14376 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14377
14378         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14379         exceptions raised in unmanaged code. Fixes part of #82594.
14380
14381 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14382
14383         * mini.c (mono_method_to_ir), declsec.c
14384         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14385
14386 2007-08-22  Martin Baulig  <martin@ximian.com>
14387
14388         * debug-mini.h
14389         (MonoDebuggerThreadInfo): New typedef.
14390         (mono_debugger_thread_table): New global variable.
14391         (mono_debugger_thread_created): New public function.
14392         (mono_debugger_thread_cleanup): New public function.
14393
14394         * debug-debugger.h
14395         (MonoDebuggerInfo):
14396         - removed `get_current_thread' and `lookup_assembly'.
14397         - removed `data_table'.
14398         - added `thread_table'.
14399
14400         * mini.c
14401         (mono_thread_start_cb): Call mono_debugger_thread_created().
14402         (mono_thread_attach_cb): Likewise.
14403         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14404         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14405         initial domain.
14406
14407         * driver.c (mono_main): Move mono_debug_init() up, before calling
14408         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14409
14410 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14411
14412         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14413         together when passing several arguments of type double (gives a small
14414         speedup and saves a few bytes of generated code).
14415
14416 2007-08-20  Jb Evain  <jbevain@novell.com>
14417
14418         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14419
14420 2007-08-20  Jb Evain  <jbevain@novell.com>
14421
14422         * mini.c (mono_method_to_ir): throw MethodAccessException
14423         and FieldAccessException instead of InvalidProgramException.
14424
14425 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14426
14427         * mini.c: CoreCLR security checks.
14428
14429         * mini.h: Removed MonoSecurityMode (moved to
14430         metadata/security-manager.h) and mono_security_mode global var
14431         (replaced by set/get functions in security-manager.h).
14432
14433         * driver.c: Added "core-clr-test" security mode for testing.  Used
14434         set-function for setting security mode.
14435
14436 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14437
14438         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14439         the new jit_info_table.
14440
14441         * driver.c: Test code for the new jit_info_table (enabled by the
14442         define MONO_JIT_INFO_TABLE_TEST).
14443
14444 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14445
14446         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14447         detection of call <REG> instruction sequence. Fixes build on freebsd.
14448
14449 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14450
14451         * mini-exceptions.c: Fix a warning.
14452
14453 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14456         stack overflow handling code on amd64 too.
14457
14458         * mini-exceptions.c (mono_setup_altstack): Make this use 
14459         mono_thread_get_stack_bounds ().
14460
14461         * mini-x86.h: Disable sigaltstack on solaris x86.
14462
14463 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14464
14465         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14466
14467 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14468
14469         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14470
14471 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14472
14473         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14474
14475         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14476
14477 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14478
14479         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14480         due to alignment.
14481
14482 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14483
14484         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14485         to be emitted (bug #82281).
14486
14487 2007-08-01  Martin Baulig  <martin@ximian.com>
14488
14489         Merged the `debugger-dublin' branch.
14490
14491         * debug-debugger.h (MonoDebuggerInfo):
14492         Removed the `old_*' compatibility entries.
14493         Added `debugger_version' and `data_table'.
14494         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14495         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14496
14497         * debug-mini.c
14498         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14499         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14500         instead of a `gconstpointer'.
14501         (mono_debugger_insert_method_breakpoint): Return a
14502         `MonoDebugMethodAddressList *'.
14503
14504 2007-06-28  Martin Baulig  <martin@ximian.com>
14505
14506         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14507
14508 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14509
14510         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14511         __builtin_frame_address () since it is broken on older gcc versions.
14512
14513 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14514
14515         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14516         on the stack overflow handling and made the managed stack overflows
14517         catchable in most cases using soft guard pages.
14518         * exceptions-x86.c: added code to restore the protection in the soft
14519         guard pages at the end of exception handling.
14520
14521 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14522
14523         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14524
14525 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14526
14527         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14528         exception handling.
14529
14530 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14531
14532         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14533         signal handling support until it has been ported to the new mechanism.
14534         * mini.c: fixed stack overflow detection and use the new
14535         architecture code  to handle signals on the altstack.
14536
14537 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14538
14539         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14540         stack overflows on the alt stack.
14541
14542 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14543
14544         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14545         stack overflows on the alt stack.
14546
14547 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14548
14549         * exceptions-ppc.c: cleanup preparing for altstack support.
14550
14551 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14552
14553         * exceptions-arm.c: cleanup preparing for altstack support.
14554
14555 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14556
14557         * mini.c (print_jit_stats): Output hazard pointer stats.
14558
14559 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14560
14561         * driver.c, mini.c: Replaced security mode flags with a single
14562         enum variable.
14563
14564 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14565
14566         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14567
14568 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14569
14570         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14571         (which doesn't do anything yet) for activating Core CLR
14572         (Silverlight) security.
14573
14574 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14575
14576         * mini-codegen.c: work around a possible gcc bug on arm.
14577
14578 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14579
14580         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14581         message for platforms that don't support AOT compilation.
14582
14583 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14584
14585         * mini.h, mini.c, driver.c: temporary smcs hack.
14586
14587 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14588
14589         * mini-arm.h, mini-arm.c: arm EABI fixes.
14590
14591 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14592
14593         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14594         case.
14595
14596         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14597         trampolines taking a method argument.
14598
14599         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14600
14601         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14602         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14603
14604         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14605         JIT compilation throws an exception. Fixes #82050.
14606
14607 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14608
14609         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14610         with the MONO_EXCEPTION_ defines.
14611
14612 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14613
14614         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14615         #82117.
14616         
14617         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14618         the cause of an assertion.
14619
14620 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14623         removed.
14624
14625 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14626
14627         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14628         assert. Should fix #82103.
14629
14630 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14631
14632         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14633         here too. Fixes #82095.
14634
14635         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14636         addresses.
14637
14638         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14639
14640         * mini-amd64.h: Enable IMT for amd64.
14641         
14642         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14643
14644 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14645
14646         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14647
14648 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14649
14650         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14651         as soon as check_linkdemand sets an exception_type.
14652
14653 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14654
14655         * mini-x86.c: fixed offsets for IMT call sequence.
14656         * mini-x86.h: enable IMT again.
14657
14658 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * trace.c (mono_trace_enter_method): Decode MonoType too.
14661
14662         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14663
14664         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14665
14666         * mini-amd64.c: Add preliminary IMT implementation.
14667         
14668 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14671         understand the new IMT-base interface invocation (thanks to
14672         Daniel Nauck for the report and the remote debugging session).
14673
14674 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14675
14676         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14677
14678 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14681
14682 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14683
14684         * mini-trampolines.c: implement AOT IMT support.
14685         * mini-x86.h: enable IMT support for wider testing.
14686
14687 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14688
14689         * inssel.brg (emit_imt_argument): Add aot support here.
14690
14691         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14692
14693 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14694
14695         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14696         of the IMT implementation, partially from massi, with my
14697         implementation of the bsearch sequence. Disabled by default until
14698         the AOT code is implemented.
14699
14700 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14701
14702         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14703
14704         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14705
14706 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14707
14708         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14709         arch-independent IMT JIT code from Massimiliano
14710         Mantione (massi@ximian.com) with small cleanups from me.
14711
14712 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14713
14714         * Makefile.am: fix svn invocation to get the svn revision to be
14715         independent of the local language (build fix).
14716
14717 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14718
14719         * mini.c (inline_method): Reset cfg->exception_type if the
14720         inlining is aborted.  Fixes: 82049.
14721
14722 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14723
14724         * mini.c: remove assert from exception handling code when exception_ptr
14725         is not set.
14726
14727 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14728
14729         * mini.c (mono_codegen): Add an assert.
14730
14731         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14732         enter and leave code.
14733         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14734
14735 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14736
14737         * mini-ppc.c: fixed memory corruption for localloc(0)
14738         (bug #81852).
14739
14740 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14741         
14742         * mini.c: Fix warnings.
14743
14744 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14745
14746         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14747         to emit better double->int conversions.
14748
14749 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14750
14751         * mini.c: the provided Min/Max optimizations are valid for unisgned
14752         ints.
14753
14754 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14755
14756         * 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
14757
14758 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14759
14760         * mini.c (mono_running_on_valgrind): Add support for reporting the
14761         method and  its boundaries to valgrind.
14762
14763 2007-06-28  Martin Baulig  <martin@ximian.com>
14764
14765         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14766
14767 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14770
14771         * generic.2.cs: Add new test case.
14772
14773 2007-06-25  Martin Baulig  <martin@ximian.com>
14774
14775         Merged the `debugger-dublin' branch.
14776
14777         * debug-mini.c
14778         (mono_debugger_insert_method_breakpoint): New public method.
14779         (mono_debugger_remove_method_breakpoint): Likewise.
14780         (mono_debugger_check_breakpoints): New static method.
14781         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14782
14783         * debug-debugger.h (MonoDebuggerInfo):
14784         Renamed (to keep backward compatibility in the vtable):
14785         `insert_breakpoint' -> `old_insert_breakpoint'.
14786         `remove_breakpoint' -> `old_remove_breakpoint'.
14787         `create_string' -> `old_create_string'.
14788         `lookup_class' -> `old_lookup_class'.
14789         `lookup_type' -> removed; changed into a dummy field.
14790         `lookup_assembly' -> `old_lookup_assembly'.
14791         Added (same functionality, but different signature):
14792         `create_string', `lookup_class', `lookup_assembly'
14793         Added new:
14794         `get_method_addr_or_bpt', `remove_method_breakpoint',
14795         `runtime_class_init'.
14796
14797         * debug-debugger.c: Merged the `debugger-dublin' branch.
14798
14799 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14800
14801         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14802         well.
14803         (peephole_pass): Likewise.
14804
14805 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14806
14807         * driver.c: hopefully make setaffinity work also for ancient
14808         versions of linux.
14809
14810 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14811
14812         * driver.c : win32 build fix.
14813
14814 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14815
14816         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14817         processor if it is set.
14818
14819 2007-06-21  Martin Baulig  <martin@ximian.com>
14820
14821         * debug-mini.h: New file.
14822
14823         * debug-mini.c
14824         (mono_debugger_insert_breakpoint_full): Moved here from
14825         ../metadata/mono-debug-debugger.c.
14826         (mono_debugger_remove_breakpoint): Likewise.
14827         (mono_debugger_breakpoint_callback): Likewise.
14828
14829 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14830
14831         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14832         changes in MonoGenericClass.
14833
14834 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14835
14836         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14837
14838 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14839
14840         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14841         removal of MonoGenericMethod.
14842
14843 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14844
14845         * mini-exceptions.c: hooks for the exception events profiling API.
14846
14847 2007-06-14  Randolph Chung  <tausq@debian.org>
14848
14849         * Makefile.ma: Add hppa target.
14850         * mini-arch.h: Include mini-hppa.h
14851         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14852         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14853         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14854
14855 2007-06-14  Randolph Chung  <tausq@debian.org>
14856
14857         * inssel.brg: Add rules for "chained" compare-branch operations so that
14858         a single compare op can affect multiple branches.  Adjust cost for
14859         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14860         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14861         cost for some rules so that they can more easily be overridden by
14862         per-arch rules (with fixes from lupus).
14863         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14864
14865 2007-06-13  Randolph Chung  <tausq@debian.org>
14866
14867         * mini-ops.h: Reorder branch ops so that they match the order of the
14868         corresponding CEE_* ops.  The code expects them this way.
14869         Add new ops for HPPA target.
14870         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14871
14872 2007-06-13  Randolph Chung  <tausq@debian.org>
14873
14874         * mini-exceptions.c: Handle cases where the stack grows towards
14875         larger addresses.
14876         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14877
14878 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14879
14880         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14881         counter.
14882         * driver.c: explain where a non-matching corlib is found.
14883
14884 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14885
14886         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14887
14888 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14889
14890         * mini-exceptions.c: Generate a method profile leave event during
14891         an exception to ensure that the profiler gets notified.
14892
14893 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14896         branch.
14897
14898         * cpu-amd64.md: Add long_and/or/xor opcodes.
14899
14900 2007-06-06  Wade Berrier  <wberrier@novell.com>
14901
14902         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14903         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14904         length of instruction shr_imm (expected 8, got 10)
14905
14906 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14907
14908         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14909
14910 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14911
14912         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14913         MonoInternalHashTable again (fixed bug in the internal hash table
14914         code).
14915
14916 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14917
14918         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14919         Have to figure out what makes it crash the SWF regression.
14920
14921 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14922
14923         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14924
14925 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14926
14927         * mini.c: optimize out the type check when storing null in a
14928         reference array.
14929
14930 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14931
14932         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14933         MonoInternalHashTable.
14934
14935 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14936
14937         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14938         signed integer methods.
14939
14940 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14941
14942         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14943         permanently since the current approach doesn't work.
14944
14945 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14946
14947         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14948         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14949
14950 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14953         the sreg2==rdx case.
14954         
14955         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14956         account if it contains a rex prefix.
14957         (peephole_pass): Handle OP_FMOVE as well.
14958
14959 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14962         as it causes regressions.
14963
14964 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14965
14966         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14967         static case as well.
14968
14969         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14970
14971         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14972         (mono_arch_get_this_arg_from_call): Ditto.
14973
14974         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14975
14976         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14977         invoke_impl field.
14978
14979         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14980         (mono_arch_get_this_arg_from_call): Ditto.
14981
14982         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14983         
14984         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14985         try to create optimized invoke code and use that for further invocations. 
14986         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14987
14988         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14989
14990 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14991
14992         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14993         sealed classes or methods.
14994         *devirtualization.cs: tests for the new optimization
14995
14996 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14999         by the update_volatile () function.
15000
15001 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15004         require it.
15005
15006         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15007
15008 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15009
15010         * mini.c: Add configure checks for header files.
15011         * mini-x86.c: Add configure checks for header files.
15012         * trace.c: Add configure checks for header files.
15013         * aot-runtime.c: Add configure checks for header files.
15014         * aot-compiler.c: Add configure checks for header files.
15015         * driver.c: Add configure checks for header files.
15016         * mini-codegen.c: Add configure checks for header files.
15017         
15018         Code is contributed under MIT/X11 license.
15019
15020 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15023         icompare_imm -128 + op_iclt. Fixes #81703.
15024
15025 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15028
15029 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15030
15031         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15032         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15033         so that all isinst checks now use "interface_bitmap".
15034
15035 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15036
15037         * cpu-amd64.md (jmp): Fix a warning.
15038
15039         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15040
15041         * basic.cs: Add new regression test.
15042
15043         * basic.cs: Remove test which is now in basic-long.cs.
15044
15045         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15046
15047         * basic-long.cs: Add new test.
15048         
15049 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15052
15053 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15054
15055         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15056
15057         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15058         places.
15059         
15060         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15061         throwing code a bit.
15062
15063         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15064         the exception throwing code a bit.
15065
15066         * mini-x86.c (get_call_info): Allocate result from a mempool.
15067
15068 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15069
15070         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15071
15072         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15073
15074         * mini.h (MonoCompile): Add 'token_info_hash' field.
15075
15076         * mini.c: Save token->method associations during compilation so the AOT 
15077         compiler can use it.
15078         
15079         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15080         which reference generic classes and methods.
15081
15082 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15083
15084         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15085
15086         * aot-compiler.c (compile_method): Fix a typo in a comment.
15087
15088         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15089
15090         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15091         everything generic.
15092
15093         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15094
15095 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15096
15097         * mini.h (MonoCompile): Add 'args' field.
15098
15099         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15100         into cfg->args.
15101
15102         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15103
15104 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15107
15108         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15109
15110         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15111         opcodes for some opcodes.
15112
15113         * mini.h *.brg *.c: Use the new opcodes.
15114
15115 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15116
15117         * mini.h: Bumped aot revision.
15118
15119         * inssel.brg: modified code generation of type checks for interfaces
15120         to use the new "MonoClass.interface_bitmap" instead of the old
15121         "MonoClass.interface_offsets".
15122
15123 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15124
15125         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15126
15127 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15128
15129         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15130         64 bit platforms.
15131
15132 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15133
15134         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15135
15136 2007-04-27  Wade Berrier  <wberrier@novell.com>
15137
15138         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15139         mini.h) to fix build.
15140
15141 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15142
15143         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15144         
15145         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15146         causes the corlib unit tests to fail.
15147
15148 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15149
15150         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15151
15152         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15153
15154         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15155         opcodes to the comparison relations.
15156
15157         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15158         opcodes to their types.
15159         
15160         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15161
15162         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15163         it in cfg->arch.cinfo.
15164
15165         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15166
15167         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15168         cfg->cil_offset_to_bb.
15169
15170 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15171
15172         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15173         created becase of initlocals.
15174
15175 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15176
15177         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15178         Sergey Tikhonov <tsv@solvo.ru>.
15179
15180 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15181
15182         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15183
15184 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * cpu-s390.md (break): Correct the length of break instruction.
15187
15188 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15189
15190         * mini.c: fix a couple of soft-float issues and comments.
15191
15192 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15193
15194         * trace.c (is_filenamechar): - is also a filename char.
15195
15196 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15197
15198         * mini-s390.c: Correct checking for enum type in return value processing.
15199
15200 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15201
15202         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15203         (version.h): Makefile is in the build directory.
15204
15205 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15206
15207         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15208
15209 2007-04-11  Martin Baulig  <martin@ximian.com>
15210
15211         * mini.c (can_access_member): Fix handling of generic classes;
15212         fixes #81259.
15213
15214 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15215
15216         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15217
15218 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15221
15222 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * mini-codegen.c: make sure the right spill amount is
15225         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15226
15227 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15228
15229         * mini-ppc.c: fixes for the fp_branch_nan test.
15230
15231 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15232
15233         * basic.cs: Comment out new test which still fails on ia64.
15234
15235 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15236
15237         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15238
15239 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15240
15241         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15242
15243 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15244
15245         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15246         on 64 bit machines. Fixes part of #80738.
15247
15248         * basic.cs: Add regression test.
15249
15250 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15251
15252         * inssel.brg basic.cs: Revert previous change to fix build.
15253
15254         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15255         platforms.
15256         
15257         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15258
15259         * basic.cs: Add new regression test.
15260
15261 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15262
15263         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15264         many arguments.
15265
15266 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15267
15268         * cpu-s390x.md: Correct length of break instruction.
15269
15270 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15271
15272         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15273         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15274
15275 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15276
15277         * *.c: Begin WIN64 port.
15278         * mini.c:  Use correct register in profiler.
15279         * mini-amd64.c: No inline assembly on Win64.
15280         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15281         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15282         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15283         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15284         mono_arch_ip_from_context for Win64.
15285         
15286         Contributed under MIT/X11 license.
15287
15288 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15289
15290         * exceptions-amd64.c (seh_handler): Ditto.
15291
15292         * exceptions-x86.c (seh_handler): Fix a memory leak.
15293
15294 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15295
15296         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15297         mini-s390x.c: fixed peephole optimizations to deal
15298         correctly with 1 and 2 byte reload avoidance.
15299
15300 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15301
15302         * cpu-s390.md, cpu-s390x.md: update localloc length.
15303
15304 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15305
15306         * cpu-g4.md: added missing descriptions.
15307
15308 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15309
15310         *  Makefile.am: Add support so the tail tests are not executed on
15311         PowerPC as that is a known limitation of the PowerPC port.
15312
15313 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15314
15315         * runmdesc.bat:  Move to msvc directory.
15316         
15317 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15318
15319         * runmdesc.bat:  Run executable that was produced by the current
15320         target and sent via an argument.
15321         
15322 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15325         #81102.
15326
15327         * generics.2.cs: Add regression test.
15328
15329 2007-03-09  Wade berrier  <wberrier@novell.com>
15330
15331         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15332
15333 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15334
15335         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15336         AOT code depends on this.
15337
15338 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * mini.c: more precise tracking of types in the eval stack
15341         (part of fix for bug #81044).
15342
15343 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15344
15345         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15346
15347         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15348
15349 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15350
15351         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15352
15353         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15354
15355 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15356
15357         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15358         a pointer on 64 bit systems. Fixes #80190.
15359
15360         * iltests.il: Add new regression test.
15361
15362 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15363
15364         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15365
15366 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15367
15368         * trace.c: Remove an erroneous alignemnt check when tracing.
15369           Fixes --trace on OSX86.
15370
15371 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15372
15373         * mini-$(arch).h: initialize SP in context for all the archs.
15374
15375 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15376
15377         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15378         regressions in the thread tests.
15379
15380 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15381
15382         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15383         - fixed implementation of LOCALLOC opcode
15384         - implemented non-un compare for floats
15385         - code cleanup
15386         - implementation of FDIV and CKFINITE opcodes
15387         - fixes for latest mono updates
15388         - additional arch opcodes
15389
15390 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15391
15392         * Makefile.am: simplify and merge rules for cross-compilation.
15393
15394 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15395
15396         * local-propagation.c: Actually *apply* the fix for bug 80591...
15397
15398 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15399
15400         * mini-exceptions.c: backuot part of the last change
15401         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15402
15403 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15404         * inssel.brg: Fix bug 59286.
15405
15406
15407 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15408
15409         * mini-exceptions.c: patch from Zoltan to correctly check for
15410         stack boundaries (using the stack register, not the frame register),
15411         fixes bugs #80724, #79717.
15412
15413 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15414
15415         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15416         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15417
15418         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15419         presence of frame pointer elimination.
15420
15421 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15422         
15423         * mini-x86.h: NetBSD UCONTEX_REG defines.
15424
15425 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15426
15427         * inssel-amd64.brg: Fix amd64 build.
15428
15429 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15430
15431         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15432         on amd64.
15433
15434 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15435
15436         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15437         ends.
15438
15439         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15440
15441 2007-01-30 Mark Mason <mason@broadcom.com>
15442
15443            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15444            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15445            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15446            beginning support for CEE_JMP [not quite working yet]
15447            * tramp-mips.c: LMF handling now works
15448         
15449 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15450
15451         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15452
15453         * mini.h (NULLIFY_INS): New macro.
15454
15455 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15456
15457         * mini.c: statistical profiler fix for windows, patch
15458         from Tor Lillqvist (tml@novell.com).
15459
15460 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15461         * local-propagation.c: Fix bug 80591.
15462
15463 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15464
15465         * Makefile.am: put back the --export-dynamic option as with
15466         the previous gmodule flags (thanks to Robert Jordan).
15467
15468 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15469
15470         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15471
15472         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15473         simplify and speed up the local register allocator. Also rename some fields
15474         like iassign->vassign.
15475         
15476         * regalloc.c: Remove some functions which are no longer used since their
15477         inlined version is in mini-codegen.c.
15478         
15479         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15480
15481         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15482
15483 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15484
15485         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15486         narrowing. Fixes #80622.
15487
15488         * iltests.il: Add new regresssion test. 
15489
15490 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15491
15492         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15493         debug-debugger.c, debug-debugger.h: warning fixes.
15494         * driver.c: updated copyright year and made it fit in one line.
15495
15496 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15497
15498         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15499
15500 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15501
15502         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15503
15504         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15505
15506         * iltests.il: Add new test for bug #80507.
15507
15508 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15509
15510         * mini-arm.h: use soft-float also on vfp for now.
15511
15512 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15513
15514         * mini.c: fix some more soft-float issues.
15515
15516 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15517
15518         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15519
15520 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15521         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15522         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15523         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15524
15525 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15526
15527         * mini-arm.c: typo fix.
15528
15529 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15530
15531         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15532
15533 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15534
15535         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15536         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15537
15538         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15539
15540         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15541
15542         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15543         
15544         * inssel.brg: Fix a warning.
15545
15546         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15547
15548         * abcremoval.c ssa.c ssapre.c: Update after this change.
15549         
15550         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15551
15552         * dominators.c (df_set): Use mono_bitset_union_fast.    
15553
15554 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15557         mini-codegen.c: reduce relocations and memory usage for the cpu
15558         description.
15559
15560 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15561
15562         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15563
15564         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15565         to reduce their size.
15566
15567 2007-01-19 Mark Mason <mason@broadcom.com>
15568
15569         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15570         * mini-mips.c: more configuration macros, support long conditional branches, additional
15571         asserts, fix epilog instrumentation.
15572         * mini-mips.h: use standard stack walk
15573         * cpu-mips.md: increase size of div, rem and conditional branches
15574         
15575 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15576
15577         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15578         to cpu spec data.
15579
15580 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15581
15582         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15583         (compile_method): Ditto.
15584
15585         * aot-runtime.c (decode_klass_info): Ditto.
15586
15587         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15588         needed by the code generated by inssel.brg. Also fix a warning.
15589
15590 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15591
15592         * mini.c: deal with enums that become genericinsts by
15593         being nested in a generic class (bug #79956).
15594
15595 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15596
15597         * mini.c: match the generic definition to check for
15598         private access with generic types (bug #78431).
15599
15600 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15601
15602         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15603         to make life easier for people cross-compiling that insist on not
15604         using scratchbox.
15605
15606 2007-01-17 Mark Mason <mason@broadcom.com>
15607
15608         * inssel-long.brg: patch to deal with mips missing flags
15609         * inssel-long32-mips.brg: implement overflow checks
15610         * insset-mips.brg: implement overflow checks
15611         * mini-mips.h: implement conditional exception handling
15612         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15613           Remove unused code, minor cleanups.
15614         * exceptions-mips.c: minor cleanups
15615         * mini-ops.h: add mips conditional exception ops
15616         * cpu-mips.md: add mips conditional exception ops
15617
15618         
15619 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15620
15621         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15622         to deal with mips missing of flags.
15623
15624 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15625
15626         * exceptions-ppc.c: execute fault handlers.
15627
15628 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15629
15630         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15631
15632 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15633
15634         * mini.c: handle also floating point values in initialize_array.
15635
15636 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15637
15638         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15639         array initialization and make it conditional on the intrins option.
15640
15641 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15642
15643         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15644         relocations and put the patch info names close to the enum definition.
15645
15646 2007-01-15 Mark Mason <mason@broadcom.com>
15647
15648         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15649
15650 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15651
15652         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15653
15654 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15655
15656         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15657
15658 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15659
15660         * Makefile.am: distribute the mips sources.
15661
15662 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15663
15664         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15665         directly.
15666
15667 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15668
15669         * cpu-x86.md: back out for now as this triggers other regressions.
15670
15671 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15672
15673         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15674         to eax:edx, so ecx can't get allocated to them (bug #80489).
15675
15676 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15677
15678         * mini.c, mini-exceptions.c: enabled running fault handlers
15679         (bug #80469).
15680
15681 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15682
15683         * driver.c: If nothing fail, do not use the string "failed",
15684         because it makes it very annoying to view test result logs on the
15685         web. 
15686
15687 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15688
15689         * debug-debugger.c (mono_debugger_main): Rename "main" to
15690         "main_method" to prevent a warning.
15691
15692         Remove a warning for unused field.
15693
15694 2006-12-28  Martin Baulig  <martin@ximian.com>
15695
15696         * debug-debugger.c
15697         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15698
15699 2006-12-22  Martin Baulig  <martin@ximian.com>
15700
15701         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15702         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15703         seperate `.mdb_debug_info' section, so we can access it from the
15704         debugger even if the binary is stripped.
15705
15706         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15707         from the `.mdb_debug_info' here to prevent the linker from
15708         removing that section.
15709
15710         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15711         mdb-debug-info64.s.
15712
15713 2006-12-19  Robert Jordan  <robertj@gmx.net>
15714
15715         * mini-x86: enable the code to return small structures in
15716         registers for FreeBSD as well. Fixes bug #80278.
15717         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15718
15719 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15720
15721         * mini-x86.c: align the stack when calling the profiler
15722         function instrumenting the prolog (on OSX).
15723
15724 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15725
15726         * mini.c: emit a break opcode where Debugger.Break () is called.
15727
15728 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15729
15730         * mini.c (mono_method_to_ir): Provide useful information on this
15731         assert, to prevent others from debugging like I did.
15732
15733 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15734
15735         * mini.c: enable code which was incorrectly commented
15736         (bug #80235).
15737
15738 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15739
15740         * mini-x86.c: enable on OSX, too, the code to return small
15741         structures in registers.
15742
15743 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15744
15745         * mini-x86.c: remove the use of the dynamic code manager here, too.
15746
15747 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15748
15749         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15750         mono_debugger_create_notification_function() to use
15751         mono_global_codeman_reserve () instead of a dynamic code manager.
15752
15753 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15754
15755         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15756         ves_array_element_address() jit icall and use a generated
15757         managed method instead (which is about 4 times faster for a rank 3
15758         array access).
15759
15760 2006-11-29  Mark Mason  <mason@broadcom.com>
15761
15762         * basic-calls.cs: additional tests for passing
15763         structures as function arguments.
15764
15765 2006-11-29  Mark Mason  <mason@broadcom.com>
15766
15767         * mini-mips.h: disable custom exception handling
15768         * mini-mips.c: throw/rethrow should use jalr to call
15769         exception stubs.  Fixed bug with passing structures
15770         by value. More support for tracing floating point
15771         functions.
15772
15773 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15774
15775         * mini.c: fixed typo in the soft-float ldind.r4 handling
15776         (bug #80086).
15777
15778 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15779
15780         * mini.c, mini.h, driver.c: added --runtime command line
15781         option to select a different runtime than the autodetected one.
15782         * jit.h: added API for embedders to initialize with a specific
15783         runtime version.
15784
15785 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15786
15787         * mini.c: handle also boxing of r4 values (bug #80024).
15788
15789 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15790
15791         * mini-ppc.c: force indirect calls until we reserve
15792         enough address space for all the generated code.
15793
15794 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15795
15796         * exceptions-arm.c: workaround bugs in the libc definition
15797         of struct ucontext.
15798
15799 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15800
15801         * inssel.brg: fixes from me and Mark Mason.
15802
15803 2006-11-23  Dick Porter  <dick@ximian.com>
15804
15805         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15806         semaphore display now we've fixed the initial value
15807
15808 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15809
15810         * inssel.brg: partially revert the last change to fix the build.
15811
15812 2006-11-21  Mark Mason  <mason@broadcom.com>
15813
15814         * inssel.brg: Add and use compare-and-branch macros to support
15815         architectures that do not have condition code registers (ie. MIPS).
15816         * *-mips.{c,brg,md}: Fix copyright statements
15817
15818 2006-11-20  Mark Mason  <mason@broadcom.com>
15819
15820         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15821         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15822         * mini.h: Added declaration for mono_print_ins()
15823         * mini-codegen.c: added ins_spec initializer for MIPS
15824         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15825         vreg to be virtual and hreg to be non-virtual.
15826         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15827         is not yet working/implemented correctly.
15828         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15829         non-static, fixup calls to print_ins() from other parts in the file.
15830
15831 2006-11-20  Mark Mason  <mason@broadcom.com>
15832
15833         * basic-calls.cs: added tests for passing structures as arguments
15834         to calls.
15835
15836 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15837
15838         * inssel-long32.brg: optimize signed division by power of two.
15839
15840 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15841
15842         * mini-arm.c: added support for interworking with thumb code
15843         (mono must be still be built using the ARM instruction encoding).
15844
15845 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15846
15847         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15848         verifier has different rules for it.   Fixes a few verifier issues
15849         in the test suite.
15850
15851         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15852         at the end, so people know what happened.
15853
15854 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15855
15856         * brach-opts.c: in optimize_exception_target() make sure we
15857         are in a catch clause (fixes bug #79871).
15858
15859 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15860
15861         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15862         more soft-float support fixes.
15863
15864 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15865
15866         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15867         that are passed half on the stack and half in registers.
15868
15869 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15870
15871         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15872         more mips integration work from Mark E Mason 
15873         <mark.e.mason@broadcom.com>.
15874
15875 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15876
15877         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15878         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15879         tramp-mips.c: added sources for the mips port, not
15880         integrated in the build yet. Contributed by
15881         Mark E Mason <mark.e.mason@broadcom.com>.
15882
15883 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15884
15885         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15886
15887 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15888
15889         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15890         put the soft-float rules in its own file since it seems to
15891         break s390 compilation.
15892
15893 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15894
15895         * mini-arm.c: fixed wrnings.
15896
15897 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15898
15899         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15900         inssel-arm.brg: ARM support for soft-float.
15901
15902 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15903
15904         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15905         loads and stores of 32 bit fp values.
15906
15907 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15908
15909         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15910
15911         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15912         works. Fixes #79852 and #79463.
15913
15914 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15915
15916         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15917         more soft-float support WIP and fixes.
15918
15919 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15920
15921         * mini-arm.c: some VFP updates.
15922
15923 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15924
15925         * mini-exceptions.c: 0 is a valid local var offset in some
15926         architectures, don't assert (bug #78508).
15927
15928 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15929
15930         * exceptions-arm.c: fixed off by one error in stack walk code.
15931
15932 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15933
15934         * mini.h, mini.c: more precise tracking of type load exceptions.
15935
15936 2006-11-03  Robert Jordan  <robertj@gmx.net>
15937
15938         * Makefile.am: [WIN32] Add monow.exe target.
15939         * driver.c: [WIN32] Don't detach the console when debugging.
15940         Fixes bug #79797.
15941         
15942 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15943
15944         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15945
15946 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15949
15950         * driver.c (mini_regression): Fix --regression with AOT.
15951
15952         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15953
15954 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15955
15956         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15957
15958         * mini-sparc.h: Don't use sigaction on sparc/linux.
15959
15960         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15961
15962         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15963
15964         * mini-exceptions.c: Add proper include files for getpid ().
15965
15966 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15969         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15970         method.
15971
15972         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15973         name cache to reduce its size.
15974
15975         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15976
15977 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15978
15979         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15980         the mono_lmf TLS variable.
15981
15982         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15983         trampoline lmf frames.  
15984
15985         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15986
15987 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15988
15989         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15990         the mono_lmf TLS variable.
15991
15992         * mini-exceptions.c: Access the LMF structure through accessors.
15993
15994         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15995         variable instead of in jit_tls->lmf.
15996
15997         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15998         
15999         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16000         trampoline lmf frames.
16001
16002         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16003
16004 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16005
16006        * mini.c trace.c mini-x86.c: Revert these too.
16007         
16008        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16009        signature change.
16010
16011 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16012
16013         * genmdesc.c: removed now dead code.
16014
16015 2006-10-09  Robert Jordan <robertj@gmx.net>
16016
16017         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16018
16019 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16020
16021         * mini.h: do not leave gaps in the opcode values.
16022
16023 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16024
16025         * jit-icalls.h: flag functions as internal here, too.
16026
16027 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16028
16029         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16030         functions with the internal attribute.
16031
16032 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16033
16034         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16035
16036 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16039         for soft-float.
16040
16041 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16044         tail calls as on other platforms.
16045
16046         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16047
16048         * iltests.il: Add a few tailcall tests.
16049
16050 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16051
16052         * driver.c: fix loop for old compilers (bug #79521).
16053
16054 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16055
16056         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16057
16058         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16059
16060         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16061         metadata without any code.
16062
16063         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16064         more precise debugging information using gdb.
16065
16066 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * inssel-ia64.brg: Make the helper methods static.
16069
16070 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16071
16072         * inssel-x86.brg: make the helper methods static.
16073
16074 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16075
16076         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16077
16078 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16079
16080         * mini.c: updates for monoburg changes.
16081         * inssel.brg: make a few helper functions static as they should.
16082
16083 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16084
16085         * Makefile.am: Move mini-codegen.c to common_sources.
16086
16087 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16088
16089         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16090         instructions.
16091         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16092         mini-ppc.h: port to use the common local register allocator.
16093
16094 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini.h: Remove the comment too then.
16097
16098 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16099
16100         * mini.h: put back backend.data which is to be used shortly and
16101         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16102         pointers on 4 byte boundaries it'd have much bigger issues running
16103         and you can ifdef it out anyway.
16104
16105 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16106
16107         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16108         MonoInst size by 4 bytes on 64 bit machines.
16109
16110 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16111
16112         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16113         replacement with more meaningful field names. Arch maintainers, please
16114         check the assigned names are good enough for your arch.
16115
16116 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16117
16118         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16119         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16120
16121 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16122
16123         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16124         relocations and memory requirements, put the optimization flags
16125         definitions in their own file.
16126
16127 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16128
16129         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16130
16131         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16132
16133 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16134
16135         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16136
16137 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16138
16139         * inssel.brg: use the correct function to get the size of an item
16140         in an array, given an element class.
16141         * aot-compiler.c: do not access class->class_size directly.
16142
16143 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini.h, debug-mini.c: added a debugging function to print
16146         info about local variables and arguments in a jitted method.
16147
16148 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16149
16150         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16151
16152         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16153
16154 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16155
16156         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16157         inner and outer loops when passing vtypes.
16158
16159 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16160
16161         * mini-ppc.c: take into account the cpu errata for cache flushing
16162         which caused some random errors (bug #79381).
16163
16164 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16167         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16168
16169 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16170
16171         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16172         loaded.
16173
16174         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16175         freebsd ports tree.
16176
16177         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16178         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16179
16180         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16181         displacement.
16182
16183 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16184
16185         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16186
16187 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16188
16189         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16190         macro does not have to be changed during debugging.
16191
16192         * 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>.
16193
16194         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16195
16196         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16197         
16198         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16199         MONO_ARCH_NO_EMULATE_MUL is defined.
16200
16201         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16202
16203         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16204
16205         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16206
16207         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16208         
16209 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16210
16211         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16212         stuff to mini-exceptions.c where it is used.
16213
16214         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16215         setup code, the real one is in mini-exceptions.c.
16216
16217         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16218         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16219         some changes from the freebsd ports tree.
16220
16221         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16222         constants.
16223         
16224         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16225
16226 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16227
16228         * mini.c: on Linux, check for /proc to be mounted
16229         (bug# 79351, novell bug#201204).
16230
16231 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16232
16233         * mini.c: handle cases where pthread_attr_getstack() behaves
16234         incorrectly (bug #78096).
16235
16236 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16237
16238         * mini-arm.c: support larger stack frames (bug #79272).
16239
16240 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16241
16242         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16243
16244         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16245         tokens.
16246
16247         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16248         mono_class_from_name () to find a class from its name.
16249
16250         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16251
16252 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16253
16254         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16255
16256 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16257
16258         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16259
16260 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16261
16262         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16263         callinfo->trampoline.
16264
16265         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16266         fixes #79271.
16267         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16268         future.
16269
16270 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16271
16272         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16273
16274 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16275
16276         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16277         stats.method_trampolines, it is already done by the generic trampoline code.
16278
16279         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16280         
16281 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16282
16283         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16284
16285         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16286
16287         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16288
16289         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16290         
16291         * mini.c (print_jit_stats): Print new stats.
16292
16293         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16294
16295 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16296
16297         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16298         Address on two dimensional arrays. Fixes #78729.
16299
16300         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16301
16302         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16303         a method.
16304
16305         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16306
16307         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16308         #79130.
16309         
16310         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16311         a race condition.
16312         (mini_get_ldelema_ins): Ditto.
16313
16314 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16315
16316         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16317         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16318         Fixes #79213.
16319
16320 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16321
16322         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16323         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16324
16325         * exceptions-s390x.c: Cosmetic change.
16326
16327         * tramp-s390.c: Fix warning.
16328
16329         * cpu-s390.md: Correct length of mul_imm.
16330
16331 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16332
16333         * aot-compiler.c: added binary writer with ELF backend
16334         implementation (only on Linux/x86 for now).
16335
16336 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16337
16338         * Makefile.am: Don't run net 2.0 AOT tests.
16339
16340         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16341         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16342
16343         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16344
16345 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16346
16347         * aot-compiler.c: simplified and refactored the asm-writing code
16348         to allow different backends.
16349
16350 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16351
16352         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16353
16354         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16355         little. Share patches of type TYPE_FROM_HANDLE as well.
16356
16357         * mini.c (mono_patch_info_equal): New helper function.
16358         (mono_patch_info_hash): Ditto.
16359
16360         * aot-compiler.c (emit_method_code): Fix s390 build.
16361
16362         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16363         is not handled because it is stored as a flag and not as a type ctor. Fixes
16364         #79016.
16365
16366 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16367
16368         * aot-compiler.c: Fix computation of GOT slot statistics.
16369         
16370         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16371         Also remove support for not PIC AOT.
16372
16373         * mini.h: Bump AOT file format version.
16374
16375         * objects.cs: Add a test for #78990.
16376
16377         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16378         (peter.dettman@iinet.net.au). Fixes #79087.
16379
16380         * basic-long.cs: Add a test for the above.
16381
16382 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16383
16384         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16385         
16386         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16387         code somewhat.
16388
16389 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16390
16391         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16392         exceptions.
16393
16394 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16395
16396         * mini.c: Don't verify COM proxy invoke calls
16397         
16398
16399 2006-08-10  Dick Porter  <dick@ximian.com>
16400
16401         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16402         which process is holding semaphores locked.
16403
16404 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16405
16406         * mini-ia64.c mini-amd64.c: Fix #79027.
16407
16408         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16409
16410         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16411
16412         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16413         implicit arguments in a vararg call. Fixes #79027.
16414
16415 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16416
16417         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16418         (mono_get_array_new_va_signature): Ditto.
16419
16420 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16421
16422         * aot-runtime.c: Call init_plt lazily.
16423
16424         * inssel-long.brg: Fix unsigned long->int conversion.
16425
16426         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16427
16428         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16429         that most data is now in the .rss/.data section.
16430
16431 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16432
16433         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16434
16435         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16436
16437         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16438
16439         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16440
16441         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16442         virtual call. Fixes #79010.
16443
16444         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16445         and use the result as the this argument in the real call.
16446
16447         * generics.2.cs: Add a new test for #79010.
16448         
16449 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16450
16451         * mini-x86.c: Fix a warning.
16452
16453         * aot-compiler.c: Add a bunch of statistics.
16454
16455         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16456
16457 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16458
16459         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16460
16461 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16462
16463         * 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>.
16464
16465 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16466
16467         * mini.c (mono_method_to_ir): Obtain the original method in the
16468         CIL stream and use this to perform validation.
16469
16470         Fixed: #78816
16471
16472 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16473
16474         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16475         (mono_arch_call_opcode): Ditto.
16476
16477         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16478         #78826.
16479
16480         * mini.c (mono_patch_info_dup_mp): New helper function.
16481         
16482         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16483         compilation. Fixes #78827.
16484
16485 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16486
16487         * declsec.c: Use original security informations for
16488           MONO_WRAPPER_MANAGED_TO_MANAGED.
16489
16490 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16491
16492         * mini.c: Allow Com Interop methods/classes and
16493         don't verify COM wrapper calls
16494         
16495
16496 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16497
16498         * inssel-long32.brg: Fix long->i4 checked conversion.
16499
16500         * exceptions.cs: Add a test for the above.
16501
16502 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16503
16504         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16505
16506         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16507         leaks.
16508
16509         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16510         #78775.
16511
16512 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16513
16514         * mini.c: Fix solaris/x86 exception handling.
16515
16516         * Makefile.am: Get rid of $(ICU_LIBS).
16517
16518 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16519
16520         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16521         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16522         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16523
16524         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16525
16526         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16527         this function causes a SIGSEGV.
16528
16529 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16530
16531         * mini.c: Remove unused solaris/x86 includes.
16532
16533 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16534
16535         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16536
16537 2006-06-20  Jb Evain  <jbevain@gmail.com>
16538
16539         * cpu-g4.md: fix max length of start_handler instruction.
16540
16541 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16542         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16543
16544 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16545         * ssa.c: Fixed bug 78653 for SSA based deadce.
16546         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16547         MonoInst.flags, used in SSA based deadce.
16548         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16549         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16550
16551 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16552
16553         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16554         it can end up using non executable memory on ppc64 systems
16555         running ppc32 userspace (fix from Johannes Berg).
16556
16557 2006-06-14  Dick Porter  <dick@ximian.com>
16558
16559         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16560         4.1.1
16561
16562 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16563         * mini.c: Made so that inline is locally disabled if it would
16564         trigger a .cctor, because too many apps depend on this behavior
16565         (which seems to be also the one of the MS CLR).
16566
16567 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16568
16569         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16570         No idea why this worked before.
16571
16572         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16573         which branch to outer exception clauses since they could skip the
16574         inner finally clauses. Fixes #78633.
16575
16576         * exceptions.cs: Add a test for the above.
16577
16578         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16579         Fixes #78629.
16580
16581         * iltests.il: Add a test for the above.
16582
16583 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16584
16585         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16586         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16587
16588         * iltests.il: Add a test for the above.
16589
16590 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16591
16592         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16593         
16594         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16595         methods as instrinsics.
16596
16597 2006-06-09  Wade Berrier <wberrier@novell.com>
16598
16599         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16600         (simple-cee-ops.h ssapre-mini-ops.h)
16601
16602 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16603
16604         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16605         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16606         instruction).
16607         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16608         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16609
16610 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16611
16612         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16613
16614 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16615
16616         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16617         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16618         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16619         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16620         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16621         of opcodes, so that bug 78549 should not happen again.
16622         * ssapre.c: Updated to use the renamed files.
16623
16624 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16625
16626         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16627         in OP_ATOMIC_EXCHANGE_I4.
16628
16629 2006-06-07  Wade Berrier <wberrier@novell.com>
16630
16631         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16632         in mono_debugger_create_notification_function)
16633
16634 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16635
16636         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16637         
16638         * mini.c (type_from_stack_type): Disable some changes which do not
16639         seem to work.
16640
16641         * driver.c: Reenable opts.
16642
16643         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16644         of the evaluation stack.
16645         
16646         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16647         evaluation stack trace at entry to the bblock.
16648
16649         * mini.c (merge_stacks): New function to perform verification of stack merges.
16650         Turned off by default.
16651
16652         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16653         STACK_MP.
16654         
16655 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16656
16657         * local-propagation.c: Fixed bug 78549.
16658
16659 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16660
16661         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16662
16663 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16664
16665         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16666         tramp-arm.c, tramp-ia64.c
16667         (mono_debugger_create_notification_function): Update signature to
16668         new signature and use new protocol for creating the notification
16669         function.  
16670
16671         Should fix the build.
16672
16673 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16674
16675         * exceptions-ppc.c (mono_jit_walk_stack)
16676         (ves_icall_get_frame_info): Fix the build
16677
16678 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16679
16680         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16681
16682 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16683
16684         * il2tests.2.il: New file for generics CIL tests.  Add test for
16685         #78019.
16686         * Makefile.am: Update.
16687
16688         Fix #78019
16689         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16690         to nullable types.
16691
16692 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16693
16694         * aliasing.c: Fixed bug 78311.
16695
16696 2006-05-29  Martin Baulig  <martin@ximian.com>
16697
16698         * mini-exceptions.c (mono_find_jit_info): When computing the
16699         native offset, check whether we're actually inside the method's
16700         code; call mono_debug_print_stack_frame() to format the frame.
16701         (ves_icall_System_Exception_get_trace): Call
16702         mono_debug_print_stack_frame() to format the stack frame.
16703         (ves_icall_get_trace): Update to the new debugging API.
16704         (mono_jit_walk_stack_from_ctx): Likewise.
16705         (ves_icall_get_frame_info): Likewise.
16706
16707         * mini.c (get_method_from_ip): Use the new debugging API.
16708         (mono_print_method_from_ip): Likewise.
16709
16710         * exceptions-ppc.c
16711         (mono_jit_walk_stack): Use the new debugging API.
16712         (ves_icall_get_frame_info): Likewise.   
16713
16714 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16715
16716         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16717
16718 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16719
16720         * mini.c: Added "limitator" to inline for debugging.
16721
16722 2006-05-24  Martin Baulig  <martin@ximian.com>
16723
16724         * debug-debugger.c (mono_debugger_init): Create a private,
16725         malloc()-based code manager for the notification function and
16726         intentionally leak it on exit.  This fixes the crash-on-exit race
16727         condition.
16728
16729         * tramp-amd64.c
16730         (mono_debugger_create_notification_function): Added
16731         `MonoCodeManager *' argument.
16732
16733         * tramp-x86.c
16734         (mono_debugger_create_notification_function): Added
16735         `MonoCodeManager *' argument.
16736
16737 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16738
16739         * aliasing.c: Fixed 64 bit issue.
16740         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16741         default since all known bugs are fixed (one more time!).
16742
16743 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16744
16745         * mini.c: write barrier support.
16746
16747 2006-05-23  Martin Baulig  <martin@ximian.com>
16748
16749         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16750         check at the top of the file.
16751
16752 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16753
16754         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16755         reverting changes without reason and without changelog entries.
16756
16757 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16758
16759         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16760         to a few opcodes. Fixes #78439.
16761
16762         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16763         consistency with other archs.
16764
16765         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16766
16767 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16768
16769         * debug-debugger.c: fix the build.
16770
16771 2006-05-17  Martin Baulig  <martin@ximian.com>
16772
16773         * debug-debugger.c
16774         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16775         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16776         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16777         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16778
16779 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16780
16781         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16782
16783 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16784
16785         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16786         MONO_TYPE_GENERICINST.
16787         
16788         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16789         MONO_TYPE_GENERICINST.
16790
16791 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16792
16793         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16794         #78325.
16795
16796 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16797
16798         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16799         mempool.
16800         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16801
16802 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16805         mono_trace_cleanup ().
16806
16807         * iltests.il: Fix problem with the newly added test.
16808
16809         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16810         due to register constraints, free up the previous hreg. Fixes #78314.
16811
16812         * iltests.il: Add new test for #78314.  
16813
16814         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16815         Interlocked.Add. Fixes #78312.
16816
16817         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16818         
16819 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16820
16821         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16822
16823 2006-05-05  Martin Baulig  <martin@ximian.com>
16824
16825         * debug-mini.c (mono_debug_open_block): New method.
16826
16827         * mini-amd64.c
16828         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16829         the beginning of each basic block.
16830
16831         * mini-x86.c
16832         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16833         the beginning of each basic block.
16834
16835 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16836
16837         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16838         default until I understand why they break the build on amd64.
16839
16840 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16841
16842         * mini.c (mini_cleanup): Call mono_cleanup ().
16843
16844         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16845         errors.
16846
16847 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16848
16849         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16850         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16851         default since all known bugs are fixed, and I cannot reproduce bug
16852         77944... I'm asking Matt Hargett to test again after this commit.
16853
16854 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16855
16856         * mini-codegen.c: Fixed typo that thrashed inline.
16857
16858 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16859
16860         * dominators.c (compute_dominators): Avoid using a worklist since
16861         it is not correct in some cases. Instead, iterate over all bblocks as
16862         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16863
16864 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16865
16866         * mini.c (mono_jit_compile_method_inner): Use
16867         mono_prepare_exception_from_error that resets the value
16868         internally.
16869
16870 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16871
16872         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16873         
16874 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16875
16876         * aliasing.c: Fixed bug 78210.
16877
16878 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16879
16880         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16881         default until all their problems (or the ones they trigger) are fixed.
16882
16883 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16884
16885         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16886         
16887         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16888         as loaded only after resolving patches since that could invoke the same method.
16889
16890         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16891
16892         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16893         functions.
16894
16895         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16896         AOT loader.
16897
16898         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16899         stack.
16900
16901         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16902         made from AOT code through the PLT table.
16903
16904         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16905         holding the plt offset when a call is made to the aot plt trampoline.
16906         
16907 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16908
16909         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16910         amd64 AOT support.
16911
16912         * Makefile.am (common_sources): Fix build breakage.
16913
16914         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16915         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16916         intra-assembly calls if possible.
16917         
16918         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16919
16920         * mini-trampolines.c: Handle PLT entries.
16921
16922         * mini.c: Avoid creating a GOT var for calls.
16923
16924         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16925         from mscorlib code.
16926
16927         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16928         from mscorlib code.
16929
16930         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16931         AOT code.       
16932
16933         * mini.h: Bump AOT file format version.
16934         
16935         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16936         covers more cases.
16937
16938 2006-04-25  Martin Baulig  <martin@ximian.com>
16939
16940         * driver.c: Disable copyprop, consprop and inline when running
16941         inside the debugger.
16942
16943 2006-04-25  Martin Baulig  <martin@ximian.com>
16944
16945         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16946         with `get_current_thread' and added `detach'.
16947         (MonoDebuggerMetadataInfo): Added `thread_size',
16948         `thread_tid_offset', `thread_stack_ptr_offset' and
16949         `thread_end_stack_offset'.
16950
16951 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16952
16953         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16954         aot-runtime.c.
16955
16956         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16957         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16958
16959         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16960
16961         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16962
16963         * aot.c: Add support for ADJUSTED_IID.  
16964
16965 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16966
16967         * aot.c (emit_method_order): Don't align method_order_end.
16968
16969         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16970         the interface ID changes.
16971
16972 2006-04-21  Dick Porter  <dick@ximian.com>
16973
16974         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16975         cleaning up a thread.  Fixes the new part of bug 77470.
16976
16977 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16978
16979         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16980         to managed wrapper.
16981                      
16982 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16983
16984         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16985         
16986         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16987         SIGSEGV. Fixes #78072.
16988
16989         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16990         unregister our SIGABRT handler.
16991
16992 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16993
16994         * mini.c: Disabled inline where it can alter the call stack in a
16995         way visible from managed code.
16996         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16997         default.
16998
16999 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17002         on other platforms. Fixes #78089.
17003
17004 2006-04-13  Martin Baulig  <martin@ximian.com>
17005
17006         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17007         determine whether we're inside the debugger.
17008
17009         * debug-debugger.h
17010         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17011
17012 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17013
17014         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17015         handler clauses. Fixes #78024.
17016
17017         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17018         in the CALL_MEMBASE opcodes. Fixes #78088.
17019         (mono_arch_get_vcall_slot_addr): Ditto.
17020
17021 2006-04-10  Martin Baulig  <martin@ximian.com>
17022
17023         * debug-debugger.c: The thread handling code has now been moved
17024         into ../metadata/threads.c.
17025
17026 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * driver.c (mono_main): Fix --with-gc=none build.
17029
17030         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17031         (mono_spillvar_offset_float): Ditto.
17032         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17033         hreg, not when its !global, since on ia64, there is a third category: stacked
17034         registers.      
17035
17036 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17037
17038         * mini.c: set MonoInst->klass for load field address and a few other
17039         places.
17040
17041 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17042
17043         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17044
17045 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17046
17047         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17048         the branch opt changes.
17049
17050 2006-04-06  Dick Porter  <dick@ximian.com>
17051
17052         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17053         
17054         * wapihandles.c (mini_wapi_seminfo): 
17055         * driver.c (mono_main): Add semaphore info option
17056
17057 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17058
17059         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17060         branch optimization changes. Fixes #78009.
17061
17062 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17063
17064         * mini.c: ignore accessibility of methods in managed->native wrappers.
17065
17066 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17067
17068         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17069         
17070         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17071
17072 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17073
17074         * mini.c: Modify the branch optimizations to preserve the invariant that
17075         the entries inside the in_bb and out_bb arrays are unique.
17076         (mono_unlink_bblock): Avoid creation of new arrays.
17077
17078 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17079
17080         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17081         change (#77992).
17082
17083 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17084
17085         * mini.c (optimize_branches): Remove the "optimizations" in
17086         the cbranch1/cbranch2 -> branch cases which were causing several
17087         problems in the past. Fixes #77986.
17088
17089 2006-03-31  Chris Toshok  <toshok@ximian.com>
17090
17091         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17092         default optimizations :(
17093
17094 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17095
17096         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17097         branch.
17098
17099 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17100
17101         * local-propagation.c: Added comments to structs and removed
17102         "Mono" prefixes from local tree mover types.
17103
17104 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17105
17106         * Makefile.am (arch_sources): Define this for each architecture so 
17107         libmono_la_SOURCES is defined in one place.
17108
17109 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17110
17111         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17112         from handles/.
17113
17114 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17115
17116         * driver.c: print the GC name supplied by configure.
17117
17118 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17119
17120         * local-propagation.c: Added tree mover, and moved here all the
17121         local propagation code from mini.c
17122         * mini.c: Added support for treeprop, and moved all the local
17123         propagation code to local-propagation.c
17124         * mini.h: Added support for treeprop
17125         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17126         treeprop, inline and deadce by default
17127         * Makefile.am: Added local-propagation.c
17128
17129 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17130
17131         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17132
17133 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17134
17135         * debug-debugger.c: make it compile without the Boehm GC.
17136
17137 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17138
17139         * mini.c: fixed issue with mismatch when an icall is registered
17140         with multiple names but same address.
17141
17142 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17143
17144         * declsec.c, mini-exceptions.c: use write barrier to set reference
17145         fields of managed objects.
17146
17147 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17148
17149         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17150         (can_access_internals): Fix a warning.
17151
17152         * mini.c (print_method_from_ip): Rename this to 
17153         mono_print_method_from_ip so it gets exported.
17154
17155         * trace.c: Deal with strings inside StringBuilder's containing garbage
17156         and fix memory leaks. Fixes #77848.
17157
17158 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17159
17160         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17161         fixes #77787.
17162
17163 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17164         
17165         * mini-s390.c: Remove OP_X86_TEST_NULL.
17166
17167 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17168
17169         * mini.c: use the correct GetHashCode() for the moving collector.
17170
17171 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17172
17173         * liveness.c: Regalloc spill cost tuning.
17174
17175 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17176         
17177         * mini-s390x.h: Correct S390_LONG macro.
17178
17179         * mini-s390x.c: Cleanup unused code.
17180
17181 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17182
17183         * jit-icalls.h: New file.
17184
17185         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17186         icalls and include that instead of including jit-icalls.c.
17187
17188         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17189         OP_X86 opcodes.
17190
17191 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17192
17193         * mini.c: when checking for member accessibility, also check for
17194         friend assemblies and for explicit interface implementations.
17195
17196 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17197
17198         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17199
17200         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17201
17202         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17203         common cases are done first.    
17204
17205         * mini-ops.h: Only define platform specific opcodes on the given platform.
17206
17207         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17208         branch.
17209         
17210 2006-03-14  Martin Baulig  <martin@ximian.com>
17211
17212         Revert Paolo's change from r57348:
17213
17214         * mini.h: don't use gboolean for bitfields.
17215         * mini.c: verifier changes for fields and methods accessibility.
17216
17217 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17218
17219         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17220
17221         * mini-s390x.c: Fix conv_r_un.
17222
17223         * cpu-s390, cpu-s390x.md: Fix lengths.
17224
17225 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17226
17227         * mini.c: nested types have access to all the nesting
17228         levels, not just the enclosing types.
17229
17230 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini.c: added a few more verification checks.
17233
17234 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17235
17236         * liveness.c: Merge optimizations from the linear-il branch.
17237
17238 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17239
17240         * mini-ia64.c (emit_call): Add a comment.
17241
17242         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17243
17244         * tramp-ia64.c: Fix some warnings.
17245
17246 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17247
17248         * mini.h: don't use gboolean for bitfields.
17249         * mini.c: verifier changes for fields and methods accessibility.
17250
17251 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17252
17253         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17254         lazy icall wrapper changes.
17255
17256         * dominators.c: Replace all the dominator algorithms with faster
17257         ones from the linear-il branch.
17258
17259         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17260         the mempool.
17261
17262         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17263         common cases are done first.
17264
17265         * mini-amd64.c: Fix some warnings.
17266
17267         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17268         from the mempool.
17269
17270         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17271         added code.
17272
17273         * mini.h: Add a missing prototype.
17274
17275 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * mini.c: Compile icall wrappers lazily.
17278
17279         * mini-codegen.c: Use printf instead of g_print since its much faster.
17280
17281         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17282         function.
17283
17284         * mini.c (optimize_branches): Cache the negative result from 
17285         remove_block_if_useless ().
17286
17287         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17288         Also fix some bblock linking issues.
17289
17290         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17291         assembly files.
17292
17293         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17294
17295         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17296         accessed fields first, for better cache behavior.
17297         
17298 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17299
17300         * mini.c: speedup IList<T> array accesses.
17301
17302 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17303
17304         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17305         inline_costs counter. Fixes #77190.
17306
17307 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17308
17309         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17310         trace messages. Fixes #77706.
17311
17312 2006-03-04  Martin Baulig  <martin@ximian.com>
17313
17314         * tramp-amd64.c, tramp-x86.c
17315         (mono_debugger_create_notification_function): Use
17316         mono_global_codeman_reserve() to allocate a buffer at runtime and
17317         return it.
17318
17319         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17320
17321         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17322         notification function at runtime and then call `initialize' in the
17323         `MONO_DEBUGGER__debugger_info' vtable.
17324
17325 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17326
17327         * iltests.il: Fix a visibility problem.
17328
17329 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17330
17331         * driver.c, mini.c: add hooks for the counters API.
17332
17333 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17334
17335         * driver.c: show disabled options.
17336
17337 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17338
17339         * linear-scan.c: always use cost-driven selection.
17340
17341 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17342
17343         * jit-icalls.c (helper_compile_generic_method): Revert change from
17344         2006-02-24.
17345
17346 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17347
17348         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17349
17350 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17351
17352         * inssel.brg: style fixes, mostly to force the updated monoburg
17353         to run for people using svn.
17354
17355 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17356
17357         * mini.c: match monoburg changes.
17358
17359 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17360
17361         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17362         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17363         declaration in the header file.
17364
17365 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17366
17367         * helpers.c: reduce relocations and mem usage.
17368
17369 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17370
17371         * mini.h, mini-codegen.c: disable logging features if
17372         requested by configure.
17373
17374 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17375
17376         * mini.c: tiny verifier changes.
17377
17378 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17379
17380         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17381         cpu-pentium.md: stack alignment changes for osx/x86,
17382         partially from Geoff Norton <gnorton@customerdna.com>.
17383
17384 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17385
17386         * jit-icalls.c (helper_compile_generic_method): Update to changes
17387         in metadata/class.c.
17388
17389 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17390         
17391         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17392         
17393         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17394         interface calls with large offsets.
17395
17396 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17397
17398         * jit-icalls.c (helper_compile_generic_method): Document the
17399         special-case we depend on so that we can inflate the method twice
17400         with the same context with no bad side-effects.
17401
17402 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17403
17404         * mini-x86.c, mini-amd64.c: fix for case when xen support
17405         is disabled.
17406
17407 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini-x86.c, mini-amd64.c: generate code to access tls items
17410         in a faster way for Xen systems.
17411
17412 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17413
17414         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17415         updates and compilation fixes for the OSX/x86 port, mostly from
17416         Geoff Norton <gnorton@customerdna.com>.
17417
17418 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17419
17420         * inssel.brg: faster interface call implementation
17421         to sync with the interface_offsets MonoVTable changes.
17422
17423 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17424
17425         * mini.c: more verification checks.
17426
17427 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17428
17429         * mini.c: added a few more verification checks.
17430
17431 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17432
17433         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17434         facility on the processor and use it if available.
17435
17436 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17437
17438         * driver.c, aot.c, mini.c: throw exception if the IL code is
17439         invalid or unverifiable.
17440
17441 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17442
17443         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17444         m.StructField.
17445
17446 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17447
17448         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17449
17450 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17451
17452         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17453         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17454         handling of instantiated generic valuetypes.
17455
17456 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17457
17458         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17459         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17460         instead.
17461
17462         * generics.2.cs: Revert the nullable reftypes tests.
17463
17464 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17465
17466         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17467         using __builtin_frame_address (1) as it doesn't work in the presence
17468         of optimizations. Hopefully fixes #77273.
17469
17470         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17471         -> generics.cs change as it doesn't work with some automake versions.
17472
17473 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17474
17475         * mini.c: handle systems that sue a different way to
17476         retrieve the stack address of the current thread.
17477
17478 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17479
17480         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17481         it specially in the makefile.
17482
17483         * generics.2.cs: Add tests for nullable reference types.
17484
17485 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17486
17487         * mini.c: always handle the case when mono_jit_init()
17488         is called in a thread different from the main thread,
17489         confusing libgc (bug #77309).
17490
17491 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17492
17493         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17494
17495 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17496
17497         * mini.c: change optimize_branches () to use a single loop
17498         and introduce a new optimization to simplify some range checks.
17499
17500 2006-02-03  Martin Baulig  <martin@ximian.com>
17501
17502         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17503         and merged with debugger_thread_manager_add_thread().
17504         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17505         inform the debugger about the main thread.
17506
17507 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17508
17509         * basic.cs: Add test for div.un/rem.un constant folding.
17510
17511 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17512
17513         * cpu-s390x.md: correct int_xor_imm length
17514
17515 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17516
17517         * generics.2.cs: New test for #77442.
17518
17519         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17520         #77442.
17521
17522 2006-02-02  Martin Baulig  <martin@ximian.com>
17523
17524         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17525         <mono/metadata/mono-debug-debugger.h>   
17526
17527         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17528
17529 2006-02-02  Martin Baulig  <martin@ximian.com>
17530
17531         * debug-debugger.h: New header file for debug-debugger.c.
17532
17533         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17534         function is a separate thread anymore; add support for attaching.
17535
17536 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17537
17538         * tramp-x86.c: Fix a warning.
17539
17540 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17541
17542         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17543         on very large methods.
17544
17545         * aot.c (load_patch_info): Fix a warning.
17546
17547 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17548
17549         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17550         mini-ops.h: alu membase optimizations.
17551
17552 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17553
17554         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17555         to speedup StringBuilder.
17556
17557 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17558
17559         * dominators.c (mono_compute_natural_loops): Fix detection of
17560         loop body start blocks.
17561
17562         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17563
17564 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17567         #75145.
17568
17569 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17570
17571         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17572
17573 2006-01-25  Martin Baulig  <martin@ximian.com>
17574
17575         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17576         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17577         started to cleanup this file a little bit.
17578
17579 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17580
17581         * mini.c: optimize a codepath frequently happening in generics code.
17582
17583 2006-01-23  Martin Baulig  <martin@ximian.com>
17584
17585         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17586
17587         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17588         functions directly.
17589
17590         * driver.c: debug-debugger.c is only available if
17591         `MONO_DEBUGGER_SUPPORTED' is defined.   
17592
17593 2006-01-23  Martin Baulig  <martin@ximian.com>
17594
17595         * debug-debugger.c: Only enable this on platforms where the Mono
17596         Debugger is working (x86 and x86_64).
17597
17598 2006-01-21  Martin Baulig  <martin@ximian.com>
17599
17600         The Mono Debugger is now using the normal `mono' instead of the
17601         `mono-debugger-mini-wrapper' when executing managed code.
17602
17603         * debug-debugger.c: New file; previously known as
17604         debugger/wrapper/wrapper.c.
17605
17606         * debug-mini.c (mono_init_debugger): Removed.
17607
17608         * driver.c (mono_main): Added new `--inside-mdb' command line
17609         argument which is used when running inside the debugger.
17610
17611 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17612
17613         * liveness.c (mono_analyze_liveness): Remove some unused data
17614         structures.
17615
17616 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17617
17618         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17619
17620 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17621
17622         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17623         depends on implementation details of monobitset.
17624
17625         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17626         Fixes #77271.
17627
17628 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17629
17630         * liveness.c: Update after monobitset changes.
17631
17632 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17633
17634         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17635
17636 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17637
17638         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17639
17640         * mini-s390x.c: Remove warning messages.
17641
17642 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17643
17644         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17645
17646 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17647
17648         * generics.2.cs: Add ldelem/stelem_any test.
17649
17650 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17651
17652         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17653
17654 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17655
17656         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17657         
17658 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17659
17660         * generics.2.cs: Reenable vtype tests.
17661
17662         * inssel-x86.brg: Remove an icorrect valuetype rule.
17663
17664 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17665
17666         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17667         initial support for OP_ABS.
17668
17669 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17670
17671         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17672
17673 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17674
17675         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17676         conversion and implement LADD/LSUB.
17677
17678         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17679         architectures.
17680
17681 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17682
17683         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17684
17685         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17686         architectures.
17687
17688 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17689
17690         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17691         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17692         (stack walk problem).
17693
17694 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17695
17696         * aot.c (mono_aot_load_method): Fix a warning.
17697
17698 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17699
17700         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17701
17702 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * iltests.il: Add test for #77148.
17705
17706         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17707         #77148.
17708
17709 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17710
17711         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17712
17713 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17714
17715         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17716         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17717
17718         * basic-long.cs: Add lconv-to-r4/r8 tests.
17719
17720 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17721
17722         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17723
17724         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17725         here as on other archs.
17726
17727 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17728
17729         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17730
17731 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17732
17733         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17734         
17735         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17736
17737         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17738         instrument_prolog; Add memory_barrier instruction.
17739
17740 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17741
17742         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17743
17744 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17745
17746         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17747
17748         * aliasing.c inssel.brg: Fix warnings.
17749
17750         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17751         could skip initialization of some parts of memory.
17752
17753         * mini.c mini-ia64.c: Fix warnings.
17754
17755         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17756
17757 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17758
17759         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17760         a crash seen on sparc.
17761
17762         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17763         
17764         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17765
17766 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17767
17768         * mini-ops.h: Add s390_backchain instruction
17769
17770         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17771
17772         * cpu-s390.md: Add s390_backchain instruction
17773
17774         * mini-s390.c: Significant ABI changes
17775
17776         * mini-s390.h: Cater for zero length structures
17777
17778 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17779
17780         * mini-s390.c: ABI fixes
17781
17782         * inssel-s390.brg: Remove debug statements
17783
17784         * cpu-s390.md: Fix length of ATOMIC_xx operations
17785
17786 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17787
17788         * basic-float.cs: Add float<->long conversion tests.
17789
17790 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17791
17792         * mini-s390.c: Fix LOCALLOC processing.
17793
17794         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17795
17796 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17797
17798         * iltests.il: Add tests for some opcodes not covered by the other
17799         tests.
17800
17801 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17802
17803         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17804         register loading for Tail processing; Correct trace output.
17805
17806         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17807
17808         * cpu-s390.md: Correct size of jmp instruction. 
17809
17810 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17811
17812         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17813
17814 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17815
17816         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17817           Bring s390 up to current level.
17818
17819 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17820
17821         * generics.2.cs: Disable the newly added tests as they do not work yet.
17822         
17823         * generics.2.cs: Add valuetype tests.
17824
17825 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17826
17827         * basic-long.cs: Add i4->u8 test.
17828
17829         * objects.cs: Add tests for JIT intrinsic.
17830
17831         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17832         optimizations lost by a mistake.
17833
17834 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17835
17836         * basic-long.cs: Remove a test moved to objects.cs.
17837
17838         * arrays.cs: Add more array tests.
17839
17840 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17841
17842         * arrays.cs: Add new tests for multi-dimensional arrays.
17843
17844 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17845
17846         * Makefile.am (test_sources2): Add generics.2.cs.
17847         (EXTRA_DIST): Add test_sources2.
17848
17849 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17850
17851         Support for boxing and unboxing nullable types as well as the
17852         isinst operation on nullables, per the CLI ammendment.
17853
17854         * inssel.brg (CEE_ISINST): Special case for nullable
17855
17856         * mini.c (handle_unbox_nullable): new method
17857         (handle_box): Special case for nullable types
17858         (mono_method_to_ir): Call handle_unbox_nullable in correct
17859         places.
17860
17861         * generics.2.cs: New test suite
17862
17863         * Makefile.am: Support for regression tests with generics.
17864
17865 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17866
17867         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17868         allocated to registers. Fixes #76800.
17869
17870 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17871
17872         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17873
17874 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17875
17876         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17877         of platforms.
17878
17879 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17880
17881         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17882         objects.cs.
17883
17884         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17885         
17886         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17887 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17890         single precision before storing to a single precision location.
17891
17892 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17893
17894         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17895
17896 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17897
17898         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17899         correct files.
17900
17901         * basic.cs: Remove test_0_byte_compares test which was moved to
17902         objects.cs a long time ago.
17903
17904 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17905
17906         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17907
17908 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17909
17910         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17911         handlers are called.
17912
17913         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17914         throwing code.
17915
17916          * mini-ia64.c: Add support for the throw->branch exception 
17917         optimization.   
17918
17919         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17920
17921 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17922
17923         * mini.c: Enabled "fastpath" deadce :-)
17924         
17925 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17926
17927         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17928         alias analysis pass to support it.
17929         * mini.h: Likewise.
17930         * ssa.c: Likewise.
17931         * liveness.c: Likewise (liveness computation can use aliasing
17932         information to be more accurate).
17933         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17934         moreover made so that "--compile-all" uses the given optimization
17935         flags and not the default ones.
17936         * aliasing.c: Alias analysis (new file).
17937         * aliasing.h: Likewise.
17938         * Makefile.am: added "aliasing.c" and "aliasing.h".
17939         
17940 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17941
17942         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17943         OP_L opcodes.
17944
17945 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17946
17947         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17948         fp >= end_of_stack exit condition, as it is not needed, and it might
17949         become true for fp eliminated frames.
17950
17951 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17952
17953         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17954         coded offsets.
17955
17956 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17957
17958         * mini-arm.c: fixed alignment of doubles/longs to match
17959         the C ABI (bug #76635).
17960
17961 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17962
17963         * aot.c: fix compilation with --enable-minimal=aot.
17964
17965 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17966
17967         * mini-arm.c: fixed compatibility with the new
17968         floating point emulator package for compares.
17969
17970 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17971
17972         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17973
17974 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17975
17976         * mini-exceptions.c (print_stack_frame): Output to stderr.
17977         (mono_handle_native_sigsegv): Ditto.
17978
17979 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17980
17981         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17982         OP_LCONV_TO_OVF_I implementation.
17983
17984         * mini-amd64.c: Add support for the throw->branch exception 
17985         optimization.
17986
17987         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17988         when the catch clause catches a more general exception, i.e. Object.
17989
17990 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17991
17992         * cpu-ia64.md: Remove unused opcodes.
17993
17994         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17995         specific defines for architectures defining USE_SIGACTION.
17996
17997         * mini-ia64.c: Fix some warnings.
17998
17999         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18000         version seemed to skip a frame.
18001
18002 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18005         only calls which are made to native code use this flag.
18006
18007 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18010         varargs methods as well.
18011         
18012         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18013         which have save_lmf set. Reorganize methods prologs a bit.
18014
18015         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18016         debugger to the proper place.
18017
18018 2005-10-29  Martin Baulig  <martin@ximian.com>
18019
18020         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18021         when running inside the debugger until the debugger has support
18022         for it.
18023
18024 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18025
18026         * mini.h: Fix a warning.
18027
18028 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18029
18030         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18031         we expose publicly, this returns the string.
18032
18033 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18034
18035         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18036         with fp elimination.
18037
18038 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18039
18040         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18041         native stacktrace using the glibc 'backtrace' function if available.
18042
18043 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18044
18045         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18046
18047         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18048         handle SIGSEGVs received while in native code.
18049
18050         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18051         code, call mono_handle_native_sigsegv which will abort the runtime
18052         after printing some diagnostics, instead of converting it into a
18053         confusing NullReferenceException.
18054
18055 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18056
18057         * cpu-pentium.md: Remove unused opcodes.
18058
18059 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18060
18061         * mini-amd64.h (MonoLMF): Add rsp field.
18062
18063         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18064         the lmf too.
18065
18066 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18067
18068         * mini-codegen.c (get_register_spilling): Fix some warnings.
18069
18070 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18071
18072         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18073         elimination during exception handling. Enable fp elimination by
18074         default.
18075
18076         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18077         elimination.
18078
18079 2005-10-16  Martin Baulig  <martin@ximian.com>
18080
18081         * mini-exceptions.c
18082         (mono_debugger_run_finally): New public method for the debugger.
18083
18084 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18085
18086         * debug-mini.c (mono_debug_init_method): Fix warning.
18087
18088         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18089         the 'exname' parameter const to fix some warnings.
18090
18091 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18092
18093         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18094         introduced by the previous patch.
18095
18096 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18097
18098         * basic-float.cs: Add test for precision of float arithmetic.
18099
18100         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18101         when loading/storing single values from/to memory.
18102
18103         * mini.c (mono_jit_compile_method_with_opt): Create the function
18104         pointers in the correct domain.
18105
18106 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18107
18108         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18109         introduced by previous patch.
18110         
18111         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18112         when out_filter_idx is NULL.
18113
18114         * mini-exceptions.c: Don't run filter clauses twice during exception
18115         handling. Fixes #75755.
18116
18117 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18118
18119         * aot.c: Add support for ldflda wrappers.
18120
18121         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18122         #75902.
18123
18124 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18125
18126         * mini.c, mini.h: do not consider exception handlers blocks when
18127         setting up interface variables.
18128
18129 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18130
18131         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18132
18133 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18134
18135         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18136         causes a regression.
18137
18138         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18139
18140 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18141
18142         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18143         of the OP_P definitions.
18144
18145         * TODO: Add a proposal for dealing with the CEE/OP mess.
18146
18147         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18148         optimizations from the x86 port.
18149
18150         * cpu-amd64.md: Ditto.
18151
18152         * basic.cs basic-long.cs: Add tests.
18153
18154 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18155
18156         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18157         Patrik Torstensson's implementation of my exception-handling
18158         optimization idea, when the exception object is not used
18159         (bug #62150).
18160
18161 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18162
18163         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18164         of the mul_imm optimizations from the old jit.
18165
18166 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18167
18168         * mini.c, liveness.c: patch by Patrik Torstensson and
18169         Zoltan Varga to improve performance in methods with
18170         exception clauses.
18171
18172 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18173
18174         * driver.c: Remove 'Globalization' entry from --version.
18175
18176 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18177
18178         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18179         there is a profiler interested in JIT events.
18180
18181         * aot.c: Load profile files produced by the AOT profiling module, and
18182         reorder methods based on the profiling info. Add a 'method_order' table
18183         to the AOT file to make mono_aot_find_jit_info work with the reordered
18184         methods.
18185
18186         * mini.h: Bump AOT file version info.
18187
18188 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18189
18190         * mini-arm.h: work around what looks like a gcc bug when optimizations
18191         are enabled.
18192
18193 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18194
18195         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18196         conditionals.  Use ...
18197         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18198
18199 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18202         to determine the amount of memory to copy when passing valuetypes.
18203
18204         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18205         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18206
18207 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18208
18209         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18210         information about aot.
18211
18212 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18213
18214         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18215         macros. This will allow a deadlock debugger to easily be plugged
18216         in.
18217
18218 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18219
18220         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18221
18222 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18223
18224         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18225         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18226         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18227         ($(arch_built)) [CROSS_COMPILING]: Error out.
18228
18229 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18230
18231         * aot.c: Add support for the no_special_static flag for classes.
18232
18233 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * Reapply reverted patches.
18236
18237         * *: Revert r50174 as well.
18238
18239         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18240
18241 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18242
18243         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18244
18245 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18246
18247         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18248         part of the SIG_HANDLER_SIGNATURE.  
18249
18250 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18251
18252         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18253         statistics.
18254
18255         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18256         introduced by previous patch.
18257
18258 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18259
18260         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18261         saved registers too.
18262
18263         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18264         upon the information returned by get_call_info ().
18265         
18266         * mini-x86.c (add_float): Fix stack size calculation.
18267         (mono_arch_call_opcode): Rewrite this so it works based up the
18268         information returned by get_call_info ().
18269         (mono_arch_get_this_vret_args): Ditto.
18270
18271 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18272
18273         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18274         in cinfo to determine the registers which need to be used.
18275
18276 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18277
18278         * driver.c (mono_main): Add --server and --desktop flags. 
18279
18280 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18283         registers as global registers.
18284
18285         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18286         longer needed with the new register allocator.
18287
18288         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18289
18290         * cpu-ia64.md: Remove unused opcodes.
18291         
18292         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18293         
18294 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18295
18296         * cpu-amd64.md: Remove unused opcodes.
18297
18298         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18299         needed with the new register allocator.
18300
18301         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18302         reg-reg moves.
18303
18304 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18305
18306         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18307
18308 2005-09-16  Martin Baulig  <martin@ximian.com>
18309
18310         * exceptions-amd64.c
18311         (throw_exception): Don't call mono_debugger_throw_exception() if
18312         we're a rethrow - see the FIXME in the code.
18313
18314 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18315
18316         * mini.c (mono_init_exceptions): This only works on some architectures.
18317         
18318 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18319
18320         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18321         on ia64.
18322
18323         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18324
18325         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18326         now in mini-exceptions.c.
18327
18328 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18329
18330         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18331         now in mini-exceptions.c.
18332
18333 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18334
18335         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18336         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18337
18338         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18339         code into mini-exceptions.c. Add some assertions to it.
18340
18341 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18342
18343         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18344         (<software@solmersa.com>). Fix as errors on windows.
18345
18346 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18347
18348         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18349         method info into the LMF.
18350
18351 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18352         
18353         * mini-ia64.c: Add proper unwind info for method epilogs.
18354
18355         * exceptions-ia64.c: Add some code to help debugging.
18356         
18357         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18358
18359         * mini-exceptions.c: Fix warning.
18360
18361 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18362
18363         * mini.c: Really fix build.
18364
18365         * mini-x86.c mini-amd64.c: Fix build.
18366
18367 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18368
18369         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18370
18371         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18372         some Interlocked methods as intrinsics.
18373
18374         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18375         for Thread methods as well.
18376
18377         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18378
18379         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18380
18381         * mini-ia64.c mini-x86.c mini-amd64.c 
18382         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18383         OP_MEMORY_BARRIER.
18384         
18385         * mini.c (mono_init_exceptions): Fix build breakage.
18386
18387 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18388
18389         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18390         of instructions. Use the new ia64_unw_op macros for emitting unwind
18391         info.
18392
18393         * mini.c (mono_init_exceptions): Initialize exception handling
18394         related trampolines at startup.
18395
18396 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18397
18398         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18399
18400 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18401
18402         * mini.c: Handle type loading errors gracefully during compilation and
18403         throw the appropriate exception.
18404
18405 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18406
18407         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18408         for the mono binary.
18409
18410 2005-09-09  Martin Baulig  <martin@ximian.com>
18411
18412         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18413         the release.
18414
18415 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18416
18417         * mini-arm.h: use emulation for conv.r.un for the release.
18418
18419 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18420
18421         * mini-arm.c, objects.cs: more fixes and tests for them.
18422
18423 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18424
18425         * mini-arm.c: align structures to at least 4 bytes to be able
18426         to keep our current optimized memcpy.
18427
18428 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18429
18430         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18431
18432 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18433
18434         * mini.c: ignore SIGPIPE.
18435
18436 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18437
18438         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18439
18440         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18441
18442 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18443
18444         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18445
18446 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18447
18448         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18449         exception handling support.
18450         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18451         patch by Brian Koropoff <briank@marakicorp.com>).
18452
18453 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18454
18455         * mini.c: revert another 'optimization' which breaks when
18456         items on the eval stack need to be saved at a basic block end
18457         (bug #75940).
18458
18459 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18460
18461         * jit-icalls.c: for arrays, ensure we always provide
18462         lower bounds.
18463
18464 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18465
18466         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18467         
18468         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18469
18470 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18471
18472         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18473         arguments in their original register.
18474
18475 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18476
18477         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18478         memset/memcpy.
18479
18480         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18481         when ssapre is enabled.
18482
18483         * inssel-long.brg: Fix bug in previous patch.
18484
18485         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18486         multiplication by a constant.
18487
18488 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18491         icc.
18492
18493         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18494         saving registers.
18495
18496 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18497
18498         * inssel-arm.brg: apply changes tested by Brian Koropoff
18499         <briank@marakicorp.com>.
18500
18501 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18502
18503         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18504         
18505 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18506
18507         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18508         to the same register if dreg is just a base register.
18509         (print_ins): Improve printing of membase opcodes.
18510
18511         * inssel-x86.brg: Add optimized ldind(reg) rules.
18512
18513         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18514
18515 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18516
18517         * mini.c: when running under valgrind, set the stack bottom for
18518         the GC at the actual approximate stack for the app (fixes running
18519         mono with valgrind).
18520
18521 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18522
18523         * mini.c: do no break at the first valuetype to init found
18524         (fixes bug #75791).
18525
18526 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18527
18528         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18529
18530 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18531
18532         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18533
18534 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18535
18536         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18537
18538 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18541
18542         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18543         code.
18544
18545         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18546         code.
18547
18548         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18549         methods.
18550
18551 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18552
18553         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18554
18555 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18556
18557         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18558         in the tail recursion optimization.
18559
18560         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18561         debug info into the assembly file.
18562
18563         * iltests.il: Add test for filter regions.
18564
18565         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18566         initial stack of filter regions. Fixes #75755.
18567
18568 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18569
18570         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18571         stack requirements.
18572
18573 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18574
18575         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18576         the check for an already compiled method on non-ia64 platforms.
18577         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18578         proper domain.
18579
18580         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18581
18582         * inssel-x86.brg: Add some optimized call rules.
18583
18584 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18587         method here.
18588
18589         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18590         mono_arch_patch_delegate_trampoline.
18591
18592         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18593
18594         * mini-trampolines.c: Fix build.
18595
18596         * mini-amd64.h: Add delegate trampolines.
18597
18598         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18599
18600         * inssel-amd64.brg: Add optimized call rules.
18601         
18602         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18603
18604         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18605
18606 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18607
18608         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18609         change.
18610
18611         * mini-ia64.c: Remove LMF fixmes.
18612
18613         * mini-ia64.h: Remove most fields from LMF.
18614
18615         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18616
18617         * mini-trampolines.c: Add support for IA64 function descriptors.
18618
18619         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18620         for IA64 function descriptors.
18621
18622 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18623
18624         * tramp-arm.c: patch the vtable for virtual calls. Added
18625         support code to register/unregister the LMF.
18626         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18627         more LMF work.
18628
18629 2005-08-19  Dick Porter  <dick@ximian.com>
18630
18631         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18632         bit value if needed.
18633
18634 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18635
18636         * mini.c (mini_get_method): Move handling of wrapper data here.
18637
18638         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18639
18640         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18641         virtual.
18642
18643         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18644         bblock->code does not remain empty.
18645
18646 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * arrays.cs: Add regression test for #75832.
18649
18650         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18651         rules. Fixes #75832.
18652
18653         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18654         instruction scheduling.
18655
18656 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18657
18658         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18659
18660 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18661
18662         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18663
18664         * mini-codegen.c: Fix VC build.
18665
18666         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18667
18668 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18669
18670         * mini.h: fix signature for mono_register_opcode_emulation.
18671
18672 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18673
18674         * mini.c: Get rid of most of the helper_sig_... constants using
18675         mono_create_icall_signature ().
18676
18677 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18678
18679         * jit-icalls.c (helper_ldstr): New helper function.
18680
18681         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18682
18683         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18684         throw, load the string using a helper call instead of creating a string object.
18685
18686         * aot.c: Update after LDSTR changes.
18687
18688         * mini.h: Bump AOT file version.
18689         
18690         * aot.c: Save class size info into the AOT file. Print more statistics during
18691         compilation.
18692
18693         * mini.h: Bump AOT file version.
18694
18695         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18696         ordering of disasm cases. Fixes #74957.
18697
18698 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18699
18700         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18701         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18702         the generic code needed for the ARM port.
18703
18704 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18707         inssel-arm.brg: more ARM features and fixes.
18708
18709 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18710
18711         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18712         ARM port work in progress.
18713
18714 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18717
18718         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18719
18720         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18721
18722         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18723
18724         * *-ia64.*: Ongoing IA64 work.
18725         
18726         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18727
18728 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18729
18730         * TODO: Remove out-of-data todo stuff.
18731
18732         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18733         dead code.
18734
18735         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18736
18737         * mini.h: Bump corlib version.
18738
18739 2005-07-27  Martin Baulig  <martin@ximian.com>
18740
18741         * mini-codegen.c
18742         (create_copy_ins): Added `const unsigned char *ip' argument; set
18743         `copy->cil_code' from it.
18744
18745 2005-07-27  Martin Baulig  <martin@ximian.com>
18746
18747         * mini-exceptions.c (mono_handle_exception): Don't call
18748         mono_debugger_handle_exception() for filters.
18749
18750 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18753         as well.
18754
18755 2005-07-26  Martin Baulig  <martin@ximian.com>
18756
18757         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18758
18759         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18760         helper_compile_generic_method() if the method is actually virtual
18761         and non-final.
18762
18763 2005-07-26  Martin Baulig  <martin@ximian.com>
18764
18765         * mini.c
18766         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18767         public; this is now accessed directly by the debugger.
18768         (mono_generic_trampoline_code): Removed.
18769
18770         * debug-mini.c
18771         (mono_debug_init_method): Also add interncalls and wrappers.
18772
18773 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18776
18777 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18780
18781 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18782
18783         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18784
18785 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18788         getting TLS offsets on AMD64 too.
18789
18790 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18791
18792         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18793
18794 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18795
18796         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18797         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18798
18799 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18802
18803         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18804         to mini.c.
18805
18806         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18807         mono_sparc_is_virtual_call ().
18808         
18809         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18810
18811         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18812         trampoline parameters.
18813
18814         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18815         
18816         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18817         to mono_arch_get_vcall_slot_addr.
18818
18819         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18820         trampoline code.
18821
18822         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18823
18824 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18825
18826         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18827
18828 2005-07-19  Martin Baulig  <martin@ximian.com>
18829
18830         * exceptions-amd64.c (throw_exception): Call
18831         mono_debugger_throw_exception() here like we're doing it on i386.
18832
18833 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * mini-ia64.c: Add optimized TLS access support.
18836
18837 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini-exceptions.c: Ongoing IA64 work.
18840
18841         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18842
18843         * mini.c: Use the default optimization set when embedding. Fixes
18844         #75194.
18845
18846 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18847
18848         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18849         of trampolines to a separate file.
18850
18851         * mini-trampolines.c: New file.
18852
18853         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18854         separate file.
18855         
18856         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18857         amd64/ia64 code.
18858
18859         * mini-codegen.c: Fix cygwin build.
18860
18861 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18862
18863         * mini.c: Add some minor changes needed by the IA64 port.
18864
18865         * *-ia64.*: Ongoing IA64 work.
18866
18867 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18868
18869         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18870         trampolines into arch-independent and arch-dependent parts.
18871
18872         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18873
18874 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18875
18876         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18877
18878         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18879         the xp-regalloc-branch for amd64.
18880
18881         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18882         xp-regalloc-branch for x86.
18883
18884 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18885
18886         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18887
18888 2005-07-06  Martin Baulig  <martin@ximian.com>
18889
18890         * mini.c
18891         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18892         (mono_jit_runtime_invoke): Likewise.
18893
18894 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18897         on x86 too.
18898         
18899         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18900         without loading their metadata. Reorganize the file format so exception handling+
18901         debug info is kept separate from normal method info. Create MonoJitInfo 
18902         structures for methods lazily.
18903
18904         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18905         loading metadata.
18906         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18907
18908         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18909
18910         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18911         in AOT code.
18912
18913         * mini.h: Bump AOT file version.
18914
18915 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18916
18917         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18918
18919 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18920
18921         * Makefile.am (check-local): Call semdel-wrapper.
18922
18923 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18924
18925         * mini-x86.c: Revert the last change as it seems to break the build..
18926
18927 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18928
18929         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18930         
18931         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18932
18933 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18934
18935         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18936         outside of the macro, so strange stuff doesn't happen with gcc4
18937         (NEW_AOTCONST_TOKEN): Likewise.
18938
18939 2005-06-28  Martin Baulig  <martin@ximian.com>
18940
18941         * mini.c (mini_class_is_system_array): New static method; use this
18942         instead of `klass->parent == mono_defaults.array_class' everywhere
18943         since this also works for the new generic array class.
18944
18945 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18946
18947         * inssel.brg: Remove warnings.
18948
18949 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18950
18951         * mini-ia64.c: Ongoing IA64 work.
18952
18953         * basic-float.cs: Add float->i1 conversion test.
18954
18955         * iltests.il: Add conv.u4 test.
18956
18957 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18958
18959         * inssel-long.brg: Fix bug caused by last change.
18960
18961 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18962
18963         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18964         BSDs.  Allows the x86 JIT to work on OSX86
18965
18966 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18969         u4->i8 conversion.
18970
18971         * mini-ia64.c: Ongoing IA64 work.
18972
18973 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18974
18975         * mini-ia64.c: Ongoing IA64 work.
18976
18977         * driver.c: Clean up jit_code_hash as well when using --regression.
18978
18979         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18980
18981         * basic-long.cs: Add tests for long->u4 conversion.
18982
18983 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18984
18985         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18986         that we do not depend on undefined C behavior: the order stuff
18987         gets evaluated within an expression. Fixes mono when compiled on
18988         GCC 4.
18989
18990 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18991
18992         * *-ia64.*: Ongoing IA64 work.
18993
18994         * aot.c: Lower memory usage while loading AOT methods.
18995
18996         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18997
18998         * mini.h: Bump AOT file format version.
18999
19000 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19003
19004 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19005
19006         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19007         not on callee assembly). Fixed some comments.
19008
19009 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19012         it gets proper disassembly.
19013         (emit_method_info): Remove some dead code.
19014
19015         * mini.c (mini_method_compile): Allways allocate the GOT var in
19016         mono_method_to_ir for emulating opcodes.
19017
19018 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19021         before freeing the code memory. Fixes #74990.
19022
19023         * objects.cs: Add regression test for #74992.
19024
19025         * liveness.c: Extend live ranges of arguments to the beginning of the
19026         method. Fixes #74992.
19027
19028         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19029         so it points into the faulting instruction.
19030
19031 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19032
19033         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19034
19035         * *-ia64.*: Ongoing IA64 work.
19036
19037         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19038
19039 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19040
19041         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19042
19043         * *-ia64.*: Ongoing IA64 work.
19044
19045 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19046
19047         * basic-long.cs: Add tests for add/sub.ovf.
19048
19049         * basic.cs: Add tests for sub.ovf.
19050
19051         * *-ia64.*: Ongoing IA64 work.
19052
19053 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * *-ia64.*: Ongoing IA64 work.
19056
19057         * basic.cs: Add conv.ovf.i4.un test.
19058
19059 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19060
19061         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19062         
19063 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19064
19065         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19066
19067 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19068
19069         * *-ia64.*: Ongoing IA64 work.
19070
19071 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19072
19073         * trace.[ch]:
19074         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19075
19076 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19079
19080 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19081
19082         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19083
19084         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19085         of a call is callable by a near call.
19086
19087 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini-ia64.c: Ongoing IA64 work.
19090
19091 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * genmdesc.c: Make the generated array non-static.
19094
19095         * inssel-long.brg: Fix LSHR_IMM rule.
19096
19097         * *-ia64.*: Ongoing IA64 work.
19098
19099         * *-ia64.*: Ongoing IA64 work.
19100
19101 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * *-ia64.*: Ongoing IA64 work.
19104
19105         * *-ia64.*: Ongoing IA64 work.
19106         
19107         * mini-ia64.c: Ongoing IA64 work.
19108
19109         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19110
19111 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19114         
19115         * objects.cs basic-long.cs: Move some tests to objects.cs.
19116
19117 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19118
19119         * *-ia64.*: Ongoing IA64 work.
19120
19121         * iltests.il: Add a new test.
19122
19123         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19124         newobj. Fixes #75042.
19125
19126 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19127
19128         * *-ia64.*: Ongoing IA64 work.
19129         
19130         * *-ia64.*: Ongoing IA64 work.
19131         
19132         * *-ia64.*: Ongoing IA64 work.
19133
19134         * basic.cs objects.cs: Move tests accessing static variables as well.
19135
19136         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19137
19138 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19139
19140         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19141
19142         * driver.c: Always print failed tests.
19143
19144         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19145         frame pointer.
19146
19147         * *ia64*: Ongoing IA64 work.
19148
19149 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19150
19151         * basic.cs: Add tests for add.ovf. Fix warnings.
19152
19153 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19154
19155         * driver.c (mono_main): Avoid crash if no argument is passed to
19156         --break;  Do not use g_error, but f_printf.   And fix all other
19157         ocurrences of the same crash.
19158
19159 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19162         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19163         Fixes #74742.
19164
19165 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * *-ia64.*: Add beginnings of IA64 backend.
19168
19169         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19170
19171 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19174         Fixes #74925.
19175
19176         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19177
19178         * mini-amd64.c: Fix a warning.
19179
19180 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19183         in float_neg. Fixes #74897.
19184
19185         * mini-amd64.c (emit_call): Fix another near call bug.
19186
19187 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19188
19189         * declsec.c: Keep the appdomain information in the structure. Added a 
19190         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19191         value gets overwritten).
19192         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19193         an MonoAppDomain member to MonoSecurityFrame.
19194         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19195         used in the stack walk. Now use a MonoArray which grow (double) when
19196         it gets full.
19197
19198 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19199
19200         * mini.c: Re-enabled runtime cleanup, since running threads should
19201         now properly stop when exiting.
19202
19203 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * mini-codegen.c: New file contaning the arch-independent local
19206         register allocator. Not used by any architectures yet.
19207
19208         * mini.h linear-scan.c: Merge some changes from the 
19209         mini-xp-local-regalloc branch.
19210
19211 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19212
19213         * mini-amd64.c (emit_call): Fix calls to native functions when the
19214         runtime is compiled as a shared library. Fixes #74756.
19215
19216         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19217         on a literal field. Fixes #74751.
19218
19219 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19220
19221         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19222
19223 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * objects.cs: Add missing null casting test.
19226
19227 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19228
19229         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19230         in wrapper methods. Also rename 'address' variable to 'offset'.
19231
19232 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19233
19234         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19235         warnings.
19236         
19237         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19238
19239         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19240         work on windows.
19241
19242 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19243
19244         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19245
19246 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19249         just the last bytes.
19250
19251 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * aot.c (mono_compile_assembly): Fix warning.
19254
19255         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19256         by the _MSC_VER stuff.
19257
19258 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * inssel-long.brg: Fix #74588.
19261
19262         * cpu-amd64.md: Fix #74591.
19263
19264         * iltests.il: Add new regression tests.
19265
19266 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19269         valuetype.
19270
19271 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19274
19275         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19276         from Bill Middleton <flashdict@gmail.com>.
19277
19278 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * arrays.cs: Add new regression test. Fix warnings.
19281
19282 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19285         and leakage in CKFINITE.
19286
19287         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19288         this to a null op since it is called on amd64 too.
19289
19290         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19291
19292         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19293         body since this is not used on amd64.
19294         
19295         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19296
19297         * mini-amd64.c: Remove obsolete fixmes.
19298
19299         * mini.c (print_method_from_ip): Fix debugging support.
19300
19301 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19302
19303         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19304         so that expressions that don't give much gain are not reduced.
19305         * ssapre.h: Likewise.
19306
19307 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19310
19311         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19312
19313         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19314
19315 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19318
19319         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19320
19321 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19324         stack touching.
19325
19326         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19327
19328         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19329
19330         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19331
19332         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19333         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19334
19335         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19336
19337         * mini-x86.c: Fix up stack overflow handling.   
19338
19339         * exceptions.cs: Add new regression test.
19340
19341 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19344         mono_jit_thread_attach.
19345
19346         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19347
19348 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19351         avoid calling constructors using callvirt.
19352
19353         * inssel.brg: Fix #74073.
19354
19355 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19356
19357         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19358         compilation with non-GCC compilers.
19359         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19360         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19361
19362 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19363
19364         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19365         klass->interface_offsets (will likely fix bug#74073).
19366
19367 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19368
19369         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19370
19371 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19374         to amd64_div_reg_size ().
19375         
19376         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19377
19378 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19381
19382 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19385
19386 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19387
19388         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19389         
19390         * mini.c (mono_precompile_assembly): Load and precompile referenced
19391         assemblies as well. Fixes #74015.
19392
19393 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19396
19397 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19398
19399         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19400         a lot of checks and (anyway) permissions cannot work until corlib is 
19401         loaded.
19402
19403 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19404
19405         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19406
19407 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19408
19409         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19410         calls (fixes bug#72824).
19411
19412 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19413
19414         * mini.c: fix tail recursion elimination (see test in bug#73936).
19415
19416 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19417
19418         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19419         some fp functions in sse2 mode.
19420
19421 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19422
19423         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19424
19425 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * mini.h mini.c: Add mono_get_jit_tls_key ().
19428
19429         * mini-x86.c: Enable fast TLS support on windows.
19430
19431 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19432
19433         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19434         * mini.c: Check for p/invoke method when generating code. If a
19435         p/invoke method, or it's class, isn't decorated with [Suppress
19436         UnmanagedCodeSecurity] then generate code to call System.Security.
19437         UnmanagedDemand (only if the security manager is active).
19438
19439 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19440
19441         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19442         last change as it seems to cause strange crashes.
19443         
19444 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19445
19446         * *.c: handle unsafe function pointers where needed.
19447
19448 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * mini.c (mono_jit_free_method): Remove the fixme too.
19451
19452 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19453
19454         * mini.c: As discussed, make the code actually free the delegate
19455         thunk now, to enable the debugging of delegate problems, use
19456         MONO_DEBUG=1 when running Mono. 
19457
19458         This takes also care of parts of the leaks as seen by Joe.
19459
19460 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19463         thread_tls_offset calculation.
19464
19465 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19466
19467         * declsec.c: Reworked linkdemand checks for icall. The previous code
19468         was using the declaration code (untrusted) and didn't work as expected
19469         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19470         specific case.
19471
19472 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19473
19474         * iltests.il: Add new localloc test.
19475
19476         * mini-amd64.c: Handle large stack allocations the same way as on
19477         windows if stack overflow handling is working.
19478         
19479         * mini-amd64.c: Allocate the signal stack using mmap.
19480
19481         * mini.c (sigsegv_signal_handler): Fix reading of context.
19482
19483         * mini-exceptions.c: Fix up stack overflow handling.
19484
19485         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19486
19487         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19488
19489         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19490
19491         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19492
19493         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19494         tramp_init functions as they are no longer needed.
19495
19496 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19499         
19500         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19501
19502         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19503         
19504         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19505         support that now.
19506
19507         * mini-ops.h: Add OP_LMUL_IMM.
19508
19509         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19510         long mul/div opcodes as intrinsic.
19511
19512         * mini-amd64.c (emit_call): Handle the case when the callee might be
19513         an AOT method.
19514
19515 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19516
19517         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19518         extra safe.
19519         
19520         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19521
19522         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19523
19524 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19525
19526         * mini.c (mono_codegen): Don't leak here, to help people running
19527         monogrind.
19528
19529 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19530
19531         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19532         conversions in sse2 mode.
19533
19534         * basic-float.cs: Add regression test.
19535         
19536         * mini-amd64.c: Reenable sse2.
19537
19538 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19541
19542 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19543
19544         * driver.c: Copyright text should include 2005.
19545         
19546 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * cpu-amd64.md (load_membase): Fix more max lengths.
19549
19550 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * cpu-amd64.md (load_membase): Fix max length.
19553
19554         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19555
19556         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19557
19558         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19559         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19560
19561         * basic-float.cs: Add rounding regression test.
19562
19563         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19564
19565 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19566
19567         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19568         structures in registers for pinvoke wrappers.
19569
19570 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19571
19572         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19573
19574 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19575
19576         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19577         wrapper to mono_jit_thread_attach.
19578
19579         * mini.c (mini_jit_thread_attach): New jit icall.
19580
19581         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19582         native->managed wrappers.
19583
19584         * exceptions.cs: Add new regression test.
19585
19586         * mini.c (optimize_branches): Check regions in the cbranch to throw
19587         block case as well. Fixes #73242.
19588
19589 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19590
19591         * mini.c: thread safety fixes.
19592
19593 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19594
19595         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19596         patching stuff, since delegates use jump trampolines so there is
19597         no caller.
19598
19599         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19600         jump trampolines.
19601         
19602         * tramp-amd64.c: Fix build.
19603
19604         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19605         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19606
19607         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19608         Rename this to mono_arch....
19609         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19610
19611         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19612
19613         * mini-amd64.c (emit_call): If both the caller and the callee is
19614         guaranteed to have 32 bit addresses, emit a normal call.
19615
19616         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19617
19618         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19619         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19620         method_ptr inside delegates.
19621
19622 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19625         invalidated. Fixes #73001.
19626
19627         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19628
19629         * mini-x86.c: Only use stdcall for pinvokes on windows.
19630
19631 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19632
19633         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19634         * mini-x86.c: remove unreliable __thread var offset detection,
19635         use the correct accessors and enable by default.
19636
19637 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * mini.c (mono_jit_free_method): Fix memory leak.
19640
19641 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19644
19645 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19646
19647         * cpu-amd64.md: Fix lengths of atomic opcodes.
19648
19649 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19650
19651         * driver.c: try to not imply using ICU is any good.
19652
19653 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19654
19655         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19656         functions as inline ops.
19657
19658         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19659         some Interlocked functions as inline ops.
19660
19661         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19662
19663         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19664
19665         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19666
19667         * mini.c: Add support for OP_NOT_TAKEN.
19668
19669         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19670         structures in registers for pinvoke wrappers.
19671
19672         * mini-amd64.c: Fix warnings.
19673
19674 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19677
19678         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19679
19680         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19681         address instead of loading the address from it.
19682
19683         * mini-x86.c: Add support for returning small structs in registers
19684         on Win32. Fixes part of #70864.
19685         
19686 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19687
19688         * trace.c (get_token): Improve error checking.
19689
19690 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19691
19692         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19693
19694 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19695  
19696         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19697         it can be reused for MonoClass.
19698         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19699         _LINKDEMAND.
19700
19701 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19702
19703         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19704         instead of a MonoReflectionMethod. The method information wasn't used
19705         when displaying SecurityException details (but will be now).
19706
19707 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19708
19709         * Makefile.am : windows build fix.
19710
19711 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19712
19713         * iltests.il: Add new regression test.
19714
19715         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19716         #72522.
19717
19718 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19719  
19720         * mini.c: Moved linkdemand check into helper function check_linkdemand
19721         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19722         LDFTN, LDVIRTFTN).
19723
19724 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19725
19726         * declsec.c: Added statistics counter for different kinds of 
19727         LinkDemands.
19728         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19729         (and commented) declaration.
19730         * mini.c: Added statistics counter for security Demand code 
19731         generation. Added display of security statistics.
19732
19733 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19736         Fix compilation errors under gcc-2.95.
19737
19738 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19739
19740         * mini.c, driver.c: Use the new jit trampoline hashtable
19741
19742 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19743
19744         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19745
19746 2005-02-11  Martin Baulig  <martin@ximian.com>
19747
19748         * debug-mini.c (mono_debug_close_method): Free the line number array.
19749
19750 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19753         icalls.
19754
19755         * mini.h: Bump AOT file format version. 
19756
19757 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19758
19759         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19760         APTC and P/Invoke.
19761         * declsec.h: Added macros to get/set lazyly initialized security 
19762         informations about assemblies. Added new enum for different type of
19763         possible LinkDemand violation. Added function to check LinkDemands.
19764         * mini.h: Added a field to MonoCompile to hold any security violation
19765         detected when JITting a method (so it can be thrown later).
19766         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19767         and CEE_CALLVIRT. Added code to throw exception at the end of
19768         mini_method_compile (note: the exception is unhandled right now).
19769
19770 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19771
19772         * mini.c, jit-icalls.c: use the managed implementation of
19773         memset for initobj and memset, to avoid managed <-> unmanaged
19774         transitions.
19775
19776 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19779         optimization if it would need a GOT var.
19780
19781         * basic.cs: Add tests for constant propagation and switch statements.
19782
19783         * ssa.c: Fix out-of-range constant propagation and switch statements.
19784
19785 2005-02-09    <vargaz@freemail.hu>
19786
19787         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19788
19789 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19792
19793 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19794
19795         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19796
19797 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19798
19799         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19800         arithmetic operations.
19801
19802 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19803
19804         * mini-ppc.c: add a workaround for broken user code that
19805         DllImports vararg functions with non-vararg signatures.
19806
19807 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19808
19809         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19810         meaningfull error message for assemblies written in Managed C++.
19811
19812         * tramp-amd64.c mini-amd64.h: Add support for 
19813         create_trampoline_from_token ().
19814
19815         * aot.c mini-x86.c abcremoval.c: Applied patch from
19816         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19817
19818 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19821         which takes a MonoImage/token as parameter instead of a MonoMethod.
19822
19823         * aot.c: Use the new trampoline for initializing vtables.
19824
19825         * aot.c: Add support for ldfld/stfld_remote wrappers.
19826
19827         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19828         rules for compare <MEM>, IMM.
19829
19830         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19831
19832         * aot.c: Handle inherited finalizers correctly.
19833
19834 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * inssel.brg (stmt): Add a missing _setup_... ().
19837
19838         * aot.c: Save some parts of the class state to the AOT file and use it
19839         to recompute that state when a class is initialized.
19840
19841         * mini.c: Install AOT hooks into the runtime.
19842
19843         * mini.h: Bump AOT file format version.
19844         
19845         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19846         Fixes #72148.
19847
19848         * iltests.il: Add new test.
19849
19850 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19851
19852         * mini.c: fix typo.
19853
19854 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19855
19856         * mini.c: setup the statistical profiler in the thread attach
19857         callback to cope with the new single thread code.
19858
19859 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19860
19861         * mini-ppc.c: ensure we have enough room for the profiler
19862         calls (fixed bug#72084).
19863
19864 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19867         it.
19868
19869 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19870
19871         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19872
19873 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19874
19875         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19876         to succesfully execute parrotbench).
19877         * ssapre.h: Likewise.
19878
19879 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19880
19881         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19882         variable for stores to method arguments (fixes a SSAPRE issue).
19883
19884 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19885
19886         * mini.c: handle value types in dup, fixes gen-112.cs.
19887
19888 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19889
19890         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19891         sequence for calls in dynamic methods to avoid thunks.
19892
19893 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19894
19895         * mini.c: correctly remove dynamic methods from the hashtable.
19896
19897 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19898
19899         * driver.c: Disabled SSAPRE until fix the bug that appears
19900         in IronPython's parrotbench.
19901
19902 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19905
19906         * mini.c (mono_method_to_ir): Revert the previous change.
19907         
19908         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19909         when AOT compiling.
19910
19911         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19912         mono_jit_info_table_find () etc. when running under valgrind.
19913
19914         * inssel.brg: Fix warnings.
19915
19916         * mini-exceptions.c: Fix warnings.
19917
19918 2005-01-31  Martin Baulig  <martin@ximian.com>
19919
19920         * driver.c (compile_all_methods_thread_main): Don't try to compile
19921         generic methods or anything which has type parameters.
19922
19923 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19924
19925         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19926
19927         * TestDriver.cs: Add --verbose flags.
19928
19929         * graph.c ssa.c: Fix 64 bit warnings.
19930         
19931         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19932         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19933         Fix 64 bit warnings.
19934
19935         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19936         variable not spotted by gcc.
19937         
19938         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19939         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19940         X86_COMPARE_MEMBASE opcodes.
19941
19942         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19943
19944 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19945
19946         * *: MonoMethod->signature might be NULL now. You *MUST* use
19947         mono_method_signature.
19948
19949 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19950
19951         * driver.c (compile_all_methods_thread_main): Compile the methods
19952         without invoking cctors.
19953
19954 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19955
19956         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19957         * basic-calls.cs: test for the above.
19958
19959 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19962         MonoJitInfo changes.
19963
19964 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19967         eagerly if it contains dynamic methods.
19968         
19969         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19970
19971         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19972         trace, it is now computed by an icall from trace_ips.
19973         
19974         * mini-exceptions.c: Fix a warning.
19975
19976 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19977
19978         * mini-exceptions.c: don't bother getting stack trace info if
19979         it's not going to be used.
19980
19981 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19982
19983         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19984         ssapre-mini-ops.h.
19985
19986 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19989
19990         * aot.c: Avoid calling mono_method_get_header () if not needed.
19991
19992         * mini.h: Bump AOT file format version.
19993         
19994         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19995
19996         * mini.c (mono_print_tree): Print more info for calls.
19997
19998 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19999
20000         * declsec.h: Remove warning by adding missing include for marshal.h
20001
20002 2005-01-26  Martin Baulig  <martin@ximian.com>
20003
20004         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20005         `ip' twice.
20006
20007 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20010         flags.
20011
20012         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20013
20014         * aot.c (mono_compile_assembly): Fix a warning.
20015
20016 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20017
20018         * declsec.c: Look for security attributes on the original MonoMethod 
20019         (and not the wrapped one). This fix permissions on icalls.
20020
20021 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20024
20025         * mini.c (mono_allocate_stack_slots): Add a fixme.
20026
20027         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20028
20029 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20030
20031         * inssel.brg: optimize casts of sealed types (more
20032         optimizations waiting for fixes in remoting).
20033
20034 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * inssel.brg (stmt): Add another dummy rule.
20037
20038         * driver.c: Fix warnings.
20039
20040         * driver.c (mono_main): If running under valgrind, instruct glib to use
20041         the system allocation functions so valgrind can track the memory
20042         allocated by the g_... functions.
20043
20044         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20045
20046         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20047
20048         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20049
20050         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20051         variables in try regions.
20052
20053         * mini.c (mini_method_compile): Don't disable optimizations on large
20054         methods when AOT compiling.
20055
20056         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20057         allocate stack slots. Not yet used.
20058
20059 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20060
20061         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20062
20063 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20064
20065         * mini-ppc.c: make the branch info relative as the code
20066         buffer can be reallocated.
20067
20068 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20069
20070         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20071         * driver.c: Removed the AOT/security restriction. Now initialize the
20072         security manager (in metadata) if --security is used.
20073         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20074         rather than the pointer to declarative security, when AOT is used.
20075
20076 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20077
20078         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20079         basic blocks, reduced intrinsic exception throwing code size.
20080
20081 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20082
20083         * driver.c (mini_usage): Reorder the usage screen.
20084
20085 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * mini.c (mono_resolve_patch_target): Fix warning.
20088
20089 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20092         previous patch.
20093
20094         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20095
20096         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20097         breaks the amd64 build.
20098
20099         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20100         register allocation. Fixes #71454.
20101
20102         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20103
20104         * arrays.cs: Add new regression test.   
20105
20106 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20107
20108         * ssapre.c: Turned usage of snprintf to GString.
20109         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20110         (I left it on by mistake in my previous commit).
20111
20112 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20113
20114         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20115         on cond branch optimization (fixes bug# 71515).
20116
20117 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20118
20119         * abcremoval.c: Fixed bug 71062.
20120         * abcremoval.h: Likewise.
20121
20122 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20123
20124         * mini.c: Added a new functionality to optimize_branches, the removal
20125         of useless basic blocks, and fixed some problem in the removal of
20126         critical edges; some utility functions added for both purposes.
20127         * ssapre.c: Added complex expression support, and fixed bug 70637.
20128         * ssapre.h: Likewise.
20129         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20130         enabled in SSAPRE.
20131         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20132         * driver.c: Re-enabled SSAPRE.
20133
20134 2005-01-19  Martin Baulig  <martin@ximian.com>
20135
20136         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20137         the result of mono_get_method_constrained().
20138
20139 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20140
20141         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20142         manager.
20143
20144 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20145
20146         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20147         be detected.  Fixes #59296.
20148
20149 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20150
20151         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20152         which can happen. Fixes #71361.
20153
20154 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20157         manager.
20158
20159 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20162         appdomain-unload.exe to fail.
20163         
20164         * mini.c: Fix some memory leaks.
20165
20166 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20167
20168         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20169         Fixed bug and sped up some codepaths.
20170
20171 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * mini.c: Fix some memory leaks.
20174
20175         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20176         conversion.
20177
20178         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20179
20180         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20181         #71320.
20182
20183         * iltests.il: Add regression test for #71320.
20184
20185 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20186
20187         * mini.c (mono_codegen): Fix installation of profiler hooks.
20188
20189         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20190
20191 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20192
20193         * mini.h, mini.c, cfold.c: optimize access to enum
20194         readonly fields, too. Eval conditional branches if possible
20195         to perform unreachable code removal in more cases.
20196
20197 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20198
20199         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20200
20201         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20202         code manager.
20203
20204         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20205         WinXP DEP. Fixes #71244.
20206
20207 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20210
20211 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20212
20213         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20214
20215 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20216
20217         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20218         changes.
20219
20220         * mini.h: Bump AOT version.
20221
20222         * mini.h (MonoCompile): Change exvar to a hash table.
20223
20224         * mini.c: Allocate a separate exvar for each handler block.
20225
20226         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20227
20228         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20229         ex var with the pending exception and only throw if the two are equal.
20230         Fixes #68552.
20231         
20232         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20233
20234         * mini-x86.c: Fix warnings.
20235
20236         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20237         used by all the ports now.
20238
20239         * aot.c: Add write-symbols and save-temps options.
20240
20241 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20244
20245 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20246
20247         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20248         operations.
20249
20250         * tramp-s390.c: Check vtable slot belongs to the domain.
20251
20252         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20253         as per other platforms.
20254
20255         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20256
20257 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20258
20259         * driver.c: we don't run the Main() code in a subthread anymore.
20260
20261 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20262
20263         * mini.c: added experimental rtc support in the statistical
20264         profiler: if the user has the permission, more accurate statistics
20265         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20266         The MONO_RTC value must be restricted to what the linux rtc allows:
20267         power of two from 64 to 8192 Hz.
20268
20269 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20272
20273 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20274
20275         * mini-ppc.c: better icache flush for smp.
20276
20277 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20280
20281         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20282         amd64 port, not yet used.
20283
20284 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20285
20286         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20287         a struct type.
20288
20289 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20290
20291         * driver.c: Added --security option to activate the security manager.
20292         Right now this will allow code generation for declarative demands and
20293         is disabled when AOT is specified.
20294         * mini.c: Add code generation for declarative security demands.
20295         * mini.h: Add mono_use_security_manager as an extern gboolean.
20296
20297 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20300         emitting more dense assembly code.
20301
20302         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20303         exception throwing stuff.
20304
20305 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20308         dead code.
20309
20310         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20311         left in by mistake.
20312
20313         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20314         fixed.
20315
20316         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20317
20318         * tramp-*.c: Only patch vtable slots if the object is in the current
20319         domain. Fixes appdomain-unload.exe.
20320
20321         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20322         
20323         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20324         x86 branch.
20325
20326 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * mini.c (reverse_branch_op): New helper function.
20329
20330         * mini.c (optimize_branches): Run the new optimization only on 
20331         platforms which support it. Also reverse all kinds of branches.
20332
20333         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20334
20335         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20336         a throw statement.
20337
20338         * mini.c (optimize_branches): Reverse not-equals branches if the false
20339         bblock is a throw. This happens a lot of time with argument checking in
20340         corlib.
20341
20342         * mini.c (mono_codegen): Add support for placing basic blocks after
20343         the function epilogue.
20344
20345         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20346         function epilogue.
20347         
20348 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20349
20350         * mini.c (setup_stat_profiler): Only set this up if the platform
20351         supports ITIMER_PROF.
20352
20353 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20356         previous patch.
20357
20358         * inssel.brg: Fix a warning.
20359
20360 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20361
20362         * mini.c: added support for statistical profiler 
20363         (run with: --profile=default:stat).
20364
20365 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20366
20367         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20368
20369         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20370
20371         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20372         related to global registers from the amd64 port.
20373
20374 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20375
20376         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20377
20378         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20379         with global registers.
20380         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20381
20382         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20383
20384 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * debug-mini.c (encode_value): Fix off-by-one.
20387
20388         * aot.c (encode_value): Likewise.
20389
20390         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20391
20392 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20395         AOT.
20396
20397         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20398         
20399         * aot.c (emit_method_info): Increase size of temp buffer.
20400
20401         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20402         the AOT case.
20403
20404 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * aot.c (emit_method_info): Fix build.
20407         
20408         * aot.c: Further rework of the AOT file format to reduce the size of
20409         the method info data.
20410
20411         * mini.h: Bump AOT file format version.
20412
20413 2004-12-27  Martin Baulig  <martin@ximian.com>
20414
20415         * mini.c (mini_get_method): New static method; call
20416         mono_get_method_full() and mono_get_inflated_method().
20417         (mono_method_to_ir): Use mini_get_method() instead of
20418         mono_get_method_full(). 
20419
20420 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20421
20422         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20423
20424 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20427
20428         * inssel-amd64.brg: Add some optimization rules.
20429
20430 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20431
20432         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20433         standard not GC'd stuff is fine.
20434
20435 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * aot.c: Rework the AOT file format to get rid of most of the global
20438         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20439
20440         * mini.h: Bump AOT file format version.
20441         
20442 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20443
20444         * mini.h: Bump AOT file format version.
20445
20446         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20447         address is inside a GOT.
20448
20449         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20450
20451         * cpu-pentium.md: Increase the maximum size of some instructions which
20452         might involve a got access.
20453         
20454         * mini.c (get_method_from_ip): Another debug helper function.
20455
20456         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20457         when got var accesses are created during the decompose phase.
20458
20459         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20460
20461         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20462         argument mini_compile_method and to MonoCompile, and use this to
20463         determine whenever a given method is compiled for AOT. This allows the
20464         other methods compiled during AOT compilation to be free of AOT stuff,
20465         so the backends does not need to add special support for them by
20466         creating a fake GOT etc.
20467
20468         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20469         longer needed.
20470
20471 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20472
20473         * mini.c (mono_method_to_ir): It turns out that some of the
20474         x-appdomain wrappers are lax with types, so just ignore this for
20475         all wrappers.
20476
20477         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20478         at the vtable->klass. If it is non-shared code we can just use the
20479         vtable.
20480
20481 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20482
20483         * mini-ppc.c: access MonoDomain from tls, too.
20484
20485 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20486
20487         * declsec.c: Removed unused variable (and related warning ;-)
20488
20489 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20490
20491         * iltests.il: New test for LDELEMA on an array of ref types.
20492
20493         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20494         all ldelema's on reftypes.
20495         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20496         it was the wrong place to put it.
20497
20498         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20499         register to pop to make this cleaner, at the request of Paolo.
20500
20501 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20502
20503         * mini-ops.h (OP_GETHASHCODE): New op.
20504
20505         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20506
20507         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20508         operation.
20509
20510         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20511         by 25%.
20512         
20513         * mini-x86.c (mono_arch_output_basic_block): Rather than
20514
20515         add ebp, 4
20516
20517         Emit
20518
20519         pop edx
20520
20521         The first is 3 bytes while the second is 1. This saves 36 kb on
20522         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20523         see a small boost because of icache locality.
20524
20525         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20526
20527 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20528
20529         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20530         started code sharing with the generic code.
20531
20532 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20533
20534         * mini-ppc.c, cpu-g4.md: added code for direct access to
20535         tls data slots.
20536
20537 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20538
20539         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20540          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20541         to OP_TLS_GET.
20542
20543 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20544
20545         * declsec.c|h: Added functions to cache the declarative stack modifiers
20546         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20547         structure.
20548         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20549         created. Register internal calls for System.Security.SecurityFrame::
20550         _GetSecurityFrame and _GetSecurityStack.
20551         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20552         the definitions for the new stack walk/callback mechanism.
20553         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20554         first security frame for LinkDemands and InheritanceDemands) and
20555         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20556         from lupus.
20557         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20558         walk initialization (lupus).
20559
20560 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20561
20562         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20563         idiom.
20564         (handle_loaded_temps): Do not create a temporary variable for
20565         things that we know are temps. They will never be modified.
20566         (mono_spill_call): Set MONO_INST_IS_TEMP
20567         (mono_emulate_opcode): ditto
20568         (emit_tree): ditto
20569         (mono_method_to_ir.CEE_DUP): ditto
20570
20571 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20572
20573         * mini.c (type_to_eval_stack_type): Make this handle the void type
20574         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20575         (emit_tree): use ip_in_bb to special case some common idioms
20576         Update all callers to pass in the IP.
20577         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20578
20579         This gives us a nice 2% speedup in mcs bootstrap.
20580
20581         * mini-x86.c (peephole_pass): Peephole pass to make
20582         mov  [foo], eax
20583         push [foo]
20584
20585         into
20586
20587         mov [foo], eax
20588         push eax
20589
20590         * mini.c (ip_in_bb): new method.
20591         (mono_method_to_ir): use this method rather than doing the hash
20592         lookup ourselves.
20593
20594         * linear-scan.c (mono_linear_scan): When expiring actives, you
20595         don't need to keep around variables that expire on this
20596         instruction. This makes it so that:
20597              a = b + 1
20598         will turn into:
20599              store (ebx add (ebx, 1))
20600         which will become
20601              add ebx, 1
20602
20603 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20606         combination to avoid doing two copies. Fix up problems with previous
20607         patch.
20608
20609         * mini.c: Fix 64 bit warnings.
20610
20611         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20612
20613 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20614
20615         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20616         changes from the x86 code.
20617
20618         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20619
20620 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20621
20622         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20623         throwing code to reduce its size, unify the AOT and non-aot code and 
20624         get rid of relocations in the AOT case.
20625
20626         * mini-x86.h mini.c exceptions-x86.c 
20627         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20628         raise corlib exceptions which doesn't require relocations in the 
20629         caller.
20630
20631         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20632
20633 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20634
20635         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20636         needed.
20637
20638         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20639         in the AOT case.
20640
20641 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20642
20643         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20644         with add function when used from Inc/dec atomic 
20645         functions. Re-enabled optimization on x86.
20646         * mini-ops.h: renamed atomic_add functions to
20647         allow _add to match the Interlocked::Add and
20648         _add_next to match Interlocked::Inc/Dec.
20649
20650 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20651
20652         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20653         linking of BBs to the end BB, and enabled SSAPRE also with
20654         consprop and copyprop (which was prevented by that bug).
20655
20656 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20657
20658         * mini-x86.c: disabling the Interlocked optimizing code. 
20659
20660 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20661
20662         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20663         file version check.
20664         
20665 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20666
20667         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20668         interlocked optimization due lack of support on x86, rewrote 
20669         exchange to take into account that base may be in eax.
20670         
20671         xsp works again; activated Interlocked optimizing code.
20672         
20673 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20674
20675         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20676
20677 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20678
20679         * mini-ops.h: Add new opcodes.
20680
20681         * mini.h: Add new patch types. Add got_var to MonoCompile.
20682
20683         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20684         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20685         make it work with all kinds of patchable code.
20686
20687         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20688         address of the GOT, and referencing entries in the GOT.
20689
20690         * mini.c: Add code to load the GOT address if needed by an opcode.
20691
20692         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20693         independent AOT code on the x86 using an elf-style Global Offset Table.
20694
20695 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20696
20697         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20698
20699 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20700
20701         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20702         when running xsp.
20703
20704 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20705
20706         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20707         of Interlocked:Increment/Decrement/Add as inline ops.
20708         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20709
20710 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20711
20712         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20713         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20714
20715 2004-12-12  Duncan Mak  <duncan@ximian.com>
20716
20717         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20718         again. `patch_info->table_size' is no longer valid after Zoltan's
20719         commit #37636.
20720
20721 2004-12-12  Martin Baulig  <martin@ximian.com>
20722
20723         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20724         if we are the "real" method, ie. not an inlined method inside it.
20725
20726 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20727
20728         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20729         before we look in the special fields table. This fixes
20730         ../tests/thread-static-init.cs.
20731
20732 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20733
20734         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20735         for Array get_Rank and get_Length. Fixes bug #70465.
20736
20737 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20740         separate structure to reduce the size of MonoJumpInfo.
20741
20742 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20743
20744         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20745
20746 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20747
20748         * mini.c (mini_get_inst_for_method): Changed to allow ports
20749         to return a MonoInst instead of opcode 
20750         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20751         
20752         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20753         Allow ports to return a created MonoInst instead of op-code, will enable
20754         new optimizations.
20755         (renamed mini_get_opcode_for_method to better reflected the functionality)
20756
20757 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20758
20759         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20760
20761 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20764         Fixes #69985.
20765
20766 2004-12-08  Martin Baulig  <martin@ximian.com>
20767
20768         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20769         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20770
20771 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20772
20773         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20774         correctly.
20775
20776         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20777         arithmetic.
20778
20779 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20780
20781         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20782
20783 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20784
20785         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20786         bug introduced by the previous patch.
20787
20788 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20789
20790         * mini-ppc.c, objectc.cs: handle large structs passed by value
20791         (fixes bug #69972).
20792
20793 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20794
20795         * mini-ppc.c: OP_ARGLIST implementation from
20796         Geoff Norton  <gnorton@customerdna.com>.
20797
20798 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20799
20800         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20801         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20802
20803 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20804
20805         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20806
20807 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20808
20809         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20810         support.
20811
20812 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20813
20814         * mini-sparc.c: Zero out localled-ed memory.
20815
20816         * iltests.il: Add tests for zeroing out localloc-ed memory.
20817
20818 2004-12-04  Martin Baulig  <martin@ximian.com>
20819
20820         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20821         mono_method_get_signature_full().       
20822
20823 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20824
20825         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20826         and some utility functions (always for SSAPRE), integrated SSAPRE.
20827         * mini.h: Likewise.
20828         * driver.c: Added ssapre option.
20829         * ssa.c: Small fix on OP_ARG handling.
20830         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20831         * Makefile.am: Likewise.
20832
20833 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20834
20835         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20836         now in the xp code.
20837
20838         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20839         icall.
20840
20841 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20842
20843         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20844         
20845         * cpu-s390.md : Increase instruction length of oparglist.
20846
20847         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20848
20849 2004-11-30  Martin Baulig  <martin@ximian.com>
20850
20851         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20852         virtual generic methods.  We call a special helper_compile_generic_method()
20853         icall to retrieve the method from the vtable, inflate and compile
20854         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20855
20856         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20857
20858 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20859
20860         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20861
20862 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20863
20864         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20865         Fixes #69929.
20866
20867 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20868
20869         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20870         platforms with PIC aot.
20871
20872 2004-11-28  Martin Baulig  <martin@ximian.com>
20873
20874         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20875         Fixes gen-112.cs.
20876
20877 2004-11-28  Martin Baulig  <martin@ximian.com>
20878
20879         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20880         the result of mono_type_get_underlying_type() to check whether
20881         we're byref.
20882
20883 2004-11-26  Martin Baulig  <martin@ximian.com>
20884
20885         * mini.c
20886         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20887         in the g_assert().
20888
20889 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20892         the same way as the other arguments so they won't get clobbered.
20893
20894         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20895         calls through R11 since it is clobbered by the trampoline code.
20896
20897 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20898
20899         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20900         pick up in-tree mscorlib.dll.
20901
20902 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20903
20904         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20905
20906         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20907         runtime data/code are now stored in a table similar to the GOT in ELF. 
20908         This allows the code itself to be position independent.
20909
20910         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20911         loading changes.
20912
20913         * aot.c: Attach ELF type (object/function) directives to all global
20914         symbols.
20915
20916         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20917
20918         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20919
20920         * mini-amd64.h: Turn on PIC AOT code.
20921
20922         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20923         returning the offset within an OP_AOTCONST instruction where the GOT
20924         offset needs to be added.
20925
20926         * mini.h: Bump AOT file format version.
20927
20928 2004-11-25  Martin Baulig  <martin@ximian.com>
20929
20930         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20931         uninflated generic methods.
20932
20933 2004-11-25  Martin Baulig  <martin@ximian.com>
20934
20935         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20936
20937 2004-11-24  Martin Baulig  <martin@ximian.com>
20938
20939         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20940         original klass (this only applies for generic instances).
20941
20942 2004-11-24  Martin Baulig  <martin@ximian.com>
20943
20944         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20945         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20946         that array).
20947
20948 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20949
20950         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20951         localloc. Fixes #69678.
20952
20953         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20954         
20955 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20958         used SSE registers on pinvoke calls. Fixes #69774.
20959
20960 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20961
20962         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20963         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20964
20965 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20966
20967         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20968         Refer directly to the mcs/ tree.
20969
20970 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20971
20972         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20973         Check if a trampoline for a synchronized method is required. 
20974
20975 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20976
20977         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20978         with localloc if needed. Throe arithmetric exception in
20979         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20980         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20981
20982 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20983
20984         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20985         types before switching on type.  Fixes #69622.
20986
20987 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20988
20989         * Makefile.am (check-local): New.  Integrate into 'make check'.
20990         (MCS,RUNTIME): Define using in-tree mono and mcs.
20991         (ILASM): New.
20992         (%.exe): Use $(ILASM).
20993
20994 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20995
20996         * mini-ppc.c: adjust initial prolog size (bug #69691).
20997
20998 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21001         #69664.
21002
21003 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21004
21005         * Makefile.am (clean-local): Rename from 'clean'.
21006
21007 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21008
21009         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21010         to mono_arch_is_int_overflow. 
21011         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21012         SIGFPE events.
21013
21014 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21015
21016         * declsec.c|h: New files to support declarative security attributes.
21017         Added function to check if a method has (applicable) security.
21018         * mini.c|h: Add check for declarative security attributes in
21019         mono_method_check_inlining.
21020         * Makefile.am: Added declsec.c and declsec.h to the build.
21021
21022 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21023
21024         * mini.c, mini.h: update to keep dynamic code info per-domain.
21025
21026 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21029         (mini_init): Get rid of it from here too.
21030
21031 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21032
21033         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21034         implemented OP_RETHROW (patch by Geoff Norton
21035         <gnorton@customerdna.com>).
21036
21037 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21038
21039         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21040         between appdomains.  Fixes appdomain-unload on PPC.
21041
21042 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21043
21044         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21045         mini-exceptions.c: handle the new wrapper types.
21046         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21047         token value as a MonoClass* when compiling a wrapper.
21048         mono_jit_create_remoting_trampoline now takes an additional
21049         MonoRemotingTarget parameter.
21050         
21051 2004-11-10  Martin Baulig  <martin@localhost>
21052
21053         * mini.c (mono_method_to_ir): Use `generic_container->context'
21054         rather than creating a new one.
21055
21056 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21057
21058         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21059
21060         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21061
21062 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21063
21064         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21065         the experimental aot cache stuff.
21066
21067 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21068
21069         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21070         mini-exceptions.c: update to exception clause structure changes.
21071
21072 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21073
21074         * exceptions-x86.c (throw_exception): Fix warnings.
21075
21076         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21077         for OP_RETHROW.
21078
21079 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21080
21081         * exceptions-sparc.c (get_throw_exception): Really fix this.
21082
21083 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21084
21085         * tramp-*.c: we no longer support icalls without wrappers, so
21086         a bit of code can be removed here
21087
21088 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21091         patch.
21092
21093         * cpu-sparc.md: Add op_rethrow.
21094
21095         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21096
21097         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21098
21099         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21100         * mini-ops.h: Add OP_RETHROW.
21101
21102         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21103
21104         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21105
21106 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21107         
21108         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21109         Makes the output much easier to read
21110
21111 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21112
21113         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21114         prevents another huge leak when compiling with ssa. Secondly, the
21115         performance of doing this rather than freeing the lists is much
21116         better. GList does a lock every time you allocate a list link,
21117         so that it can use a memory pool. So, it is better to just use
21118         a memory pool of our own.
21119         
21120         * ssa.c, linear-scan.c: replace g_list_remove_link with
21121         g_list_delete.  The remove one does not free the GList, so we were
21122         leaking memory. On -O=all --compile-all with corlib, this cut down
21123         3 MB of allocations.
21124
21125 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21126
21127         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21128
21129         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21130
21131         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21132         into a new function mono_create_jit_trampoline ().
21133
21134 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21135
21136         * trace.c (get_spec): Allow tracing of classes without a namespace.
21137
21138 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21139
21140         * mini.c: Fix pointer overwrite in mini_method_compile.
21141
21142 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21143
21144         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21145         The darwin ABI needs some special handling for 1 and 2 byte structs
21146         Lets use lbz/lhz instead of lwz everywhere.
21147         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21148         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21149         Use stb/sth for the former, and put the latter always on stack instead of in
21150         argument registers.
21151
21152 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21153
21154         * trace.c (is_filenamechar): Add '_'.
21155
21156 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21157
21158         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21159
21160         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21161
21162 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21163
21164         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21165         depends on libmonogc. Fixes #68805.
21166
21167 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21168
21169         * mini.c (mono_jit_free_method): Provide extra information for
21170         this error.  Currently this leaks, but will be turned into a
21171         developer option in the future.
21172
21173 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21174
21175         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21176
21177 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21178
21179         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21180         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21181         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21182
21183 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21184
21185         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21186         trampolines for AOT code.
21187
21188 2004-10-22    <vargaz@freemail.hu>
21189
21190         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21191         constructed types. Fixes #68136.
21192
21193 2004-10-21  Martin Baulig  <martin@ximian.com>
21194
21195         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21196         if it returns true, unwind the stack to the call instruction.
21197
21198 2004-10-21    <vargaz@freemail.hu>
21199
21200         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21201
21202         * mini.h: Bump AOT version number.
21203
21204         * objects.cs: Add another test for unbox trampolines.
21205
21206         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21207         valuetype methods.
21208
21209 2004-10-20    <vargaz@freemail.hu>
21210
21211         * driver.c: Add SHARED to the set of optimizations tested.
21212
21213         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21214
21215         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21216         used by CEE_NEWARR.
21217
21218         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21219
21220 2004-10-20  Martin Baulig  <martin@ximian.com>
21221
21222         * mini-exceptions.c (mono_handle_exception): Call
21223         mono_debugger_handle_exception() to tell the debugger about
21224         catch/finally clauses.
21225
21226 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21229
21230         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21231         #68447.
21232
21233 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21234
21235         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21236         methods as their native size, fixed bug #57543, #57545.
21237         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21238         This saves a temporary register and mullw call down into 1 (minor perf
21239         increase for cases like sum = sum * 5;  This use to translate into:
21240             li r11,5
21241             mullw r28,r28,r11
21242         It now translates to
21243             mulli r28,r28,5
21244
21245 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21248         #68388.
21249
21250 2004-10-11  Martin Baulig  <martin@ximian.com>
21251
21252         * mini.c (mono_method_to_ir): If we're a generic method, get the
21253         MonoGenericContainer from our MonoMethodNormal and create a
21254         MonoGenericContext from it.
21255
21256 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21257
21258         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21259
21260         * basic-long.cs: Add test for checked i8->i2 cast.
21261
21262 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21263
21264         * inssel-ppc.brg: added a couple of speedup rules.
21265
21266 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21269         to speed up rebuilds.
21270
21271 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21272
21273         * mini-s390.c: Minor fix to OP_OR_IMM.
21274
21275 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21276
21277         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21278         better. Fixes appdomain-unload.exe on sparc.
21279
21280 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21281
21282         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21283         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21284         see bug 67324.
21285
21286 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21287
21288         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21289
21290 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21291
21292         * mini.c: Always generate a field read/write wrapper for members
21293         of the class MarshalByRefObject since the actual instance could
21294         be a CBO.
21295
21296 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21297
21298         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21299
21300 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21301
21302         * driver.c mini.h trace.c: Move the setting of the main assembly into
21303         a separate function called mono_trace_set_assembly () and call it after
21304         actually loading the main assembly. Fixes #66872.
21305
21306 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21307
21308         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21309         using the code manager.
21310
21311 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21314
21315 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21316
21317         * cpu-amd64.md: Fix bug in previous patch.
21318         
21319         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21320         #66650.
21321
21322 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21323
21324         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21325         mini-exceptions.c: updates for changed stack walk interface.
21326
21327 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21328
21329         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21330
21331 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21334
21335 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21336
21337         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21338         since assemblies can't be unloaded.
21339         
21340 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * cpu-amd64.md: Fix more instruction lengths.
21343
21344         * cpu-amd64.md: Fix lengths of some instructions.
21345
21346 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21347
21348         * inssel.brg: Make the array ldelema check aot friendly.
21349
21350 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21353
21354         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21355
21356 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21357
21358         * mini-x86.c: Fix build.
21359
21360         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21361         mono_type_get_underlying_type () helper function to simplify code.
21362         
21363 2004-09-09  Martin Baulig  <martin@ximian.com>
21364
21365         * mini-amd64.c: Don't access `type->data.klass' directly, call
21366         mono_class_from_mono_type() instead since the type may be a
21367         generic instance.
21368
21369 2004-09-09  Martin Baulig  <martin@ximian.com>
21370
21371         * mini-amd64.c (get_call_info): Fix support for generic instances.
21372         (add_valuetype): Use mono_class_from_mono_type() to get the class
21373         since we can be a generic instance.
21374
21375 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21376
21377         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21378
21379 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21380
21381         * liveness.c: reset spill costs on each scan: bug 62107
21382
21383 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21384
21385         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21386         unnecessary line that doesn't compile
21387
21388 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21391         trampolines, make them call an error function so people can fix their
21392         code.
21393
21394 2004-09-06  Martin Baulig  <martin@ximian.com>
21395
21396         * mini.c (mono_method_to_ir): When initializing locals, handle a
21397         generic instances like a valuetype if it's a valuetype and like a
21398         class if it's a class.
21399
21400 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21403         stack. Fixes #64674.
21404
21405         * exceptions.cs: Add test for unwinding of call arguments.
21406
21407 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21408
21409         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21410         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21411         set the carry/borrow flag). The sparc and s390 implementations
21412         can now use optimized versions (and simplify the code). ppc bugfixes.
21413
21414 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21415
21416         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21417
21418 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * inssel-amd64.brg: Remove leftover 32 bit rule.
21421
21422         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21423
21424 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21425
21426         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21427         mono_arch_find_jit_info functions into a new function. Fix a memory
21428         leak.
21429
21430         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21431         refactored code.
21432         
21433 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21436         as well.
21437         
21438         * exceptions.cs: Add array size tests.
21439
21440         * mini.c: Allocate a separate icall wrapper for each arity of 
21441         mono_array_new_va. Fixes #59509.
21442
21443         * exceptions.cs: Add testcase for 64578.
21444
21445         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21446
21447         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21448         
21449 2004-09-02  Martin Baulig  <martin@ximian.com>
21450
21451         * mini.c (mono_method_to_ir): When initializing the locals, call
21452         handle_initobj() on the generic instance itself, not its
21453         underlying type.
21454
21455 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21458         MonoJitInfo for dynamic methods.
21459
21460         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21461
21462         * mini.c: Add support for freeing JIT data for dynamic methods.
21463         
21464 2004-09-01  Martin Baulig  <martin@ximian.com>
21465
21466         * mini-x86.c (is_regsize_var): Added support for generic
21467         instances.
21468         (mono_arch_emit_prolog): Make this compile again, use
21469         `x86_push_imm_template (code)'.
21470
21471 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21472
21473         * mini-x86.c: make all push_imm instructions that get
21474         patched always emit the long form
21475
21476 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21477
21478         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21479         in a per-domain hash.
21480
21481         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21482         types.
21483
21484 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21485
21486         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21487         work.
21488         
21489         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21490         work.
21491
21492         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21493         Beginnings of SSE2 support.
21494
21495         * exceptions.cs: Add more tests for checked int<->uint casts.
21496
21497 2004-08-28  Martin Baulig  <martin@ximian.com>
21498
21499         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21500         generic instances.
21501
21502         * mini.c
21503         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21504         Handle generic instances recursively.
21505
21506 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21507
21508         * iltests.il: test for conv.u8 on a constant
21509
21510 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21511
21512         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21513         LCONV_x4 (shrun_32 (membase)).
21514
21515 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21516
21517         * inssel-x86.brg: c&p rules for push/setret of long
21518
21519 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21520
21521         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21522         compare (regvar, base)
21523
21524         * inssel-x86.brg: more burg love
21525
21526         * inssel.brg: more cleanup
21527
21528         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21529
21530 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21531
21532         * basic-long.cs, basic-calls.cs: new tests for optimization.
21533
21534 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21535
21536         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21537         patch.
21538
21539 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21542         
21543 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21544
21545         * inssel.brg (mini_emit_memcpy): use 
21546         NO_UNALIGNED_ACCESS to disable memcpy optimization
21547
21548 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21549
21550         * mini-amd64.c: Handle generic types in various places.
21551
21552         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21553
21554 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21555
21556         * mini.c (handle_box): Fix warning.
21557
21558         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21559
21560         * mini-amd64.h: Enable the emit_state optimization.
21561
21562         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21563
21564         * mini-amd64.c: Add some new 64 bit peephole opts.
21565
21566         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21567
21568         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21569
21570         * mini-amd64.c: Register allocator fixes.
21571
21572         * mini.c: Add an optimization to emit_state to avoid allocation of new
21573         registers on some platforms.
21574
21575 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21578
21579         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21580         allocation. Fixes #63085.
21581
21582         * basic-long.cs: Add new regression test.
21583
21584         * mini-amd64.c: Register allocator improvements.
21585
21586 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21587
21588         * mini-amd64.c (read_tls_offset_from_method): Add another code
21589         sequence.
21590
21591         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21592         instruction sequence for nullifying class init trampolines.
21593
21594         * objects.cs: Add new regalloc test.
21595
21596         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21597
21598 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21599
21600         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21601         
21602         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21603         arguments.
21604
21605         * driver.c: Fix profiling after TLS changes.
21606         
21607         * driver.c (mono_main): Set mono_stats.enabled if needed.
21608
21609         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21610         CEE_BOX.
21611
21612 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21613
21614         * mini-x86.c: use a 1 op rather than a 2 op tls access
21615         instruction -> faster.
21616
21617 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21620         x86 backend.
21621
21622 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21623
21624         * exceptions-sparc.c (throw_exception): fix typo
21625
21626 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21627
21628         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21629         set tree->dreg correctly with tls. Allow any
21630         register to be used.
21631
21632         * mini-x86.c (read_tls_offset_from_method): add new code
21633         generation pattern seen with GCC.
21634
21635
21636 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21637
21638         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21639         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21640         exceptions-sparc.c: fix some performance issues in exception
21641         handling and setting of the stack trace for exceptions that were
21642         already thrown.
21643
21644 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21645
21646         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21647         x86 backend.
21648         
21649         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21650         registers.
21651
21652 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21653
21654         This patch inlines tls access, when possible.
21655         
21656         * mini.h: new arch functions for TLS intrinsics.
21657         All platforms updated with a stub.
21658
21659         * mini.c: use the new intrinsics
21660
21661         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21662         arch specific intrinsic for tls variables
21663
21664 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21667         under windows.
21668
21669 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21670
21671         * mini.c: thread local allocation
21672
21673 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21676
21677         * Makefile.am: Link against the static version of libmonogc.
21678         
21679         * Makefile.am: Link the static versions of the convenience libraries
21680         into the mono executable.
21681
21682         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21683
21684 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21685
21686         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21687         on integer overflow.
21688
21689         * mini-amd64.c: Reorganize function call code.
21690
21691         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21692
21693 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21694
21695         * inssel-x86.brg: use xor eax,eax.
21696         
21697         * basic.cs: new tests
21698
21699 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21700
21701         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21702         in exception throwing code.
21703         
21704 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21705
21706         * inssel-x86.brg: use xor esi,esi.
21707
21708 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21709
21710         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21711         can trace methods compiled during mini_init () too.
21712
21713         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21714         CEE_CONV_U4.
21715
21716 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21717
21718         * Makefile.am: static link on x86 (r=zoltan)
21719
21720 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21723         code since it causes some programs to fail.
21724
21725 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21726
21727         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21728
21729 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21730
21731         * mini.c: ovfops_op_map - add STACK_OBJ case for
21732         CONV_I 
21733         * basic.cs: add test_0_pin_string as test
21734         case for above.
21735
21736 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21737
21738         * Makefile.am: build C# if srcdir != builddir
21739
21740 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21741
21742         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21743         fall-through blocks.
21744
21745 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21746
21747         * driver.c: enable loop by default again and include abcrem in -O=all.
21748
21749 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * iltests.il: Add some localloc tests.
21752
21753         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21754
21755         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21756         Fixes #62574.
21757
21758         * inssel-amd64.brg: Add some optimizations.
21759
21760         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21761         for gcc-3.4.
21762
21763         * Makefile.am: Statically link mono against libmono on AMD64.
21764         
21765         * mini-amd64.c inssel-amd64.brg: Optimizations.
21766
21767 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21770
21771         * tramp-amd64.c: Patch calling code in trampolines.
21772
21773 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * mini-amd64.c: pinvoke struct passing fixes.
21776
21777 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21778
21779         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21780         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21781
21782 2004-08-05  Duncan Mak  <duncan@ximian.com>
21783
21784         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21785         CEE_LDELEM_ANY.
21786
21787 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * mini-amd64.c (emit_move_return_value): Move return value for normal
21790         calls too.
21791
21792 2004-08-05  Martin Baulig  <martin@ximian.com>
21793
21794         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21795         `type->type'; just modify `type' itself when dealing with enums
21796         and generic instances.
21797         (check_call_signature): Make `simple_type' a `MonoType *'.
21798
21799 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * mini.c: Use OP_PADD to add offsets to addresses.
21802
21803         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21804
21805 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21806
21807         * mini-sparc.c (mono_arch_emit_epilog): fix check
21808         for folding last op into restore instruction
21809
21810 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21813         helper methods using the code manager.
21814         
21815         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21816
21817         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21818
21819 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21820         
21821         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21822           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21823
21824         * mini-s390.c: fix tail processing
21825
21826 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21827
21828         * mini-ppc.c: mul.ovf.un exception name fix.
21829
21830 2004-08-03  Martin Baulig  <martin@ximian.com>
21831
21832         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21833         instances; before jumping to `handle_enum', also modify `ptype'.
21834
21835 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21836
21837         * cpu-sparc.md: fcall maximal length too small.
21838
21839 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21840
21841         * mini-amd64.c mini.h: Add initial support for passing/returning 
21842         structures to/from pinvoked methods.
21843
21844 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21845
21846         * mini-ppc.c: reg allocator fix.
21847
21848 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21849
21850         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21851
21852         * inssel.brg: Optimize memset on 64 bit machines.
21853
21854         * mini-amd64.c: Fix some vararg cases.
21855
21856 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21857
21858         * mini-s390.c: Corrected macro in emit_float_to_int
21859
21860         * s390-abi.cs: Tests to exercise the s390 ABI
21861
21862 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21863
21864         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21865         caller saved regs.
21866
21867         * basic.cs: Add a test for add.ovf.un.
21868
21869 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21870
21871         * mini-sparc.c: add case for OP_IDIV_UN
21872
21873 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21876         
21877         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21878
21879 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21880
21881         * basic.cs: regression tests.
21882
21883         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21884         regressions.
21885
21886 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21887
21888         * basic.cs: Add a new test.
21889
21890         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21891         and AOT. Various fixes and optimizations.
21892
21893         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21894
21895 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21896
21897         * mini-ppc.c: make sure temp regs are not used for global reg
21898         allocation.
21899
21900 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21901
21902         * cpu-sparc.md: conv_i8 fix for 64bits
21903
21904         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21905
21906 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21907         
21908         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21909         add opcode for cmp BYTE PTR [eax], imm.
21910
21911         * inssel.brg: Make memcpy and memset takes bases.
21912
21913 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21914
21915         * *-amd64.*: More AMD64 work.
21916         
21917 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21918
21919         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21920         add a compare-not-equal opcode.
21921         
21922 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21923
21924         * mini.c: Use mono_init_from_assembly instead of mono_init.
21925         
21926 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21929
21930         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21931
21932         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21933
21934         * inssel.brg: 64 bit fixes.
21935
21936         * mini.h (MonoCallInst): Add some AMD64 specific data.
21937
21938         * mini.h: Add some OP_P opcodes.
21939
21940 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21941
21942         * basic.cs: tests for 61797 and 61740
21943
21944 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21945
21946         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21947         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21948
21949 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21952
21953         * *-amd64*.*: Ongoing AMD64 work.
21954
21955 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21956
21957         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21958
21959         * *-amd64*: Ongoing AMD64 work.
21960
21961         * mini-arch.h: Add AMD64 support.
21962
21963         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21964
21965         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21966
21967         * mini-ops.h: Add new opcodes.
21968
21969         * Makefile.am: Add AMD64 support.
21970
21971         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21972         rules into the inssel-long*.brg files.
21973
21974         * *-amd64.*: Add beginnings of AMD64 backend.
21975
21976 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21977
21978         * mini.c (print_dfn): commenting out the code that prints
21979         the cil. With -O=deadce, this makes -v -v crash.
21980         
21981         * cpu-pentium.md: make checkthis have a length of 2
21982
21983 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21984
21985         * mini-sparc.h: fix implementations of __builtin
21986         functions for Sun compiler for V9.
21987
21988 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21989
21990         * mini.c: use the new stelem.ref wrapper
21991         * exceptions.cs, arrays.cs: new stelem.ref tests
21992
21993 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21994
21995         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21996         new XSP should work with these changes).
21997
21998 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21999         
22000         * inssel-{long32,x86,}.brg: trivial optimizations.
22001         
22002 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22003
22004         * mini.c: load value when emitting box operation in
22005         constrained calls.
22006
22007 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22008
22009         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22010         is one byte shorter than cmp DWORD PTR [eax], 0.
22011
22012 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22013
22014         * inssel-ppc.brg: arguments on the stack are always
22015         relative to the stack pointer (spotted by Neale Ferguson).
22016
22017 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22018
22019         * exceptions-x86.c: delay appending the method name to the trace until
22020         after mono_jit_info_table_find is called, as this gets the real
22021         MonoMethod.
22022
22023 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22024
22025         * aot.c: register roots
22026
22027 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22028
22029         * aot.c : I could just use PLATFORM_WIN32 flag.
22030
22031 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22032
22033         * aot.c : Reverting the previous fix. This time it broke linux build.
22034
22035 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22036
22037         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22038
22039 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * mini.c (handle_stack_args): Remove some more debugging code.
22042         
22043         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22044
22045         * driver.c mini.h aot.c: Allow additional options to be specified with
22046         --aot and pass them to mono_compile_assembly.
22047
22048         * aot.c: Add experimental code to AOT compile all loaded assemblies
22049         on demand and save the code into a cache in the filesystem.
22050
22051         * aot.c: Add support for more wrapper methods.
22052         
22053         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22054         58863.
22055
22056         * cpu-*.md: Remove removed opcodes.
22057
22058         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22059         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22060         related icalls to marshal.c.
22061
22062 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22063
22064         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22065
22066         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22067
22068         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22069
22070 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22071         * liveness.c: If liveness is recomputated we need to reset the information
22072         for each variable. This way, if the liveness range has been narrowed
22073         by optimizations that happened after the last computation, we can return
22074         a smaller range.
22075         
22076         For example, if you have
22077         
22078         {
22079                 int i = 0;
22080                 
22081                 // Tons of code that does not affect i
22082                 
22083                 i = foo ();
22084                 ...
22085         }
22086         
22087         i = 0 is dead code and will be removed by SSA. However, when
22088         linear scan gets to the code, i will still appear to be live
22089         throughout the entire block. This prevents good register allocation.
22090
22091 2004-07-06  Martin Baulig  <martin@ximian.com>
22092
22093         * debug-mini.c (mono_debug_init_method): Allow
22094         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22095         (mono_debug_add_icall_wrapper): New method.
22096
22097         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22098
22099 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22102         optimization.
22103
22104 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22105
22106         * aot.c (mono_aot_load_method): Fix loading of debug info.
22107
22108 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * aot.c: Add logging support.
22111
22112 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22113
22114         * mini.h: Add prototype for mono_print_method_from_ip.
22115
22116         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22117
22118         * inssel.brg: 64 bit fixes.
22119
22120         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22121         inssel-long32.brg.
22122
22123         * Makefile.am: Add SPARC64 support.
22124
22125 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22126
22127         * aot.c: Fix alignment problems on 32 bit platforms.
22128
22129 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22132         SPARC64.
22133
22134         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22135         problems.
22136
22137         * mini.h: Bump AOT file version. Some 64 bit fixes.
22138
22139 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22140
22141         * inssel-sparc.brg: Add new rule to avoid register moves.
22142
22143         * inssel.brg: Add ldind_to_load_membase helper function.
22144
22145 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22146
22147         * mini.c: OffsetToStringData intrinsic.
22148         
22149 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22150
22151         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22152
22153         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22154         regression tests.
22155
22156         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22157 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22158
22159         * mini.c: reinstated mono_compile_get_interface_var()
22160         on x86, too, since the change breaks the Gtk# build there as well.
22161
22162 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22163
22164         * driver.c: remove loop from the default optimizations: it seems to
22165         interact badly with some of the other options (see bug #60613).
22166
22167 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22170         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22171
22172 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22173
22174         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22175         vararg-using methods.
22176
22177 2004-06-21  Martin Baulig  <martin@ximian.com>
22178
22179         * mini/mini-exceptions.c
22180         (mono_handle_exception): Added `gpointer original_ip' argument.
22181         After calling mono_unhandled_exception(), call
22182         mono_debugger_unhandled_exception() and if that returns true,
22183         restore the context and return.
22184
22185 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22186
22187         * mini-ppc.c: prefer the use of relative branches so
22188         they won't need to be patched in aot code (patch from Patrick Beard).
22189
22190 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22191
22192         * aot.c: patch from Patrick Beard to make the output assembly
22193         more correct for the MacOSX assembler. Small tweak to
22194         generate sane images on Linux/PPC, too.
22195
22196 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22197
22198         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22199         case until bug #59509 is fixed (shows up in #60332).
22200
22201 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22202
22203         * mini.c: make sure the needed wrappers are compiled, too, with
22204         precomp.
22205
22206 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22207
22208         * driver.c: remove NPTL reference in --version output.
22209
22210 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22211
22212         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22213         generate valid assembly for the Mach-O assembler.
22214
22215 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22216
22217         * driver.c: don't include abcrem in the all optimization specifier
22218         since it slows down jit compilation too much for now.
22219
22220 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22221
22222         * mini.c: use BIGMUL only if both operands have the same signage.
22223         * iltests.il: Test for bug 60056. (errors related to signage in
22224         BIGMUL).
22225
22226         r=lupus.
22227
22228 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22229
22230         * mini.c, aot.c: memory leak fixes.
22231
22232 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22233
22234         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22235
22236 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22237
22238         * Makefile.am: remove the -static hack completely, it links in
22239         statically glib as well.
22240
22241 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22242
22243         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22244         * exceptions.cs: make it compile with new mcs/csc.
22245
22246 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22247         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22248         and added relevant test case.
22249
22250 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22251
22252         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22253         regressions in gtk-sharp.
22254
22255 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * exceptions.cs: New regression tests.
22258
22259         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22260
22261 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22262
22263         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22264
22265 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22266
22267         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22268
22269         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22270
22271 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22272
22273         * mini.c (mono_jit_runtime_invoke): Init class in this
22274         method instead of trusting mono_jit_compile_method to
22275         do the work (because wrappers can be in object class)
22276
22277 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22280
22281         * basic-long.cs: New regression test.
22282
22283 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22284
22285         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22286         and div/rem checks.
22287
22288 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22289
22290         * Makefile.am: fix miguel's change to build mono statically against
22291         libmono (track build dependencies).
22292
22293 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22294
22295         * cfold.c: Some glib versions do not have G_MININT32.
22296
22297 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22298
22299         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22300         with precision of tan, atan, sin and cos, and implemented related
22301         regressions tests (fixes bug 54467, but one new problem appeared and
22302         is not fixed yet).
22303
22304 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22305
22306         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22307
22308         * exceptions.cs: Add test for constant folding && division by zero.
22309
22310         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22311         since driver.c is in libmono too, so the optimization was useless.
22312
22313         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22314         variable to driver.c so the compiler can emit more efficient code to
22315         access them.
22316
22317 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22318
22319         * Makefile.am: don't distribute generated inssel.[ch] files.
22320
22321 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22324         into the default appdomain. Fixes #58707.
22325
22326         * jit-icalls.c: Remove the broken approximation for truncl, doing
22327         no conversion is better.
22328
22329         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22330         Fixes #58863.
22331
22332 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22333
22334         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22335         of the mcrxr instruction which is not available on some processors
22336         even if it's documented to be. Implement add and sub overflow correctly
22337         (still not complete for long unsigned). Speed up icalls a bit.
22338
22339 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22340
22341         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22342         we run .cctor in the current domain instead of target_domain.
22343         
22344         Fixes bug #58558, .cctor not being called in -O=shared.
22345
22346 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22347
22348         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22349
22350 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22351
22352         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22353         which can be done with an imm8, do it that way.
22354         (mono_arch_output_basic_block): ditto for a jmp
22355         (mono_arch_emit_prolog): Computate maximum offset of a label.
22356
22357 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22358
22359         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22360         now tries to allocate prefered physical reg's for virtual
22361         regs. This reduces the number of emited spills/loads with
22362         20-30% on our core assemblies.
22363
22364 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22365
22366         * jit-icalls.c: truncl() is not needed and trunc() is
22367         the correct thing to do anyway (bug #58287).
22368
22369 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22372         if available.
22373
22374 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22375
22376         * driver.c: enable loop optimizations by default.
22377
22378 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22379
22380         * mini-x86.c: fix calc of max loop size when aligning loops start.
22381
22382 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22383
22384         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22385         the stack.
22386
22387 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22390         should set carry.
22391
22392         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22393
22394         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22395         
22396         * mini.c (inline_method): Allways inline some wrappers even if the cost
22397         is too large. Fixes #58785.
22398
22399         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22400         
22401 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22404         (crichton@gimp.org). Beginning of support for sparc/linux.
22405
22406         * mini-sparc.c: Optimize retrieval of LMF address.
22407
22408 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22409
22410         * exceptions-ppc.c:  handle alloca in methods with clauses.
22411
22412 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22413
22414         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22415
22416 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22417
22418         * mini.c: Delegate most of the abort signal work to 
22419           mono_thread_request_interruption, which also handles Stop and Suspend
22420           states.
22421
22422 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22423
22424         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22425         supports the save/restore lmf opcodes.
22426
22427 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22428
22429         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22430         by gcc-3.4 as well.
22431
22432         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22433
22434 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22435
22436         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22437         methods which contain array accesses.
22438
22439         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22440         boundaries. Fixes #58537.
22441
22442         * iltests.il: Add regression test for #58537.
22443
22444 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22445
22446         * mini-x86.c (mono_arch_local_regalloc): Last part of
22447         fix for bug #58633 (releasing register to early).
22448
22449 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22450
22451         * basic-long.cs: Add new regression test.
22452
22453 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22454
22455         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22456         register too early on the chain.
22457
22458 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * mini.c (create_helper_signature): Use a helper function to reduce
22461         the code which needs to be written. Also set the calling convention of
22462         icalls on windows. Fixes #57840.
22463
22464 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22465
22466         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22467         exceptions-ppc.c: added helper function to get the instruction address
22468         from a signal handler context.
22469
22470 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22471
22472         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22473         from gonzalo.
22474
22475 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22476
22477         * helpers.c: Add new env variable to pass args to objdump.
22478         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22479
22480 2004-05-17  Radek Doulik  <rodo@ximian.com>
22481
22482         * Makefile.am (common_sources): added abcremoval.h so it get
22483         disted and daily mono packages on go-mono.com will build again
22484
22485 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22486
22487         * abcremoval.c: Fixed coding style, added copyright header.
22488
22489         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22490
22491         * mini.h: Added prototype for abc removal main function.
22492
22493         * build_relations_propagation_table.pl: Added copyright header.
22494
22495 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22496
22497         * basic-long.cs: reg test for complex ceq_long bug.
22498
22499 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22500
22501         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22502         reg in long and clob case (bug #58343). Fixed/added comments.
22503
22504 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22505
22506         * mini.c (mono_jit_runtime_invoke): Follow new convention
22507         of calling the invoke method with an function pointer.
22508
22509 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * ChangeLog: Fix author of memory leak patch.
22512
22513 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22514
22515         * Makefile.am: fix make dist as well...
22516
22517
22518 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22519
22520         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22521         on archs where pointers are 4 bytes long.
22522
22523         * Makefile.am: Added abcremoval.c source file.
22524
22525         * abcremoval.c: Added abcremoval.c.
22526
22527         * abcremoval.h: Added abcremoval.h.
22528
22529         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22530
22531         * inssel.brg: Enabled bounds check removal.
22532
22533         * mini.c: Added support for abcrem optimization.
22534
22535         * mini.h: Added abcrem optimization label.
22536
22537         * driver.c: Added support for abcrem optimization.
22538
22539         * propagated_relations_table.def: Added propagated_relations_table.def.
22540
22541 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22542
22543         * mini.c, cfold.c: fix style.
22544
22545 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22546
22547         * mini.c: handle issue with the low-level implementation of
22548         some long opcodes (bug #54209).
22549
22550 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22551
22552         * basic.cs: test for my new cmov stuff.
22553
22554 2004-05-13      Patrik Torstensson
22555
22556         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22557         opt and added peephole documentation.
22558
22559 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22560
22561         * tramp-ppc.c: rewrote the generic trampoline code.
22562
22563 2004-05-11      Patrik Torstensson
22564
22565         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22566
22567 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22568
22569         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22570
22571         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22572         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22573
22574         * mini.c: Add new icalls for AsAny marshalling.
22575
22576 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22577
22578         * tramp-ppc.c, mini-ppc.c: more cleanups.
22579
22580 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22581
22582         * mini.c: no warnings.
22583
22584 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22585
22586         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22587
22588 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22589
22590         * mini.c: In the thread abort signal handler, if the thread is in the
22591         process of being stoped, don't throw the Abort exception, just stop the
22592         thread.
22593
22594 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22595
22596         * tramp-ppc.c: removed old code.
22597
22598 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22599
22600         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22601         do some simple speed optimizations on ppc.
22602
22603 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22606         and large offsets in load/store.
22607
22608 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22609
22610         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22611         it causes regressions.
22612
22613 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22616         support.
22617
22618 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22619
22620         * jit-icalls.c: remove warnings.
22621         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22622         speedups for unsafe code.
22623
22624 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22625
22626         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22627
22628 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22629
22630         * basic-calls.cs: Add new regression test.
22631
22632         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22633         more portable.
22634
22635         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22636
22637         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22638         is no longer used.
22639
22640 2004-05-06      Patrik Torstensson
22641
22642         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22643         long reg allocation in any reg (not only eax:edx) and implemented 
22644         long shl/shr ops in asm instead of helpers.
22645
22646 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22647
22648         * mini-sparc.h: Fix warnings.
22649
22650         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22651         stack.
22652
22653         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22654         separate statement for clarity.
22655
22656         * mini-sparc.c: Update status.
22657
22658 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22659
22660         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22661         here.
22662
22663 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22664
22665         * inssel-ppc.brg: another small pre-release workaround:
22666         we don't do overflow detection for long_sub_un.
22667
22668 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22669
22670         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22671         (also works around a weird ppc bug: 57957).
22672
22673 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22674
22675         * tramp-ppc.c: trampoline fixes.
22676
22677 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22678
22679         * mini-ppc.c: fixed typos.
22680
22681 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22682
22683         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22684         at the top of the stack. Fixed typos. Use a frame registers
22685         for all the methods with exception clauses.
22686
22687 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22688
22689         * exceptions-ppc.c: restore fp registers.
22690
22691 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22692
22693         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22694         order from the stack top (moved the stack room to save the
22695         return value for trace after the param area). Fixed corruption
22696         in restoring registers on unwind.
22697
22698 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22699
22700         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22701
22702 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22703
22704         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22705         and prolog/epilog for methods that use it. Allow
22706         enough param area room for varargs methods. Fix miguel's
22707         breakage in exception handling.
22708
22709 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22710
22711         * Makefile.am: run genmdesc only on current arch.
22712
22713 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22714
22715         * exceptions-x86.c:
22716         * mini-x86.h: fix the build on windows.
22717
22718 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22719
22720         * 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.
22721
22722         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22723
22724         * mini-exceptions.c: New file.
22725         
22726         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22727         Move some parts of the x86 exception handling code to an 
22728         arch-independent file so it can be shared with other ports.
22729
22730 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22731
22732         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22733
22734 2004-04-26  David Waite  <mass@akuma.org>
22735
22736         * driver.c: remove comma from end of enumeration declaration
22737
22738 2004-04-26  Jackson Harper  <jackson@ximian.com>
22739
22740         * driver.c: parse config file before loading first assembly. This
22741         allows the user gac to be enabled/disabled. 
22742         
22743 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22744
22745         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22746         simpler mechanism: we do not care what is encoded initially
22747         (branch absolute or relative), we care about the code and its
22748         target.  I kept the old code for reference for now.
22749
22750         The new code tries first to determine if the jump is anywhere in
22751         the -/+32 absolute meg range, if it succeeds, it encodes using the
22752         absolute branch;  If not, it tried to find something in the
22753         relative range, if not, it uses the handle_thunk code. 
22754
22755 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22756
22757         * exceptions-ppc.c: use the correct ip register on macosx.
22758
22759 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22760
22761         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22762
22763 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22764
22765         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22766         Raise exception on integer divide by zero by hand since the hw
22767         doesn't support it. Handle NaNs in FP compares.
22768
22769 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22770
22771         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22772         code reducing duplication between the platforms and enabled
22773         signal exception handling (on linux for now).
22774
22775 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22776
22777         * exceptions-ppc.c: more macosx support.
22778
22779 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22782
22783 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22784
22785         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22786
22787 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22788
22789         * iltests.il: more tests.
22790
22791 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22792
22793         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22794         vars as well.
22795
22796 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22797
22798         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22799
22800 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22801
22802         * liveness.c: Mark variables as volatile in all basic blocks reachable
22803         from exception clauses.
22804
22805 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22806
22807         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22808         inlining.
22809
22810 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22811
22812         * iltests.il, basic.cs: more tests for regalloc.
22813
22814 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22815
22816         * iltests.il: Some tests for register allocation modifications
22817         I have locally.
22818
22819 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22820
22821         * exceptions.cs: Add regression test for bug #56782.
22822
22823         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22824         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22825         the beauty of fixing the same thing in 5 different files...
22826
22827 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22828
22829         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22830         methods.
22831
22832 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22833
22834         * mini.c: Add support for STRWLPARRAY marshalling convention.
22835
22836 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22837
22838         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22839         to init the context to setup the regs pointer).
22840
22841 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22842
22843         * exceptions-ppc.c: more exceptions work.
22844
22845 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22846
22847         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22848         not allowed.
22849
22850 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22851
22852         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22853         can use the memory directly.
22854
22855         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22856
22857         add x86_add_membase, x86_sub_membase, x86_mul_membase
22858
22859 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22860
22861         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22862         GENERAL_REGS they were also hardcoded for all PPC ports.
22863
22864         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22865
22866         Remove hard-coded limit for floating point registers, use
22867         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22868
22869         Notice that in MacOS X calling conventions you can fit a lot more
22870         floating point values in registers, so I should update the PInvoke
22871         test to excercise the passing of floating point values on the
22872         stack (currently broken).
22873         
22874 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22875
22876         * tramp-ppc.c (create_trampoline_code): Added
22877         JUMP_TRAMPOLINE_SIZE. 
22878         (ppc_magic_trampoline): Follow the pattern from
22879         x86_magic_trampoline: if code is set to zero, return. 
22880         (create_trampoline_code): Always pass MonoMethod to the jump
22881         trampoline, before it was passing a null.
22882         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22883         share the code with mono_arch_create_jit_trampoline. 
22884
22885         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22886         implemented.
22887         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22888         implemented.  
22889
22890         * cpu-g4.md: Added length for jmp instruction, the worst case
22891         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22892         for save_lmf).
22893
22894 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22895
22896         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22897
22898 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22901         before each IL instruction.
22902
22903         * mini.c (CEE_BOX): Fix warnings.
22904
22905 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22906
22907         * mini.c: removed a few unused vars and extra whitespace.
22908
22909 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22910
22911         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22912         checks.
22913         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22914         index.
22915         (OP_GETCHR): use the above
22916         (CEE_LDELEMA): use the above.
22917
22918         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22919         version of the generic impl.
22920         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22921         (CEE_LDELEMA): use the above.
22922
22923 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22924
22925         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22926         Fixes #56317.
22927
22928         * iltests.il: Added new regression test for #56317.
22929
22930 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22931
22932         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22933         under NetBSD. Fixes #56450.
22934
22935         * liveness.c (update_gen_kill_set): Fix previous patch.
22936
22937 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22938
22939         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22940
22941 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22942
22943         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22944         ldsfld and ldsflda.
22945
22946         * inssel-sparc.brg: Add more optimizations.
22947
22948         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22949
22950 2004-04-01  Martin Baulig  <martin@ximian.com>
22951
22952         * mini.c (handle_box): New static function; moved the
22953         implementation of CEE_BOX here.
22954         (mono_method_to_ir): Added `constrained_call' variable.
22955         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22956         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22957         mono_method_get_constrained() to get the method.
22958
22959 2004-04-01  Martin Baulig  <martin@ximian.com>
22960
22961         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22962         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22963         (mono_method_to_ir): We don't need these macros anymore since
22964         mono_class_get_full() already takes care of it. 
22965
22966 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22967
22968         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22969         use @function (as doesn't accept #function here) and check the return
22970         value of system and stop if fails.
22971
22972 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22973
22974         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22975
22976 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22977
22978         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22979
22980         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22981
22982         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22983         #56223.
22984
22985         * basic-long.cs: Add test for negation of Int64.MinValue.
22986
22987 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22988
22989         * mini-sparc.c: Update status.
22990
22991         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22992
22993         * exceptions-sparc.c: Fix return value in filters.
22994
22995         * inssel-sparc.brg: Fix register allocation in some rules.
22996
22997 2004-03-28  Martin Baulig  <martin@ximian.com>
22998
22999         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23000         if neccessary.  
23001
23002 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23003
23004         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23005         
23006         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23007         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23008         remove unused conv_u4 opcode.
23009
23010         * mini-x86.c: Remove valgrind workaround since it slows down things
23011         even when mono is not run under valgrind.
23012
23013 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * mini-sparc.c: Update status.
23016
23017         * inssel-sparc.brg: Add some optimizations.
23018
23019         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23020         future delay slot filling. Add support for varargs, tail calls and JMP.
23021
23022         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23023         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23024
23025         * inssel.brg: Fix register allocation in OP_ARGLIST.
23026
23027         * inssel.brg: Fix warnings.
23028
23029 2004-03-25  Martin Baulig  <martin@ximian.com>
23030
23031         * mini.c (inflate_generic_field): Removed.
23032         (mini_get_method): Removed, use mono_get_method_full(),
23033         (mini_get_class): Removed, use mono_class_get_full().
23034         (mono_method_to_ir): Pass our generic context to
23035         mono_field_from_token().        
23036
23037 2004-03-25  Martin Baulig  <martin@ximian.com>
23038
23039         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23040         of a `MonoMethod *'.
23041         (mini_get_method): Take a `MonoGenericContext *' instead
23042         of a `MonoMethod *'.
23043         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23044         a new local variable called `generic_context' which holds the
23045         current `MonoGenericContext *'; use it to lookup things.
23046
23047 2004-03-24  Martin Baulig  <martin@ximian.com>
23048
23049         * mini.c (mini_get_class): New static method; if we're inside a
23050         generic instance, inflate the class if neccessary.
23051         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23052
23053 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23054
23055         * iltests.il: New regression test for #55976.
23056
23057         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23058         #55976.
23059
23060 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23063         output.
23064
23065 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23066
23067         * liveness.c: Consider SSA stores as well as loads when making vars
23068         volatile.
23069
23070         * exceptions.cs: New regression tests for register allocation.
23071         
23072 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23073
23074         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23075         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23076           domain lock only to protect puntual access to data structures.
23077           Added access lock for sighash, jit_icall_hash_name, 
23078           jit_icall_hash_addr and domain->code_mp.
23079
23080 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23081
23082         * driver.c: Print SIGSEGV handling method.
23083
23084         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23085
23086         * mini.c (setup_jit_tls_data): Handle case when this is called
23087         multiple times for a thread.
23088
23089         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23090         is different from fbxx_un. Fixes #54303. Also use constants instead of
23091         magic numbers in a lot of places.
23092
23093 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23094
23095         * exceptions.cs: Fix cctor test when --regression is used.
23096
23097 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23098
23099         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23100         for Linux/ppc.
23101
23102 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23103
23104         * inssel-ppc.brg: fixed register assignments for some rules.
23105
23106 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23107
23108         * exceptions.cs: Add test for exceptions in static constructors.
23109
23110         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23111         static constructors outside the domain lock. Fixes #55720.
23112
23113 2004-03-17  Martin Baulig  <martin@ximian.com>
23114
23115         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23116         (inflate_generic_field): Take the `MonoMethod *' instead of the
23117         `MonoClass *' and added support for generic method.
23118         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23119         have a `field->parent->gen_params', only inflate the field if it's
23120         an open constructed type.
23121
23122 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23123
23124         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23125         exception object instead of the preconstructed ones.
23126
23127 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23128
23129         * mini.c: reverted changed to sigsegv_signal_handler commited
23130         accidentally in the previous patch.
23131
23132 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23133
23134         * mini.c:
23135         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23136         running --aot with an old assembly.
23137
23138 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23139
23140         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23141         point values.
23142
23143         * mini-sparc.c: Add support for v9 branches with prediction.
23144
23145 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23146
23147         * mini.c (mini_init): #warning is GNUC only
23148
23149         * mini-sparc.h: implement __builtin_frame_address
23150         and __builtin_return_address for Sun C compiler
23151
23152 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23153
23154         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23155
23156 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23157
23158         * basic-calls.cs: Add test for unaligned byref long argument passing.
23159
23160         * mini-ops.h: Add sparcv9 compare and branch instructions.
23161
23162         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23163         v9 instructions if we have a v9 cpu.
23164
23165         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23166         registers for global allocation.
23167
23168         * exceptions-sparc.c: Fixes.
23169         
23170 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23171
23172         * liveness.c (mono_analyze_liveness): Optimized version.
23173
23174         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23175
23176         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23177         sparc work.
23178
23179         * basic-float.cs basic-calls.cs: New regression tests.
23180
23181 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23182
23183         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23184         sigaltstack implementation.
23185
23186         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23187         
23188         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23189         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23190
23191 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23192
23193         * mini.c: Fix warnings.
23194         
23195         * mini.c (mono_resolve_patch_target): New function which contains the
23196         arch independent part of the patching process.
23197
23198         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23199         patching code to a separate function.
23200
23201 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23202
23203         * mini.c (add_signal_handler): ifdef out on Windows
23204
23205 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23208         cpu-sparc.md: Add exception handling support + other fixes.
23209
23210         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23211         typed GC detection in --version.
23212
23213         * basic.cs exceptions.cs: New regression tests.
23214
23215         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23216         the arch specific code can store data during a compilation.
23217
23218         * mini-ops.h: Add OP_SETFRET.
23219
23220         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23221         function, register a separate icall for each arity, so the icalls can
23222         get a wrapper.
23223         
23224         * mini.c (mono_print_tree): Print negative offsets in a more readable
23225         form.
23226         
23227         * mini.c: Make signal handling work on sparc.
23228         
23229         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23230
23231         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23232
23233         * jit-icalls.c: Emulate truncl by aintl on solaris.
23234
23235         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23236
23237 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23238
23239         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23240
23241 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23242
23243         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23244         a MarshalByRef type, inline a method that performs the check, taking into
23245         account that the object can be a proxy. Also implemented tow new opcodes:
23246         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23247         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23248         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23249
23250 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23251
23252         * mini-ppc.c: if a relative branch displacement is too big
23253         but it points to and area reachable with an absolute branch, 
23254         avoid the thunks.
23255
23256 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23257
23258         * mini.c: optimize small copies in cpblk.
23259
23260 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23261
23262         * basic-calls.cs basic-float.cs: New regression tests.
23263
23264         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23265         negative offsets from %fp. Implement localloc. Fix local register 
23266         allocation. Fix the case when the this argument needs to be saved to
23267         the stack. Implement some missing opcodes.
23268
23269 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23270
23271         * mini.c (mini_method_compile): Reenable global regalloc in methods
23272         with exception handlers.
23273
23274         * linear-scan.c (mono_varlist_sort): Fix warning.
23275
23276         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23277
23278         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23279         regalloc costs.
23280
23281         * liveness.c: Make all variables uses in exception clauses volatile, to
23282         prevent them from being allocated to registers. Fixes #42136.
23283
23284 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23285
23286         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23287         causes regressions.
23288
23289         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23290         argument to mono_arch_regalloc_cost.
23291
23292         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23293         precisely.
23294
23295 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23296
23297         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23298         Make the cost of allocating a variable to a register arch dependent.
23299
23300         * basic-calls.cs: Fix compilation of tests.
23301         
23302         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23303         helper function to cut back on the number of #ifdefs needed.
23304
23305         * mini-ppc.c: Fix compilation.
23306
23307         * basic-calls.cs: New regression tests.
23308
23309         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23310
23311         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23312         of l0 since that is callee saved.
23313
23314         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23315         to virtual calls.
23316
23317         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23318         of delay instruction.
23319
23320         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23321
23322         * mini.h (MonoCallInst): Add 'virtual' flag.
23323
23324         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23325
23326 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23327
23328         * *.cs: New regression tests.
23329
23330         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23331         work.
23332
23333         * mini.c (mono_runtime_install_handlers): Fix build.
23334
23335         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23336         'signal_stack_size' members.
23337
23338         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23339         alternate signal stack.
23340
23341         * exceptions-x86.c: Add stack overflow handling.
23342
23343         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23344         functions to arch independent code.
23345
23346         * mini.c (mono_print_tree): Print more detailed info for load_membase
23347         opcodes.
23348         
23349 2004-02-23  Martin Baulig  <martin@ximian.com>
23350
23351         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23352
23353 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23354
23355         * mini-x86.c: fixed reg allocation for div/rem.
23356
23357 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23358
23359         * driver.c (mono_main): Report some configuratio options on --version.
23360
23361 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23362
23363         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23364         low in the address space. Correctly flush memory in thunks where we
23365         output native code.
23366
23367 2004-02-20  Martin Baulig  <martin@ximian.com>
23368
23369         * mini.c (mini_get_method): New static method; inflate all generic
23370         methods and methods in open generic instances.
23371         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23372         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23373
23374 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23375
23376         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23377
23378         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23379
23380 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23381
23382         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23383
23384         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23385         it compile using Sun's compiler.
23386
23387 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23388
23389         * 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.
23390
23391         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23392
23393 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23394
23395         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23396         code.
23397         * mini-ppc.c: handle calls outside of the allowed range with thunks
23398         allocated using the code manager.
23399         * tramp-ppc.c: use the code manager to hold generated native code.
23400         Fixed the magic trampoline to just patch vtable entries.
23401
23402 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23403
23404         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23405         independent file.
23406
23407 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23408
23409         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23410         PPC.
23411
23412         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23413         if we have a working __thread implementation.
23414
23415         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23416         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23417
23418 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * mini-x86.c: Fix compilation under gcc 2.
23421         
23422 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23425         contains a call to the wrapped function.
23426
23427         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23428         OP_<CALL>_IMM opcodes, and use them under X86.
23429         
23430         * mini.c (mono_jit_find_compiled_method): Fix warning.
23431
23432         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23433
23434         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23435
23436         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23437         functionality to mini.c.
23438
23439         * mini.c (mono_create_jump_trampoline): New function to create a jump
23440         trampoline. Return a compiled method instead of a trampoline if it
23441         exists. Add a cache for jump trampolines.
23442
23443         * mini.c (mono_jit_find_compiled_method): New function to return a
23444         compiled method if it exists.
23445
23446         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23447         mono_arch_create_jit_trampoline.
23448
23449         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23450         a jump trampoline. Fixes #52092.
23451         
23452 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23453
23454         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23455         which is not up-to-date. Add check_corlib_version () instead.
23456
23457         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23458         have to call it.
23459         
23460         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23461         since newer valgrind versions do not need it.
23462
23463         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23464         compile a method with a given set of optimizations.
23465
23466         * mini.c: Compile icall wrappers on-demand instead of at startup.
23467
23468         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23469         wrapper for an icall.
23470
23471 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23472
23473         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23474         #54063.
23475
23476         * iltests.il: Add test for non-empty stack before switch instruction.
23477
23478 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23479
23480         * mini.c: Add support for new stringbuilder marshalling conventions.
23481
23482         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23483
23484 2004-02-01  Martin Baulig  <martin@ximian.com>
23485
23486         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23487         in `ginst->mtype_argv'.
23488
23489 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23490
23491         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23492         facilitate grepping.
23493
23494 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23495
23496         * mini.c: fixed buglet in initobj generic implementation for references.
23497
23498 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * Makefile.am: make the version script conditional.
23501         * jit-icalls.c: handle missing truncl().
23502
23503 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23504
23505         * exceptions.cs: Add more tests for double->int conversion.
23506
23507         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23508         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23509
23510 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23511
23512         * driver.c: make --verbose --version emit an error
23513         if the loaded corlib doesn't match the runtime version.
23514
23515 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23516
23517         * mini-ppc.h: export ppc_patch().
23518         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23519         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23520         on par or better than on MacOSX.
23521
23522 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23523
23524         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23525         mono_lookup_pinvoke_call.
23526
23527         * mini-x86.c: Under windows, the default pinvoke calling convention is
23528         stdcall. Fixes #52834.
23529
23530         * mini.c (optimize_branches): Add an upper bound to the number of
23531         iterations to prevent infinite loops on strange loops. Fixes #53003.
23532
23533 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23534
23535         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23536         and ISINST. Fixes #52093.
23537
23538         * objects.cs (test_0_vector_array_cast): New tests.
23539         
23540 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23543         checking in Array.Set ().
23544
23545         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23546         #52590.
23547
23548         * object.cs (test_0_multi_array_cast): New regression test.
23549
23550 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23551
23552         * exceptions-ppc.c: fix build on Linux/PPC.
23553
23554 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23555
23556         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23557         running under valgrind.
23558         (x86_magic_trampoline): Fix build bustage.
23559
23560         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23561         negative values as well. This is needed for the encoding of the line number
23562         info, since sometimes the line numbers are not in increasing order.
23563
23564 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23565
23566         * cpu-pentium.md (localloc): Increase the size of the localloc 
23567         instruction since it is a loop under Win32.
23568
23569         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23570         allocation.
23571
23572 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23573
23574         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23575         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23576         Max Horn (max@quendi.de). Fix file names in comments.
23577
23578 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23581         avoid stack overflow.
23582         (replace_usage): Avoid uninitialized variable warnings.
23583
23584         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23585         and taking the address of valuetype variables.
23586
23587 2004-01-03  Patrik Torstensson
23588
23589         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23590         for other purposes than FP later on.
23591
23592 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23593
23594         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23595         of tail calls.
23596
23597 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23598
23599         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23600
23601 2003-12-30  Patrik Torstensson <p@rxc.se>
23602
23603         * mini-x86.h: Decreased number of availiable fp regs.
23604         Solves corner cases with FP spilling.
23605
23606 2003-12-23  Patrik Torstensson <p@rxc.se>
23607
23608         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23609         for floating point stack tracking / spilling on x86. 
23610         Fixes bug #49012.
23611         
23612         * basic-float.cs: added float mul overflow test.
23613
23614 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23615
23616         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23617
23618 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23619
23620         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23621         supports for cond branches that overflow the immediate
23622         overflow offset. mcs can compile simple programs.
23623
23624 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23625
23626         * exceptions-ppc.c: exception handling support wip:
23627         finally handlers get run on exception.
23628
23629 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23630
23631         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23632         profiling.
23633
23634 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23635
23636         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23637         initial support for stack walking and unwinding.
23638
23639 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23640
23641         * driver.c (mono_main): Make corlib-out-of-sync message more 
23642         descriptive. Also remove verify_corlib call.
23643
23644 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23645
23646         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23647         not overlap with other call's arguments, too.
23648
23649 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23650
23651         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23652         move to arch-specific code the choice of arch-specific
23653         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23654         * mini.c: ensure emulation calls will not interleave
23655         with other calls.
23656
23657 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23658
23659         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23660         the magic trampoline stack frame is dropped before executing
23661         the new method.
23662
23663 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23664
23665         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23666         and integer to fp conversions. Added support for overflowing
23667         arguments on the stack. Reserve a couple more registers as temps.
23668         Added support for aot compilation (as output still needs to be
23669         tweaked, though).
23670
23671 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23672
23673         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23674         Don't overwrite return register in some corner cases.
23675
23676 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23677
23678         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23679         static constructors when AOT compiling.
23680
23681         * driver.c (mono_main): Call mono_check_corlib_version.
23682
23683 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23684
23685         * cpu-g4.md, basic.cs: fixed div target register.
23686
23687 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23688
23689         * mini-ppc.c, basic.cs: shl_imm fix with test.
23690
23691 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23692
23693         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23694         structures by value. Misc fixes.
23695         * objects.cs: more tests.
23696
23697 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23698
23699         * mini-ppc.c: lconv.ovf.i implemented.
23700
23701 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23702
23703         * mini.c:
23704         (mini_init): don't error out if someone already called g_thread_init.
23705
23706 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23707
23708         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23709         to be any type per the spec. Fix abnormal memory usage when
23710         the same object is repeatedly thrown.
23711
23712 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23713
23714         * mini.c: check for overruns in IL code.
23715
23716 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23717
23718         * TODO: Add/remove some todo entries.
23719
23720 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23721
23722         * driver.c (mono_main): Call mono_verify_corlib.
23723
23724 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23725
23726         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23727         This has been moved to mini.c
23728         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23729         type being casted is marshalbyref it could be a proxy, so instead of
23730         emitting the type check code, emit a call to a runtime method that will
23731         perform the check by calling CanCastTo if needed.
23732
23733 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23736         methods with large stack frames under Win32.
23737
23738 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23739
23740         * Makefile.am: Distribute regression tests.
23741
23742         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23743         at the end instead of inserting each variable into the sorted list.
23744
23745         * linear-scan.c (mono_varlist_sort): New helper function.
23746         
23747 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23748
23749         * mini.c: ensure arguments and locals are within bounds.
23750
23751 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23752
23753         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23754         related fixes.
23755
23756 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23757
23758         * mini.c (mono_cprop_copy_values): Fix crash.
23759
23760         * aot.c: Set verbosity back to 0.
23761         
23762 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23763
23764         * regalloc.c: complete memory leak fix by Laurent Morichetti
23765         (l_m@pacbell.net).
23766
23767 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * driver.c (main_thread_handler): Revert the previous patch.
23770
23771         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23772         under valgrind.
23773
23774         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23775         memory from the memory pool.
23776
23777         * driver.c (main_thread_handler): Turn on all optimizations when
23778         --aot is used.
23779
23780         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23781         an array for better performance.
23782
23783         * regalloc.c (mono_regstate_assign): Fix memory leak.
23784
23785         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23786         serialize the debug info.
23787
23788         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23789         debug info from the serialized representation.
23790
23791         * aot.c: Save debug info into the generated file and load it when 
23792         loading a method.
23793
23794         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23795
23796 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23797
23798         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23799         More FP-related fixes.
23800
23801 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23802
23803         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23804         and register allocation buglet. Hello world now runs.
23805
23806 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23807
23808         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23809         * tramp-ppc.c: fixed class init trampoline.
23810         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23811
23812 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23813
23814         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23815         mini.c: more ppc changes/fixes.
23816
23817 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23818
23819         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23820         Also optimize the case when the arguments are the same in the caller 
23821         and in the callee.
23822
23823         * iltests.il: Add tests for tail calls with valuetype arguments.
23824
23825 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23826
23827         * mini-ppc.c: fixes for struct return type.
23828
23829 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23830
23831         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23832         mono_spillvar_offset() to arch-specific code.
23833
23834 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23835
23836         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23837
23838 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23839
23840         * exceptions-x86.c: Fix stack space leaks.
23841         
23842         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23843         registers from the lmf if the method has save_lmf set.
23844
23845 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23846
23847         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23848         of icall wrappers into InvokeInDomain, since these are now per-domain.
23849
23850 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23851
23852         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23853         make some opcode emulation and intrinsic ops enabled/disabled 
23854         according to the architecture. More fixes.
23855
23856 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23857
23858         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23859
23860 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23861
23862         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23863         arch-specific handling for 'this' and struct return type to
23864         arch-specific code.
23865
23866 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23867
23868         * aot.c: prevent divide by zero error when reporting (it happened with
23869         Accessibility.dll).
23870
23871 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23872
23873         * mini.h (inst_switch): Remove unused macro.
23874
23875 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23876
23877         * aot.c:
23878         (load_aot_module): free 'info->methods' and 'info' properly. No more
23879         "free(): invalid pointer blah" messages when you have an old aot
23880         compiled assembly.
23881
23882 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23883
23884         * jit-icalls.c, mini.c: Added support for context static fields.
23885
23886 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini.c (mono_method_blittable): Methods which set LastError are not 
23889         blittable either. Fixes #51108.
23890         
23891 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23892
23893         * mini.c: flush icache.
23894         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23895
23896 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23897
23898         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23899
23900 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23901
23902         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23903         safe on IA32.
23904
23905         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23906         vararg calls.
23907
23908         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23909
23910 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23911
23912         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23913         instruction when the result is discarded.
23914
23915         * iltests.il (test_0_div_regalloc): New regression test.
23916
23917         * arrays.cs: Fix compilation error.
23918
23919 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23920
23921         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23922         float rules to inssel-x86.brg: sane architectures with FP registers
23923         don't need to implement these rules.
23924
23925 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23926
23927         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23928
23929 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23930
23931         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23932         implementation of 32 bit systems.
23933
23934 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23935
23936         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23937         (Jeroen Zwartepoorte).
23938
23939 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23940
23941         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23942         the caller and the callee matches.
23943         
23944         * mini.c (mono_method_to_ir): Add comment.
23945
23946         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23947         signbit is missing on some platforms.
23948
23949 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23950
23951         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23952
23953         * mini.c (setup_jit_tls_data): Call the new function.
23954         
23955         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23956
23957         * mini-x86.c: Add experimental support for fast access to the lmf
23958         structure under NPTL/Linux 2.6.x.
23959
23960 2003-11-06  Martin Baulig  <martin@ximian.com>
23961
23962         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23963         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23964         the debugger.
23965
23966 2003-11-02  Martin Baulig  <martin@ximian.com>
23967
23968         * mini.c (inflate_generic_field): New static method.
23969         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23970         generic instance and the field is declared in a generic type, call
23971         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23972
23973 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23974
23975         * mini.h mini.c (mono_method_same_domain): New function to return
23976         whenever the caller and the callee are in the same domain.
23977
23978         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23979
23980 2003-10-30  Martin Baulig  <martin@ximian.com>
23981
23982         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23983         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23984         method parameters.
23985         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23986         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23987
23988 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23989
23990         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23991         propagation.
23992
23993         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23994         object here, so it is in the correct appdomain etc.
23995
23996 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23997
23998         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23999         already done.
24000         (mono_method_to_ir): Avoid freeing the type created returned from
24001         mono_type_create_from_typespec, since it is put into an internal cache
24002         by the function. Fixes pointer.exe.
24003
24004         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24005         trampolines for icalls and pinvokes as well. Fixes #33569.
24006
24007 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * mini.c: Update after appdomain changes.
24010
24011         * mini.c (mono_jit_compile_method_inner): Allways compile native
24012         method wrappers in the root domain, since there can only be one
24013         instance of them, whose address is stored in method->info.
24014
24015 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24016
24017         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24018         environment variable. Instead detect automatically whenever running
24019         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24020         valgrind.h.
24021
24022 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24023
24024         * trace.c, trace.h: New files that implement the new trace option
24025         parsing. 
24026
24027         * driver.c: Document new --trace options.
24028
24029         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24030         mini-x86.c: Apply:
24031
24032         -       if (mono_jit_trace_calls)
24033         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24034
24035         * mini.h: prototypes.
24036         
24037 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24038
24039         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24040
24041         * mini.c inssel.brg: Implement typedefbyref opcodes.
24042
24043         * mini.c (mono_jit_compile_method): Remove unused local variable.
24044
24045         * mini.c (mono_jit_compile_method_inner): Ditto.
24046         
24047 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24048
24049         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24050         
24051         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24052
24053 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24054
24055         * mini.c (mono_no_aot): Remove unused global variable.
24056
24057         * mini.c: Thread safety fixes.
24058
24059 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * mini.c (mono_create_class_init_trampoline): Add a lock around
24062         class_init_hash_addr.
24063
24064         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24065         #30073.
24066
24067         * mini.c: Decompose the NEWARR instruction before decomposing its
24068         arguments. Fixes #30073.
24069
24070 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24071
24072         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24073         convention.
24074
24075 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24076
24077         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24078
24079         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24080
24081         * driver.c: Add support for compiling icall wrappers to --compile.
24082
24083 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24084
24085         * inssel.brg: The empty value in class->interface_offsets is -1, not
24086         0. Fixes #49287.
24087
24088 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24089
24090         * objects.cs: New test for 'is' operator on an array of interfaces.
24091
24092 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24093
24094         * tramp-ppc.c: update trampoline code to support jumps
24095         and class initialization.
24096
24097 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24100
24101         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24102
24103         * inssel.brg (OP_UNBOX): Remove unused rule.
24104
24105         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24106         region instead of one for each method. Fixes #47813.
24107
24108 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24109
24110         * exceptions.cs (test_0_nested_finally): New regression test for
24111         nested exception handlers.
24112
24113         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24114
24115         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24116
24117         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24118         inlining.
24119
24120         * mini.c (mono_method_check_inlining): Make the inlining limit 
24121         configurable by an environment variable.
24122         
24123         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24124
24125         * mini.h: Bump AOT file version.
24126
24127         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24128         token, store the image along with the token, since the token might not 
24129         refer to the same image as the method containing the relocation, 
24130         because of inlining.
24131
24132 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24133
24134         * mini.c (mono_precompile_assemblies): New function to compile
24135         all methods in all loaded assemblies.
24136
24137         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24138
24139         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24140         iassign and fassign to int*, since they can contain large negative
24141         values if the register is spilled. Also added some comments. Fixes
24142         #45817.
24143
24144         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24145         under Win32. Fixes #42964.
24146
24147 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24148
24149         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24150
24151         * aot.c: Added support for AOT compiling methods which contain calls
24152         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24153         handled.
24154         
24155         * driver.c (compile_all_methods): Run the compilation in a thread
24156         managed by mono. Fixes #44023.
24157
24158         * mini.c (mono_codegen): Print full method name in verbose output.
24159
24160         * mini-x86.c (mono_arch_patch_code): Fix warning.
24161         
24162         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24163         jumps, since the method we are jumping to might be domain-specific.
24164
24165         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24166
24167 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24168
24169         * inssel.brg: string chars are unsigned.
24170
24171 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24172
24173         * TODO: New todo item.
24174
24175         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24176         which calls mono_runtime_class_init and patches the call site to
24177         avoid further calls.
24178         (mono_arch_create_class_init_trampoline): New arch specific function 
24179         to create a class init trampoline.
24180         (create_trampoline_code): Generalized so it can create
24181         class init trampolines as well.
24182
24183         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24184         (mono_create_class_init_trampoline): New function to create and cache
24185         class init trampolines.
24186         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24187         vtable given the address of a class init trampoline. Used by the
24188         patching process.
24189         (mono_codegen): Generate a call to a trampoline instead of
24190         mono_runtime_class_init in LDSFLD[A].
24191         (mono_codegen): Add relocations for the new trampoline.
24192         
24193         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24194         MONO_PATCH_INFO_CLASS_INIT.
24195
24196         * mini.h: Bump AOT version number.
24197
24198         * aot.c: Create a copy of the loaded code instead of using the original
24199         so methods which call each other will be close in memory, improving
24200         cache behaviour.
24201         
24202         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24203         patch since it breaks the regression tests.
24204         
24205         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24206         for the register saving instruction sequence since the 
24207         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24208
24209 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24210
24211         * TODO: Fix todo item && remove another.
24212
24213 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24214
24215         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24216         previous checkin.
24217
24218         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24219         function of the module.
24220
24221         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24222         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24223         --no-aot command line option.
24224
24225 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24226
24227         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24228         by Bernie Solomon (bernard@ugsolutions.com).
24229
24230         * inssel.brg: Refactor the interface offset table related code into
24231         its separate functions and add support for the AOT case.
24232
24233 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24234
24235         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24236         
24237         * aot.c: Added mono_aot_verbose variable and made all debugging
24238         output depend on the value of this variable.
24239
24240         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24241         method_label and info_label.
24242
24243         * mini.h mini-x86.c aot.c: Added a new relocation type 
24244         MONO_PATCH_INFO_IID for klass->interface_id.
24245
24246         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24247         the MonoJitInfo structure.
24248
24249         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24250         a non-root appdomain in shared mode.
24251
24252 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24253
24254         * aot.c: make aot loader less verbose. Remove free of unused variable.
24255
24256 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24257
24258         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24259
24260         * .cvsignore: Added *.dll.
24261
24262         * mini.c (mono_print_tree_nl): New function callable while debugging.
24263
24264         * mini.c (mono_print_code): Export this.
24265
24266         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24267         patched code.
24268
24269 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24270
24271         * mini.h (MonoCompile): Added 'jit_info' field.
24272
24273         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24274         the cfg structure, since it is needed by the AOT compiler.
24275
24276         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24277
24278         * aot.c: A major rewrite. Changes include:
24279         - save exception tables for methods which have them.
24280         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24281         to g_module_symbol.
24282         - reworked the file format so it is now much smaller and needs
24283         fewer relocation entries.
24284         
24285 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24286
24287         * aot.c (load_aot_module): Fix build bustage on platforms without
24288         Boehm GC.
24289
24290 2003-09-04  Martin Baulig  <martin@ximian.com>
24291
24292         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24293
24294 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24295
24296         * TODO: Some new optimization ideas.
24297
24298         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24299
24300         * aot.c: Save the optimization flags used to compile the code into
24301         the AOT module.
24302
24303         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24304         support emitting domain specific code.
24305         
24306         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24307         no longer domain neutral. It can be made domain neutral by compiling 
24308         with --optimize=shared.
24309
24310         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24311         between appdomains.
24312
24313         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24314         loading of AOT code.
24315
24316         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24317         
24318         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24319         if there is no domain neutrality information.
24320
24321 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24322
24323         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24324         format version into the generated library.
24325
24326         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24327         callee method into the caller since one of them could be shared.
24328
24329         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24330         system exceptions from AOT code now works.
24331
24332         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24333         method if it is domain neutral and the callee is not.
24334
24335         * graph.c (cfg_emit_one_loop_level): Fix warning.
24336
24337 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24338
24339         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24340         last checkin.
24341
24342 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24343
24344         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24345         is needed  by code which is executed before mono_runtime_init ().
24346         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24347         
24348         * mini.c (mono_thread_abort): Fix warning.
24349         (mono_jit_compile_method): Call static constructor in the AOT case too.
24350
24351         * aot.c (mono_compile_assembly): Fix warning.
24352
24353 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24354
24355         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24356
24357 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24360
24361         * cpu-pentium.md: Fix the length of call opcodes so they include the
24362         ESP restoring instruction. Fixes #47968.
24363
24364 2003-08-28  Martin Baulig  <martin@ximian.com>
24365
24366         * mini-x86.c (mono_arch_call_opcode): Added support for
24367         MONO_TYPE_GENERICINST.
24368
24369         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24370
24371 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24374         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24375
24376         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24377         metadata_section.
24378
24379 2003-08-26  Martin Baulig  <martin@ximian.com>
24380
24381         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24382         when reporting an error, set this to the actual error location.
24383         (mono_method_to_ir): Report the correct error location if
24384         get_basic_blocks() returned an error.
24385
24386 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24387
24388         * mini.c (mono_type_blittable): OBJECT is not blittable.
24389         (mono_method_blittable): Methods which have marshalling descriptors
24390         are not blittable either. Fixes #47842.
24391
24392 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24393
24394         * driver.c mini.c: Use an environment variable instead of a global 
24395         variable. Also fix the build.
24396
24397         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24398         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24399         reporting this. 
24400
24401         * driver.c mini.c: Added --with-valgrind option to turn off some
24402         code which prevents mono from running under valgrind.
24403
24404         * mini.c (mono_emit_call_args): Fixed warning.
24405
24406         * mini.c (mono_emulate_opcode): Fixed warning.
24407
24408 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24409
24410         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24411         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24412         regalloc.c, regalloc.h: specify available registers in arch-specific
24413         code and support floats in the regallocator (patch by Laurent Morichetti 
24414         <l_m@pacbell.net>)
24415
24416 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24417
24418         * mini.c: mono_thread_current() can be called only after
24419         mono_runtime_init(): rearrange code to not call it early on.
24420
24421 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24422
24423         * mini.c: allocate jump tables in the code mempools.
24424
24425 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24426
24427         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24428         freed.
24429
24430 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24431
24432         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24433         12 to 16.  This fixes bug #47453.
24434
24435
24436 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24437
24438         * mini-ppc.c: fixed indexed load and unsigned compares.
24439
24440 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24441
24442         * mini.c: reenabled installation of handler for
24443           thread abort signal.
24444
24445 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24446
24447         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24448         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24449         until it's fixed and actually useful.
24450
24451 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * inssel-long32.brg: couple more opcodes implemented.
24454
24455 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24456         
24457         * mini-sparc.c: Even more opcodes implemeted.
24458
24459 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24460
24461         * mini-sparc.c: More opcodes implemented.
24462
24463 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24464
24465         * mini-sparc.c: More opcodes implemented.
24466
24467 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24468
24469         * inssel-sparc.brg: Add some needed rules.  Direct
24470         copy from PPC.
24471         * Makefile.am: Use inssel-sparc.brg
24472         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24473         an assert happy for now.
24474
24475 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24476
24477         * mini-sparc.c: Fixed compile errors.
24478         * exceptions-sparc.c: Same.  We now produce a mono binary 
24479         on sparc-linux.  Yea.
24480
24481 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24482
24483         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24484         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24485         They compile, but do not work.
24486
24487 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24488
24489         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24490         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24491         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24492         (ct@gentoo.org).
24493
24494 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24495
24496         * mini.c: more opcodes implemented and better support for generics.
24497
24498 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24499
24500         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24501         * mini.c, mini.h: first cut at generics support: some new instructions 
24502         added and changed the behaviour of some of the existing ones.
24503
24504 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24505
24506         * mini.c: Removed definition of metadata_shared mutex here.
24507
24508 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24509
24510         * mini-x86.c: make vararg calls work for instance methods.
24511
24512 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24513
24514         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24515         returns the arguments in a separte list, now.
24516
24517 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24518
24519         * aot.c, mini.c: updates for array type representation changes.
24520
24521 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24522
24523         * mini.c: register function to perform jit shutdown.
24524
24525 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24526
24527         * mini.c: use a faster allocator if possible.
24528
24529 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24530
24531         * aot.c: some cleanups and portability changes.
24532
24533 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24534
24535         * mini.c: use faster allocation for CEE_BOX if possible.
24536
24537 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24540         Moved inlined mempcy code to its own function so that is can be
24541         reused. Added an inline memset function as well (optimized initobj).
24542         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24543
24544 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24545
24546         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24547
24548 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24549
24550         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24551         arch code can setup the cpu for CLR execution, if needed.
24552         We use it on x86 to set the precision of FP operations.
24553
24554 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24555
24556         * mini.c: disable some optimizations if we can guess they'll cost too
24557         much for a given method.
24558
24559 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24560
24561         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24562         
24563 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24564         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24565         info collection support.
24566
24567 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24568
24569         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24570         is now implemented in the profiling API. Get rid of a couple of
24571         unnecessary global variables.
24572
24573 2003-06-15  Nick Drochak <ndrochak@gol.com>
24574
24575         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24576         * cpu-g4.md: add op_bigmul and op_bigmul_un
24577         * cpu_pentium.md: add op_bigmul_un
24578         * inssel-long32.brg: add rule for unsigned bigmul
24579         * mini-ops.h: define OP_BIGMUL_UN
24580         * mini-x86.c: THE BUG: handle (un)signed properly
24581         * mini.c: choose unsigned opcode if needed.
24582         This set of patches fixes bug #44291
24583
24584 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24585
24586         * mini.c (optimize_branches): improved to handle all kinds of
24587         conditional branches.
24588
24589 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24590
24591         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24592         don't raise exceptions.
24593
24594 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24595
24596         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24597         to arch-specific files.
24598
24599 2003-06-09  Martin Baulig  <martin@ximian.com>
24600
24601         * Makefile.am (libs): Added $(LIBGC_LIBS).
24602
24603 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24604
24605         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24606         and OP_ATAN (fixes bug#44293).
24607
24608 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24609
24610         * Makefile.am, mini-x86.c: rename cpu description array to
24611         pentium_desc, since some compilers define the 'pentium' preprocessor
24612         symbol.
24613
24614 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24615
24616         * mini.c (mini_select_instructions): add explicit branch if the
24617         following block is not the false target of a conditional branch -
24618         we need this with any optimization that reorder or remove bblocks
24619
24620         * mini.c (optimize_branches): bug fixes
24621
24622 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24623
24624         * mini.c (mono_method_to_ir): inline static readonly fields
24625
24626         * ssa.c (fold_tree): start cfold support for long (very simple
24627         cases only)
24628
24629         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24630
24631 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24632
24633         * inssel.brg: fixed memcpy (bug #44219).
24634
24635 2003-06-05  Dick Porter  <dick@ximian.com>
24636
24637         * driver.c: Set the glib log levels to not abort if g_message
24638         recurses.
24639
24640         g_set_prgname() has to happen before mini_init() so that the
24641         process handle gets the info.
24642         
24643 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * driver.c: add intrins to the default optimizations to get wider
24646         exposure.
24647
24648 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * mini.h: some large basic blocks will overflow a 16-bit
24651         integers for symbolic registers.
24652
24653 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24654
24655         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24656         (mono_arch_output_basic_block): fix bug 43499 
24657
24658 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24659
24660         * mini.c: kill duplicated definition of mono_debug_format.
24661
24662 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24663
24664         * mini-x86.c, arrays.cs: fixed register allocation bug.
24665
24666 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24667
24668         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24669
24670         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24671
24672 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24673
24674         * mini.c:
24675         (print_method_from_ip): also print source location information if
24676         available.
24677
24678 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24679
24680         * mini.c (mono_find_block_region): bug fix in region code
24681         (mini_method_compile): enable removing unreachable code again, but
24682         only in methods without exception clauses.
24683
24684 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24685
24686         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24687         Implemented arglist opcode and handling of TypedReference type.
24688         Fixed x86 call convention when a structure is returned.
24689         Minimal support for calling static vararg methods.
24690
24691 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24692
24693         * mini.c (mini_method_compile):  always remove unreachable code,
24694         because the code in them may be inconsistent  (access to dead
24695         variables for example).
24696
24697 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24698
24699         * driver.c, debug-mini.c: warning fixes.
24700
24701 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24702
24703         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24704
24705 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24706
24707         * mini.c: thread-static fields are registered in mono_class_vtable(),
24708         so ensure the function is called before checking for them.
24709
24710 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24711
24712         * mini.c (optimize_branches): fix for bug 43586
24713
24714         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24715         overflow (fixes Bug #43639)
24716
24717 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24718
24719         * mini.c, objects.cs: allow the use of stobj for primitive types.
24720
24721 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24722
24723         * mini.c: be less strict about argument checking until we support
24724         running the verifier.
24725
24726 2003-05-27  Nick Drochak <ndrochak@gol.com>
24727
24728         * basic-long.cs: tests for (ulong)int * (ulong)int also
24729         * mini.c: use the same trick for (ulong)int * (ulong)int
24730
24731 2003-05-27  Nick Drochak <ndrochak@gol.com>
24732
24733         * basic-long.cs: add regression test for (long)int * (long)int
24734         * cpu-pentium.md: add op_bigmul specification
24735         * inssel-long32.brg: add OP_BIGMUL rule
24736         * mini-ops.h: add OP_BIGMUL
24737         * mini-x86.c: register allocator: handle case where src1 needs to be
24738         in EAX.
24739         * mini.c: substitute special BIGMUL opcode in the tree for 
24740         (long)int * (long)int
24741
24742 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24743
24744         * jit-icalls.c: call the type ctor on field access if needed.
24745
24746 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24747
24748         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24749         to a method (including results of ldelema, bug#43207).
24750
24751 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24752
24753         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24754         colors to show exception handler blocks.
24755
24756         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24757         (fix for pinvoke7.cs).
24758
24759 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24760
24761         * mini.h, mini.c: ensure correct initialization order for types that
24762         require it. Prepare for lazy compilation of jit icall wrappers.
24763         Provide a name for opcode emulation to reduce unneeded mallocing.
24764
24765 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24766
24767         * mini-x86.c: better register restoring code and profiling
24768         support for tail calls.
24769
24770 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24771
24772         * mini.h, driver.c: prepare for leaf methods optimization.
24773
24774 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24775
24776         * mini.c: get targets of branches before converting a method.
24777
24778 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24779
24780         * mini.c (optimize_branches): added some experimental code (disbaled) 
24781
24782 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24783
24784         * mini.c (optimize_branches): fix branch to branch optimization 
24785
24786         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24787
24788         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24789
24790         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24791
24792         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24793         if needed.
24794
24795 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24796
24797         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24798         enable use of interface variables again.
24799
24800         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24801         I1 to registers because there is no simply way to sign extend 8bit
24802         quantities in caller saved registers on x86.
24803
24804         * inssel-float.brg: set costs of some rules to 2 so
24805         that monobure always select the arch. specific ones if supplied,
24806         regardless of the order we pass the files to monoburg.
24807
24808 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24809
24810         * mini.c, mini-x86.c: since the magic trampoline for jumps
24811         can't patch the code directly, we do it as soon as the
24812         method gets compiled.
24813
24814 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24815
24816         * mini-x86.c, mini.h: introduce a new patching method
24817         to support CEE_JMP and tail calls.
24818         * mini.c: obey tail.call. Don't precompile methods target
24819         of CEE_JMP.
24820         * tramp-x86.c: new trampoline code to handle methods
24821         reached through a jump.
24822
24823 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24824
24825         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24826         bit values to registers
24827
24828 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24829
24830         * mini.c (mono_compile_get_interface_var): share interface
24831         variables if possible.
24832
24833 2003-05-16  Martin Baulig  <martin@ximian.com>
24834
24835         * debug-mini.c (mono_init_debugger): New function to initialize
24836         the debugger.  This is not in the debugger since it needs to
24837         access some of mini's internals.
24838
24839 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24840
24841         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24842
24843 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24844
24845         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24846         for value type handling.
24847
24848 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24849
24850         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24851         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24852
24853 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24854
24855         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24856           the constructor through a proxy.
24857
24858 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24859
24860         * jit-icalls.c, inssel.brg: fixes to array element address
24861         calculations.
24862
24863 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24864
24865         * mini-x86.c (is_regsize_var): allocate pointer to registers
24866
24867 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24868
24869         * driver.c: fixed typo, added intrins to the set of optimizations
24870         tested with regressions.
24871
24872 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24873
24874         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24875         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24876         test case.
24877
24878 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24879
24880         * inssel.brg: remove some common pop instructions without side effects
24881
24882 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24883
24884         * inssel-x86.brg: fixed thinko in int to double conversions.
24885
24886 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24887
24888         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24889
24890 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24891
24892         * inssel-long32.brg: two more missing instructions.
24893
24894 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24895
24896         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24897         if not already set.
24898
24899 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24900
24901         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24902         correctly.
24903
24904         * basic-float.cs: Added tests for negative zero.
24905
24906 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24909         a couple of missing operations for long casts, with test cases.
24910
24911 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24912
24913         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24914
24915 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24916
24917         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24918         code size estimation.
24919
24920 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24921
24922         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24923         abstract methods (fix bug 42542)
24924
24925         * aot.c: add ability to handle array types
24926         
24927 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24928
24929         * mini.c: Call the _specific versions of the object allocation
24930         functions if possible.
24931
24932 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24933
24934         * driver.c: call setlocale ().
24935
24936 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24937
24938         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24939         windows build.
24940
24941 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24942
24943         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24944
24945         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24946         wrappers (fix bug 42122)
24947
24948 2003-05-04  Martin Baulig  <martin@ximian.com>
24949
24950         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24951
24952         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24953         s/mini_set_defaults/mono_set_defaults/g.
24954
24955 2003-05-04  Martin Baulig  <martin@ximian.com>
24956
24957         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24958
24959 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24960
24961         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24962         (reported by Don Roberts).
24963
24964 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24965
24966         * mini.c: temporarily work around two bugs for this release.
24967
24968 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24969
24970         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24971         that contains -export-dynamic and it makes using the ld script
24972         useless.
24973         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24974
24975 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24976
24977         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24978         specific cpu.
24979
24980 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24981
24982         * mini.c: make sure leave calls all the needed finally blocks,
24983         even when the target jumps out of multiple exception clauses.
24984
24985 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24986
24987         * ldscript, Makefile.am: add linker script to reduce the number of
24988         exported symbols (should also fix the issues with libwine defining
24989         some of the same symbols in io-layer).
24990
24991 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24992
24993         * driver.c (mini_main): Avoid assertion when no file name is given on 
24994         the command line.
24995
24996 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24997
24998         * driver.c: added --version/-V command line option.
24999         Added the inline optimization in the regression tests.
25000
25001 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25002
25003         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25004         to the type in the method signature (fixes bug#42134).
25005
25006 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25007
25008         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25009
25010 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25011
25012         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25013
25014 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25015
25016         * driver.c: fixed bug #42100.
25017
25018 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25019
25020         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25021
25022 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25023
25024         * mini.c: moved most of the code required to do inlining to its own
25025         function so it can be reused. Inline also ctors if appropriate.
25026
25027 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25030         the runtime can call mono API functions.
25031
25032 2003-04-27  Martin Baulig  <martin@ximian.com>
25033
25034         * debug-mini.c (mono_debug_init_method): Added
25035         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25036         send a notification to the debugger.
25037
25038         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25039         running in the Mono Debugger, just pass the breakpoint number to
25040         mono_debug_init_method().
25041
25042         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25043
25044 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25045
25046         * mini.c: allow some more unsafe compares.
25047
25048 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25049
25050         * mini-x86.c, Makefile.am: make distcheck works (partially from
25051         a patch by Richard Lee <r.h.lee@attbi.com>).
25052         * regset.c, regset.h: removed, they are unused.
25053
25054 2003-04-25  Dick Porter  <dick@ximian.com>
25055
25056         * driver.c: Usage reports the name as 'mono' not 'mini'
25057         * exceptions-x86.c: Build and run on freebsd
25058
25059 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25060
25061         * Makefile.am: install the program with the 'mono' name and
25062         the library as libmono instead of mini and libmini.
25063
25064 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25065
25066         * driver.c: provide the APIs for the embedding interface of the old jit.
25067
25068 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25069
25070         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25071
25072 2003-04-23  Martin Baulig  <martin@ximian.com>
25073
25074         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25075
25076         * driver.c: Added `--debug' command line argument to enable
25077         debugging support.
25078
25079 2003-04-23  Martin Baulig  <martin@ximian.com>
25080
25081         * debug.[ch]: Removed.  The code is now in
25082         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25083
25084         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25085         last six months.
25086
25087 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25088
25089         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25090
25091 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25092
25093         * mini.c:
25094         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25095         mono_domain_finalize.
25096         (mini_method_compile): use mono_method_profile* if the the option is
25097         enabled.
25098
25099 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25100
25101         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25102         methods with their wrapper.
25103
25104         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25105         methods with their wrapper.
25106
25107         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25108         their wrapper.
25109
25110         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25111         wrapper.
25112
25113         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25114         methods.
25115
25116 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25117
25118         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25119
25120 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25121
25122         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25123         of the mempool. This is slightly faster and uses less memory
25124
25125 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25126
25127         * mini.c: avoid O(n) allocation for variables.
25128
25129 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25130
25131         * mini.c: handle items on the stack after inlining methods.
25132
25133 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25134
25135         * mini.c: make the method->opcode optimization dependent
25136         on MONO_OPT_INSTRINS and do it lazily.
25137
25138 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25139
25140         * driver.c: print overall results at the end of regression run.
25141
25142 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25143
25144         * inssel.brg: don't overwrite symbolic registers.
25145
25146 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25147
25148         * inssel-x86.brg: fix conversion from long to float.
25149
25150 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25151
25152         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25153
25154 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25155
25156         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25157
25158         * driver.c: Added --print-vtable option as in the old JIT.
25159
25160 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25161
25162         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25163
25164 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25165
25166         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25167
25168 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25169
25170         * mini.c regalloc.c regalloc.h: Fix memory leak.
25171
25172 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25173
25174         * aot.c (mono_aot_get_method): register all used strings
25175
25176 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25177
25178         * mini.c: always intern strings references with ldstr at compile time.
25179
25180 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25181
25182         * Makefile.am: add BUILT_SOURCES.
25183
25184 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25185
25186         * driver.c: give a better error message when the assembly to execute
25187         doesn't have an entry point.
25188
25189 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25190
25191         * Makefile.am: added hack for automake
25192
25193         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25194         correct sematics.
25195
25196         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25197
25198 22003-04-07  Martin Baulig  <martin@ximian.com>
25199
25200         * Makefile.am: Added Makefile.am.
25201
25202         * debugger-main.c: Removed, this is now in the debugger where it
25203         belongs.
25204
25205         * mini.pc.in: Call this package `mini' for the moment.
25206
25207
25208
25209
25210
25211
25212
25213
25214
25215
25216
25217
25218
25219
25220