0b7515402ae35caa153cad77333d2634b6712bfa
[mono.git] / mono / mini / ChangeLog
1 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
4         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
5         (mono_arch_cpu_enumerate_simd_versions): Ditto.
6
7 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
8
9         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
10         apple assembler.
11
12 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
13
14         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
15
16 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
17
18         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
19
20 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
21
22         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
23
24 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
25
26         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
27         line number support works with eglib.
28
29 2010-04-27  Miguel de Icaza  <miguel@novell.com>
30
31         * driver.c, mini.c: Since linking with LLVM makes the default Mono
32         dirty an extra 70kb pages on startup we are now going to choose a
33         different strategy: ship mono and mono-llvm binaries, with the
34         second being the one that links with LLVM and defaults to LLVM
35         being enabled.
36
37 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
38
39         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
40         Implement full-aot support on x86.
41
42         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
43         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
44         the first register returned by get_global_int_regs ().
45
46         * cpu-x86.md: Fix the length of insertx_u1_slow.
47
48         * iltests.il.in: Disable tail call tests when running with full-aot.
49
50 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
51
52         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
53
54 2010-04-24  Mark Probst  <mark.probst@gmail.com>
55
56         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
57         in the initializer, because it's non-constant.
58
59 2010-04-23  Miguel de Icaza  <miguel@novell.com>
60
61         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
62         of LLVM on by default.   Used for buildbots and other setups.
63
64 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
65
66         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
67
68 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
69
70         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
71         initonly static fields when using moving GC.
72
73         Contributed under MIT/X11 license.
74
75 2010-04-23  Geoff Norton  <gnorton@novell.com>
76
77         * mini-amd64.h: Darwin x86_64 support.
78
79 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
80
81         * exceptions-arm.c: Remove platform checks in favor of configure checks.
82
83 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
84
85         * exceptions-arm.c: Add Android support for sigcontext structure.
86
87 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
88
89         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
90         wrappers correctly now that their wrapper info is NULL.
91
92 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
93
94         * mini.c (mono_jit_compile_method_inner): Avoid calling
95         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
96
97 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
98
99         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
100         so the latter can be #ifndef DISABLE_JIT-ed.
101
102         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
103
104 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
105
106         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
107
108 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
109
110         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
111         stack.
112
113 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
114
115         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
116         calling mono_class_num_methods (). Fixes #592244.
117
118 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
119
120         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
121
122         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
123
124 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
125
126         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
127         version.
128         * (handle_alloc): Ditto.
129         (mono_method_to_ir): Remove the constrained call restriction added by a previous
130         change, its not needed anymore.
131
132 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * mini-posix.c (sigusr1_signal_handler): Fix build on
135         non x86/amd64 systems.
136
137 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
138
139         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
140         calls where the constrained class needs a context. Fixes #595863.
141
142         * iltests.il.in: Add a test.
143
144 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
145
146         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
147         2.6/SVN seems to have broken support for them.
148
149 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
150
151         * mini-llvm.c: Fix support for LLVM 2.6.
152
153 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
154
155         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
156         MonoInternalThread belonging to the thread.
157
158 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
159
160         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
161         unsafe optimization that will remove bound checks.
162
163 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
164
165         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
166         CompareExchange not to be inlined for I8.
167
168         Contributed under MIT/X11 license.
169
170 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
171
172         * array.cs: Add tests for cast between primitive array types.
173
174 2010-04-07 Andreia Gaita  <avidigal@novell.com>
175
176         * Makefile.am: create a convenience library for moon to link with
177
178 2010-04-07 Paolo Molaro <lupus@ximian.com>
179
180         * method-to-ir.c: optimize array accesses from generic interfaces.
181
182 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
183
184         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
185
186 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
187
188         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
189         of marshalbyref classes.
190
191         Fixes #515884.
192
193 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         * aot-compiler.c (emit_exception_debug_info): Encode try holes
196         information.
197
198         * aot-runtime.c (decode_exception_debug_info): Decode try holes
199         information.
200
201         * mini.h: Increase AOT version.
202
203 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
204
205         * mini-x86.h: Only enable soft debugger when using sigaction or on
206         Windows. Fixes build on Haiku (lacks siginfo_t).
207
208         Code is contributed under MIT/X11 license.
209
210 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
211
212         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
213         BeOS-style signal handlers.
214
215         Code is contributed under MIT/X11 license.
216         
217 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
218
219         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
220
221 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
222
223         * mini-exceptions.c: Fix win32 build.
224
225 2010-04-01  Mark Probst  <mark.probst@gmail.com>
226
227         * mini.c, driver.c: Call mono_gc_base_init() before
228         mono_debug_init().
229
230 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
231
232         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
233         call_method]): Delegate the actual work in security-core-clr.c
234         to ease code sharing.
235
236 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
237
238         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
239         float conv.ovf.un opcodes are encountered, instead of asserting later.
240         Fixes #566296.
241
242 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
243
244         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
245
246         * iltests.il.in: Add a test.
247
248 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
249
250         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
251         large. Fixes #567040.
252
253         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
254
255 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
256
257         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
258         #592711.
259
260 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
261
262         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
263         mono_create_handler_block_trampoline with the proper #ifdef so that it
264         compiles on amd64.
265
266 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
267
268         * mini-exceptions.c: Introduce mono_walk_stack_full, which
269         allows to select if it's new or old context that is passed to 
270         the callback.
271
272         * mini-exceptions.c (mono_handle_exception_internal): Handle the
273         case when executing a guarded handler from the EH machinery.
274
275         * mini-exceptions.c (mono_install_handler_block_guard): New function
276         responsible for checking for handler blocks, installing the guard and
277         clearing abort state.
278
279         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
280         to check for handler blocks and skip interruption logic if one was found.
281
282         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
283         by the handler block guard trampoline. Resumes interruption by raising the
284         pending ThreadAbortException.
285
286         * mini.c (create_jit_info): Calculate the end address of a finally block.
287
288         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
289         of a finally block to a specified address and return the old one.
290
291         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
292         trampoline patches the original return address and calls the trampoline function.
293
294 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
295
296         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
297
298         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
299         does the patching if the callee is in the same domain.
300
301         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
302         of mono_arch_patch_plt_entry ().
303
304 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
305
306         * mini.c (create_jit_info): Fix try block hole length encoding.
307
308 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
309
310         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
311         duplicate information and print offsets instead of absolute addresses.
312
313 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
314
315         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
316         event is sent. Fixes #591733.
317
318 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
319
320         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
321         OpenBSD.
322
323 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
324
325         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
326         thread_to_tls hash table.
327
328         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
329         section. Fixes #591000.
330
331 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
332
333         * Makefile.am (version.h): Check for pure .git directory only,
334         fixes SVN revision when using git without git-svn.
335
336         Contributed under MIT/X11 license.
337
338 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
339
340         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
341
342 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
343
344         * basic-simd.cs: Test for vector x scalar binary operators.
345
346 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
347
348         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
349         intrinsics with expanded scalar arguments.
350
351 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
354         don't have an exception class, so don't decode it. This would crash
355         with filter clauses.
356
357 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
358
359         Make sure that trunk builds with DISABLE_JIT, an update to the
360         PlayStation 3 port.
361         
362         * mini.c (mini_get_shared_method): this code seems to be necessary
363         regardless of whether DISABLE_JIT has been defined.
364
365         (mono_jit_compile_method_inner): it seems that this method is
366         required even in full AOT mode, so ifdef out only the pieces that
367         try to genrate code (the body of code that applies patches to the
368         code).  
369
370         (mini_method_compile): do not compile when using DISABLE_JIT.
371
372         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
373         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
374         compile when DISABLE_JIT is set.
375
376 2010-03-24  Mark Probst  <mark.probst@gmail.com>
377
378         * mini.c (mono_create_tls_get): Only create a TLS operation if the
379         arch really supports it.
380
381 2010-03-24  Mark Probst  <mark.probst@gmail.com>
382
383         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
384
385 2010-03-23  Neale Ferguson <neale@sinenomine.net>
386
387         * exceptions-s390x.c: Add support for
388         mono_arch_get_throw_corlib_exception and fix throw by name.
389
390         * mini-s390x.c: Add IMT support; Fix stack parameter passing
391         logic (especially for varargs); Correct localloc sizing; Add
392         mono_arch_get_this_arg_from_call and
393         mono_arch_get_this_arg_from_call.
394
395         * mini-s390x.h: Add support for facility list extraction;
396         Correct/update MONO_ARCH_xxx settings.
397
398         * mini-s390.c: Minor corrections to instruction output for
399         varargs. No IMT implementation - I think it's time to deprecate
400         s390 and just leave s390x.
401
402         * tramp-s390x.c: Correct creation of trampoline instruction
403
404
405         * cpu-s390x.md: Update some instruction lengths
406
407 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
408
409         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
410         can be hit with partial sharing.
411
412         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
413         in non-shared classes correctly.
414         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
415         Turn on partial sharing.
416
417 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
418
419         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
420         by mistake.
421
422 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
423
424         * method-to-ir.c (mono_method_to_ir): Handle the failure of
425         mono_method_signature ().
426
427         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
428
429         * mini.c (mini_method_compile): Get the signature of cfg->method early with
430         error checking, so later calls do not need error checking.
431
432 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
433
434         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
435
436         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
437
438 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
439
440         * mini-exceptions.c (mono_handle_exception_internal): Don't
441         check try_end for archs different than s390. 
442
443         * mini.c (create_jit_info): Don't crash if the finallt block is the
444         last one.
445
446 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
447
448         * driver.c (mono_main): Don't free global codeman under linux since
449         glic now peeks at code on stack for more archs than just amd64.
450
451 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
452
453         * mini.c, method-to-ir.c: changes to support compressed interface
454         bitmaps.
455
456 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
457
458         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
459         Use sigaction on OpenBSD too.
460
461 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
462
463         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
464
465 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
466
467         * debugger-agent.c: #include sys/select.h for fd_set.
468
469         Code is contributed under MIT/X11 license.
470
471 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
474         (openbsd+amd64 ?).
475
476 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
477
478         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
479         some large methods with lots of exception handlers. Fixes #440924.
480
481 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
482
483         * method-to-ir.c: remove code duplication for interface checks.
484
485 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
486
487         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
488         (assembly_unload): Clear all event requests referencing the to-be unloaded
489         assembly.
490
491
492 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
493
494         * mini.h, mini-exceptions.c: restore the state of the stack
495         guard page permissions.
496
497 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
498
499         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
500         call site patching code, it doesn't appear to be needed.
501
502 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
503
504         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
505         sharing generic methods whose type arguments are a mix of reference and
506         non-reference types. Not yet turned on.
507
508         * mini.c (mini_get_shared_method): New helper function to return
509         the method which will be compiled/registered in the JIT tables when doing
510         generic sharing.
511         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
512         use mini_get_shared_method ().
513
514         * mini.c (mini_method_compile): Register the same method which is compiled when
515         doing generic sharing.
516
517         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
518
519         * generics.cs: Add partial sharing tests.
520
521 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
522
523         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
524                    Add an enum value that or's all possable values together. Add an enum value
525                    that marks the end of the used bit indexes.
526
527         * mini-amd64.c : Make changes to match the changes in mini.h 
528
529         * mini-x86.c : Make changes to match the changes in mini.h
530
531         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
532                    simd_version to support more simd versions. Changed the name of
533                    simd_version to simd_version_flags to make it more intuitive that
534                    it now contains bit flags. Reordered the *_intrinsics arrays to
535                    match the changes above. Changed emit_intrinsics() to use the new
536                    setup mentioned above.
537
538         Code is contributed under MIT/X11 license.
539
540 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
543         remaining archs. Alpha and hppa maintainers, please stand up.
544
545 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
546
547         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
548         is needed even when fail_tramp!=NULL.
549
550 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
551
552         * debugger-agent.c (insert_breakpoint): Write a log message.
553
554 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
555
556         * iltests.il.in: Add a few tests for LEAVE going over multiple
557         finally clauses.
558
559 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
560
561          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
562
563 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
564
565         * mini.h (MonoBasicBlock): Add native_length field.
566         * mini.h (MonoCompile): Add try_block_holes field.
567         * mini.h (MonoInst): Add exception_clause pointer to
568         the data union.
569
570         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
571         * mini.c (mono_cfg_add_try_hole): New function to register possible
572         holes in try blocks.
573         * mini.c (create_jit_info): Fill in the holes information.
574
575         * mini-exceptions.c: Verify for holes when checking if an IP is covered
576         by a try block.
577
578         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
579
580 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
581
582         * jit-icalls.c: adjusted for the array API changes.
583
584 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
585
586         * iltests.il.in: Disable the fconv_to_i test on sparc too.
587
588 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
589
590         * debugger-agent.c: Simplify the way breakpoints are processed by removing
591         the 'pending' flag. This fixes support for appdomains too.
592
593
594 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
595
596         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
597
598 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
599
600         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
601         when using LLVM, LLVM generates it itself when needed.
602
603         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
604
605         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
606         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
607         OP_ANDNPS/OP_ANDNPD.
608
609 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
610
611         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
612         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
613         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
614
615 2010-03-11  Martin Baulig  <martin@ximian.com>
616
617         * debugger-agent.c (type_commands): Add NULL check to
618         `CMD_TYPE_GET_SOURCE_FILES'.
619
620 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
621
622         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
623
624 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
625
626         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
627         #586664.
628
629         * iltests.il.in: Add a test.
630
631 2010-03-05  Martin Baulig  <martin@ximian.com>
632
633         Add support for aborting invocations.
634
635         * debugger-agent.c
636         (InvokeData): Added `InvokeData *last_invoke'.
637         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
638         added a new `invoke' field to keep the `InvokeData *' throughout
639         the invocation.
640         (ErrorCode): Added `ERR_NO_INVOCATION'.
641         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
642         (mono_debugger_agent_handle_exception): Don't report any exception
643         if an abort was requested.
644         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
645         a thread abort if necessary.
646         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
647
648 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
649
650         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
651         so we can release the whole list and not just the first one. Free
652         it in more places as well.
653
654 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
655
656         * method-to-ir.c: Revert r153222 as it doesn't belong here.
657
658 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
659
660         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
661
662 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
663
664         * driver.c: report also other misc build options.
665
666 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
667
668         * method-to-ir.c: Generate better code for the NewObject
669         intrinsic.
670         
671 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
672
673         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
674         is disabled. Fixes #582322.
675
676         * iltests.il.in: Add a test.
677
678 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
679
680         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
681         the handling of obj->synchronization == null and owner != current thread to
682         mono_monitor_exit ().
683
684         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
685
686
687 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
688
689         * mini.c: change the way emulated opcode info is stored and save about
690         4 KB of runtime memory.
691
692 2010-03-04  David S. Miller  <davem@davemloft.net>
693
694        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
695        that don't provide the siginfo in the second signal handler argument
696        are buggy, and this has been fixed for years.
697        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
698        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
699
700 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
701
702         * aot-runtime.c (find_symbol): Fix a leak.
703         (decode_patch): Ditto.
704
705 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
706
707         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
708
709 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
710
711         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
712
713 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
714
715         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
716
717 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
718
719         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
720         to check for errors, it's enough to create the metadata open.
721
722         Fixes #562150
723
724 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
725
726         * trace.c|h:
727         * mini-exceptions.c: Add support for printing stack traces when handling
728         exceptions, and when printing exceptions thrown while tracing also print
729         the exception message.
730
731 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
732
733         * trace.c: We need to parse exclude tokens ('-') before string tokens,
734         since the exclude token is a valid string character.
735
736 2010-03-02  Levi Bard  <levi@unity3d.com>
737
738         * debugger-agent.c: Invalidate thread stacks on domain unload.
739
740 2010-03-02  Mark Probst  <mark.probst@gmail.com>
741
742         * method-to-ir.c: Emit dummy_use for stored reference after write
743         barriers to make sure the object is pinned if the GC interrupts
744         before the write barrier is done.
745
746 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
747
748         * cpu-<ARCH>.md: dummy_use was missing src1:i.
749
750 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
751
752         * debugger-agent.c: Add a log message printing the protocol version.
753
754 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
755
756         * debugger-agent.c: Add a new command to communicate the protocol version used
757         by the client. This could be used to allow newer runtimes to communicate with
758         older clients.
759
760 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
761
762         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
763
764 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
765
766         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
767         type.
768
769 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
770
771         * mini-arm.c: make the arm cpu arch configurable with the
772         MONO_CPU_ARCH env var (for example: "armv4 thumb").
773         Bug #584198.
774
775 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
776
777         * mini.c, mini.h, driver.c: added the --jitmap option to enable
778         support for the perf tool on Linux.
779
780 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
781
782         * method-to-ir.c: make string.InsertenalSetChar() specialization
783         effective.
784
785 2010-03-01  Robert Jordan  <robertj@gmx.net>
786
787         * Makefile.am: fix the non-static build.
788
789 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
792         here.
793
794 2010-02-26  Robert Jordan  <robertj@gmx.net>
795
796         * tasklets.c (continuation_store): Return from an error condition
797         immediately.
798
799 2010-02-26  Martin Baulig  <martin@ximian.com>
800
801         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
802
803         * debug-mini.c
804         (MonoDebuggerThreadInfo): Added `internal_flags'.
805         (MonoDebuggerInternalThreadFlags): New enum.
806         (_mono_debugger_throw_exception): Don't signal the debugger if a
807         type abort was requested.
808         (_mono_debugger_unhandled_exception): Likewise.
809         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
810         (mono_debugger_runtime_invoke): If the debugger requested a thread
811         abort during the invocation, reset it here.
812
813 2010-02-26  Martin Baulig  <martin@ximian.com>
814
815         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
816         instead of `MonoThread *'.
817
818 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
819
820         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
821         code offsets table, as it is mostly sorted.
822
823 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
824
825         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
826         Fixes #582991.
827
828 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
829
830         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
831
832 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
833
834         * Makefile.am: build the new ABI version of the libmono library.
835         * debugger-agent.c, mini.c: fix warnings with the new API.
836         * jit.h: don't depend on glib.h being included.
837
838 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
839
840         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
841
842 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
843
844         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
845         ThreadStatic variables.
846
847 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
848
849         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
850         data is not freed yet. Fixes #582460.
851
852 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
853
854         * debugger-agent.c: Add support for the caught/uncaught flags on exception
855         event requests. Bump protocol minor version.
856
857 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
858
859         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
860
861 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
862
863         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
864         #581950.
865
866         * iltests.il.in: Add a test.
867
868 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
869
870         * mini.c (inline_method): Check for loader errors.
871
872 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
873
874         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
875         instead of mono_method_get_header as it doesn't decode locals
876         so the called method can have unresolved dependencies that will only
877         be satisfied after the current method is JIT'd.
878
879         Fixes #550968.
880
881 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
882
883         * basic.cs (test_0_div_opt): Speed this up a bit.
884
885 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
886
887         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
888
889         * mini.c (mono_jit_create_remoting_trampoline): Call
890         mono_create_specific_trampoline () instead of
891         mono_arch_create_specific_trampoline ().
892
893         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
894
895 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
896
897         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
898         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
899
900         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
901
902         * mini-amd64.c: Fix DISABLE_JIT support.
903
904 2010-02-20  Geoff Norton  <gnorton@novell.com>
905
906         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
907
908 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
909
910         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
911         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
912         CATCH_TXT. Send normal exception events for unhandled exceptions too.
913         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
914         handle_exception.
915
916 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
917
918         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
919         edx/ecx too. This is needed to support OP_SEQ_POINT.
920
921 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
922
923         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
924
925         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
926
927 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
928
929         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
930         LLVM+AOT+exceptions, not enabled yet.
931
932 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
935
936 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
937
938         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
939         xdebug info for these.
940
941         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
942         in a few places.
943
944         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
945         not used yet.
946
947 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
948
949         * aot-compiler.c (load_profile_files): Update after the profiler changes.
950
951 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
952
953         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
954         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
955
956         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
957         for mtouch.
958
959 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
960
961         * debugger-agent.c: handle incomplete reads and EINTR in
962         recv()/send(). This could have been causing random
963         disconnections.
964
965 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
966
967         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
968         points.
969
970         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
971         so they have small offsets. Fixes #566311.
972
973 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
974
975         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
976
977 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
978
979         * mini-amd64.c: Remove the special casing of byref in a few places now that
980         mini_type_get_underlying_type () handles it.
981
982         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
983         by returning native int. Fixes #577984.
984
985 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
986
987         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
988         a macro.
989
990         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
991         of putting the clause itself.
992
993         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
994
995 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
996
997         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
998         might be unaligned.
999
1000 2010-02-10  Geoff Norton  <gnorton@novell.com>
1001
1002         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1003
1004 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1007         llvm methods too.
1008
1009         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1010         it is not an LLVM generated symbol.
1011
1012         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1013
1014         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1015         implementation in gshared mode because it causes regressions.
1016
1017         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1018
1019         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1020         should be done by the caller.
1021
1022         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1023
1024         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1025
1026         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1027         since mono_jit_info_table_find () doesn't do it anymore.
1028
1029         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1030         instead of mono_jit_info_table_find ().
1031
1032 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1035
1036         * aot-compiler.c (encode_method_ref): Update after the removal of
1037         mono_gc_get_managed_allocator_type ().
1038
1039         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1040         Fixes #564538.
1041
1042 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1043
1044         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1045         generic params as well.
1046         (handle_isinst): Ditto.
1047
1048         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1049         instead of always calling an icall.
1050
1051         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1052         computing the size of the got.
1053
1054         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1055         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1056         the assembly directive '.set' so it points to the first LLVM emitted method.
1057
1058 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1059
1060         * mini.c (mini_method_verify): Report the method which failed to verify.
1061
1062 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1063
1064         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1065         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1066         runtime MS verifier.
1067
1068 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1071         #561962.
1072
1073 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * mini-llvm.c: Init the jit module only when first JITting.
1076
1077         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1078
1079         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1080
1081         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1082         replaced with the real got.
1083
1084         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1085
1086         * image-writer.c: Reduce the amount of #ifdefs a bit.
1087
1088         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1089         llvm on darwin/arm.
1090
1091         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1092
1093         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1094         global.
1095
1096 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1099         (mono_llvm_emit_method): Fix unaligned stores too.
1100
1101         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1102         so async stack walks don't crash.
1103
1104 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1107         was not patched if the callee needed an rgctx trampoline.
1108
1109 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1112         vtable address in AOT code.
1113
1114 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1117         MonoInst's.
1118
1119 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1120
1121         * genmdesc.pl: remove dependency on external cpp.
1122
1123 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1126         using LLVM, its not needed, and abcrem can't handle it.
1127
1128 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1129
1130         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1131         it easier to group instructions and reduce duplication.
1132
1133 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * decompose.c: Move the array/soft float decompose routines here from
1136         method-to-ir.c.
1137
1138         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1139
1140 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1143         to tell LLVM that the got is constant, not used yet.
1144
1145         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1146
1147 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1150         managed wrappers.
1151
1152 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * aot-compiler.c (add_wrappers): Commit the hack which generates
1155         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1156         custom attribute.
1157
1158 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1161         a fault, only used by the LLVM backend.
1162
1163         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1164         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1165
1166         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1167         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1168
1169         * mini-llvm.c: Only generate volatile loads from load instructions which have
1170         the MONO_INST_FAULT flag set.
1171
1172 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1175         64 bit platforms.
1176
1177 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1180         sequence points. Fixes #571236.
1181
1182 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1185         end of the appdomain unload process, after assemblies have been unloaded.
1186         Fixes #574842.
1187
1188 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1191         works.
1192
1193         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1194         Fixes #573988.
1195
1196 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1199
1200 2010-01-26  Geoff Norton  <gnorton@novell.com>
1201
1202         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1203         with struct marshalability.
1204
1205 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1208         it supports class names as well.
1209
1210         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1211         needed by the GC map code.
1212
1213         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1214         flags if needed.
1215
1216         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1217         if cfg->init_ref_vars is set.
1218
1219         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1220         cfg->disable_initlocals_op_refs is set.
1221
1222         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1223         using liveness info if cfg->compute_precise_live_ranges is set.
1224
1225         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1226         volatile variables correctly. Add comments about the live ranges. Not enabled
1227         yet.
1228
1229 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1232         0x2a into them in method prologs.
1233
1234         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1235
1236 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1239         classes, since llvm is compiled with -fno-rtti.
1240
1241         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1242
1243         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1244         llvm does not require it.
1245
1246         * aot-runtime.c (load_method): Print the full name of the last aot method.
1247
1248 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1251         thread has not fully started yet.
1252
1253 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1254
1255         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1256
1257 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1258
1259         * driver.c: Do not abort if LLVM is not supported, print a
1260         warning and add the information to the Mono JIT information.
1261
1262 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1263
1264         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1265         using explicit null checks.
1266
1267 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1270         related code.
1271
1272         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1273         () in one place.
1274         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1275         its no longer needed.
1276
1277         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1278
1279         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1280         define for platforms still using it (s390). Get rid of the
1281         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1282
1283         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1284         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1285
1286         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1287         the caller pushed the arguments.
1288
1289         * mini-llvm.c: Enable throwing exceptions on x86.
1290
1291         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1292         "Thread (nil) may have been prematurely finalized" messages if this is called
1293         on a thread not registered with the runtime.
1294
1295         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1296
1297 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1298
1299         * jit-icalls.c (mono_array_new_3): New jit icall.
1300
1301         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1302
1303         * arrays.cs: Add a test for 3 dimensional arrays.
1304
1305 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1306
1307         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1308         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1309         used.
1310
1311         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1312         thrown on x86.
1313
1314         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1315
1316         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1317
1318         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1319
1320 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1321
1322         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1323           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1324
1325         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1326
1327         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1328
1329         Code is contributed under MIT/X11 license.
1330
1331 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1332
1333         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1334
1335         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1336
1337         * mini.c (mini_method_compile): Set the new flag when running under the
1338         debugger.
1339
1340 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1341
1342         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1343         a ref/noref value + a global pin flag, so parts of stack frames can still be
1344         precisely marked even if they include stuff which needs pinning. Improve logging.
1345         Fix many bugs. Not enabled yet.
1346
1347         * gc-test.cs: Add a few tests.
1348
1349         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1350         the normal -v options. Avoid propagating liveness information through bblocks
1351         which end with a NOT_REACHED opcode.
1352
1353         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1354         after cfg has been freed.
1355
1356 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1357
1358         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1359         if a clause is skipped because it uses the exception object, since it could
1360         have caught the exception.
1361
1362         * exceptions.cs: Add a test.
1363
1364 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1365
1366        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1367
1368         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1369         ICollection<T> wrappers.
1370
1371 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1374
1375 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1376
1377         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1378         NOMAP32BIT or optimize_for_xen is set.
1379
1380 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1383         mono_metadata_str_hash () instead.
1384
1385 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1388         sizeof (void*).
1389
1390         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1391
1392 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1395         flag is set.
1396
1397         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1398         throwing code correctly.
1399
1400         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1401
1402 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1405         ftnptrs created by us, handle RGCTX_FETCH correctly.
1406         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1407
1408         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1409         ftnptr added by mono_aot_get_named_code ().
1410
1411 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * mini-arm.c: Fix a few LLVM problems.
1414
1415         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1416
1417 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1418
1419         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1420         AOT compiling.
1421
1422 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1423
1424         * jit.h, method-to-ir.c: added ability to set the policy for
1425         inserting breakpoints from the break IL instruction or the
1426         Debugger.Break () API call.
1427
1428 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1431         assemblies need to be eagerly loaded.
1432
1433 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1436
1437 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1440         an argument which matches any exception.
1441
1442 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1445         optimization if the called method is gshared and marshalbyref, since gshared
1446         methods can' have wrappers. Fixes #569390.
1447
1448         * generics.cs: Add a test.
1449
1450 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1453         callable from gdb.
1454
1455 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1458
1459 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1462         since it is not supported in win2000.
1463
1464 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1467         error if loading an assembly fails.
1468         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1469
1470         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1471         if exists.
1472
1473         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1474         compiled methods.
1475
1476         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1477
1478         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1479         is not supported yet.
1480
1481         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1482
1483 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * method-to-ir.c: All types with variant arguments must fallback to the
1486         slow path. This makes cast of variant delegates work.
1487
1488         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1489         argument that is set to TRUE is the returned vtable slot is for a variant
1490         interface. Changed a g_print + g_assert_not_reached to a g_error.
1491
1492         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1493         a similar fashion of generic virtual methods.
1494
1495 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1496
1497         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1498         when cfg is null.
1499
1500         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1501         method using a variance aware function.
1502
1503         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1504
1505 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1508         do an icall for now.
1509
1510 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1513         If LLVM decides to set the code model to Large, reset it to Default.
1514
1515 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1516
1517         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1518         stripped binaries as well.
1519
1520 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1523         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1524
1525         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1526         reg.
1527
1528 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1531         separate function.
1532
1533         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1534         as the type info to llvm.eh.selector.
1535         (exception_cb): Use the type info for filling out some fields of
1536         MonoJitExceptionInfo like the flags and the exception class. This is needed
1537         because the LLVM produced exception handling clauses might not match the original
1538         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1539
1540         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1541         separate function. Add an extra argument which returns the type infos
1542         corresponding to the exception clauses.
1543
1544         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1545         exception handling clauses.
1546
1547 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1550         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1551         to fix an AOT case.
1552
1553 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1554
1555         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1556         internal assembly.
1557
1558 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1561         llvm code.
1562
1563 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * mini.c (mini_method_compile): Verify the method before calling
1566         mono_compile_create_vars as this might crash since it uses method
1567         information.
1568
1569         Fixes #560196.
1570
1571 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1572
1573         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1574         one case if AOTing, since the class might not be a concrete class.
1575
1576 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1579         functions which are now defined in mempool-internals.h.
1580
1581         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1582
1583         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1584
1585 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1586
1587         * mini.c:
1588         * method-to.ir.c:
1589         * mini-*.c: Properly handle generic enums.
1590
1591         Fixes #566294
1592
1593 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1596         in a few more places.
1597
1598 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1601         nullable parameters. Fixes #567351.
1602
1603 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1606
1607 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1610         mono_get_generic_context_from_code () call.
1611
1612         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1613
1614 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1617         needed.
1618
1619 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1620
1621         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1622         mono_method_get_signature returns NULL. Fix #567084
1623
1624 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1627         instead of once for each module.
1628
1629 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * debugger-agent.c (ss_start): Implement step over for the last sequence
1632         point in methods.
1633
1634         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1635         have the STEP_LOC flag set.
1636
1637         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1638         fails. Fixes #566689.
1639
1640 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1641
1642         * mini.c (mono_add_seq_point): New helper function.
1643         (mono_save_seq_point_info): New function to save sequence point info, extracted
1644         from mini_method_compile ().
1645
1646         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1647
1648         * mini.h (MonoSeqPointInfo): New structure containing information about
1649         the sequence points of a JITted method.
1650         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1651         'bucket' field.
1652
1653         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1654         point information is stored, use a MonoSeqPointInfo structure instead of a
1655         GPtrArray. For each seq point, compute a list of successor seq points.
1656
1657         * debugger-agent.c: Use the successor list to implement step-over more
1658         efficiently: instead of single stepping until a different line/IL offset is
1659         reached, place breakpoints into all successor seq points.
1660
1661         * mini.h: Bump AOT file format version.
1662
1663 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1666
1667         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1668
1669 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1670
1671         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1672         build.
1673
1674 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1675
1676         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1677         alloca as g_malloc is not signal safe.
1678
1679 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1680
1681         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1682         VALGRIND_DISCARD_TRANSLATIONS.
1683
1684         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1685         checks, they are no longer needed.
1686
1687         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1688         a function into a sigctx which can handle function pointers.
1689
1690         * mini-ppc.c: Implement soft debugger support on ppc64.
1691
1692         * mini-ppc.c: Implement soft debugger support.
1693
1694 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1697
1698 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1699
1700         * mini.c (mono_get_runtime_build_info): include Mono version in
1701         the returned value.
1702
1703         * driver.c (mono_main): VERSION is now included in the string
1704         returned from mono_get_runtime_build_info()
1705
1706 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1709         signatures. Fixes #565143.
1710
1711         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1712
1713 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1714
1715         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1716
1717 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1718
1719         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1720         making max stack 10x smaller.
1721
1722 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1723
1724         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1725
1726 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1727
1728         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1729
1730 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1731
1732         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1733         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1734
1735         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1736
1737         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1738
1739         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1740
1741         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1742         the compilation.
1743
1744 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1745
1746         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1747         raise an invalid program exception.   
1748
1749         For other opcodes that we might not handle use a g_warning and
1750         raise the exception.   Beats termination.
1751
1752         Fixes #561724
1753
1754 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1755
1756         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1757
1758         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1759         by merging the LLVM and !MAP_32BIT cases.
1760
1761 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1762
1763         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1764         sigctx being passed in, as we have no CONTEXT available in the APC.
1765
1766         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1767         for now.
1768
1769         Code contributed under MIT/X11 license.
1770
1771 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1774         in the LLVM backend on AMD64.
1775
1776         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1777         FDE.
1778
1779         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1780
1781         * mini-llvm.c: Export mono_personality for AOT.
1782
1783         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1784
1785         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1786         implicit exception can occur.
1787
1788         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1789         OP_IMPLICIT_EXCEPTION instruction.
1790
1791         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1792
1793         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1794
1795         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1796         inside a protected block.
1797
1798         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1799         trampolines doesn't include the argument.
1800
1801         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1802         trampolines on amd64.
1803
1804         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1805         of RDI.
1806
1807         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1808         disabled for methods with clauses.
1809
1810         * mini-llvm.c: Enable support for catch clauses.
1811
1812         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1813         end of an LLVM compiled finally clause.
1814         (mono_handle_exception_internal): Save the exception handling state in TLS
1815         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1816         resume unwinding from that point.
1817
1818         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1819         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1820         to obtain the addresses of the exception handling regions.
1821
1822         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1823         finally clauses are supported.
1824
1825         * mini.c (mini_method_compile): Add support for LLVM code with exception
1826         handlers.
1827
1828 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1831         proper size.
1832
1833 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1836         as a primitive type.
1837
1838 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1839
1840         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1841         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1842         #564000.
1843
1844 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1845
1846         * method-to-ir.c (mini_redirect_call): do not redirect the
1847         InternalAllocateStr internal call if string profiling is enabled.
1848
1849 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1852         generic methods.
1853
1854         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1855         unwind.h header file.
1856
1857         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1858         newer valgrind versions seems to handle this fine.
1859
1860 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1863         on the debugger thread.
1864
1865 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1866
1867         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1868
1869         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1870
1871         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1872
1873         * cpu-<ARCH>.md: Make call_handler clob:c.
1874
1875         * mini.c: Reenable SSA for methods with clauses.
1876
1877         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1878         as it causes failures on x86.
1879
1880 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1881
1882         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1883         returns NULL (e.g. a bad assembly).
1884
1885 2009-12-08  Geoff Norton  <gnorton@novell.com>
1886
1887         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1888         stepping out into native code.  There were issues with nested invokes
1889         like .cctors.
1890
1891 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * mini.c (mini_method_compile): Do the disable_llvm checks early
1894         and avoid the LLVM compile pass if the checks fail.
1895
1896         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1897
1898         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1899         LLVM optimizations don't try to remove them.
1900
1901         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1902         different file so the original remains.
1903
1904 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1907
1908         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1909
1910         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1911         support for non-inline unwind descriptors.
1912
1913 2009-12-07  Geoff Norton  <gnorton@novell.com>
1914
1915         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1916         the interrupt_count slightly differently.  Native threads were never
1917         marked as resumed.
1918
1919 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1922         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1923         yet generate this info.
1924
1925         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1926
1927         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1928         client can distinguish between intptrs and longs.
1929
1930 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1933         blob.
1934
1935         * aot-runtime.c (load_function): Update after the change above.
1936
1937         * mini.h: Bump AOT file format version.
1938
1939         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1940         if the delegate class is dynamic.
1941
1942         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1943         in gshared code too using the new rgctx info type
1944         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1945
1946 2009-12-04  Geoff Norton  <gnorton@novell.com>
1947
1948         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1949         we need to track the original suspend count so the thread properly
1950         wakes up in resume_thread.
1951
1952 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1955         code.
1956
1957         * generics.cs: Add a test.
1958
1959         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1960         is 0. Simplify a lot of code using this.
1961
1962         * mini-trampolines.c (mono_delegate_trampoline): Call
1963         mono_create_static_rgctx_trampoline () before saving the final address in
1964         delegate->method_code, to avoid calling it each time a delegate is first called.
1965
1966         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1967         which need static rgctx trampolines.
1968
1969         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1970         keyed on the method+addr pair, since addr could be either the method addr or
1971         an unbox trampoline in the AOT case. Fixes #560246.
1972
1973 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1976         place it was called before too.
1977
1978 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1981         if no security manager is present, to speed up the AOT case. Call
1982         mono_class_vtable () full with raise_on_error == TRUE instead.
1983
1984 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1987         the local optimization passes can take its result into account. Fixes
1988         #559876.
1989
1990         * exceptions.cs: Add a test.
1991
1992 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1993
1994         This patch is contributed under the terms of the MIT/X11 license
1995
1996         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1997
1998 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2001
2002         * debugger-agent.c: Rework the handling of stack traces of running threads to
2003         avoid crashes if compute_frames () tries to walk the stack of running thread.
2004
2005         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2006
2007         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2008
2009         * mini.h (StackFrameInfo): Add an 'lmf' field.
2010
2011 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2012
2013         * debugger-agent.c (suspend_current): Always set really_suspended.
2014
2015         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2016
2017         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2018
2019 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2020
2021         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2022         really suspended.
2023
2024 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2027
2028 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2029
2030         * mini-trampolines.c: Fix MSVC build.
2031
2032 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2033
2034         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2035
2036 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2039         the instruction following an OP_FCOMPARE is optimized away.
2040
2041 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2042
2043         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2044         emit_autoreg () into this arch-specific function.
2045
2046         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2047         code, it is no longer needed.
2048
2049         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2050
2051         * mini.h: Bump AOT file format version.
2052
2053         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2054         using the sorted_code_offsets array, instead of reading it from the
2055         exception debug info.
2056         (load_method): Call mono_aot_find_jit_info instead of
2057         decode_exception_debug_info ().
2058
2059         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2060         LLVM compiled as a flag.
2061
2062 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * debugger-agent.c (resume_thread): Fix a warning.
2065
2066         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2067         generated.
2068
2069 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2072         contents to MonoAotFileInfo.
2073
2074 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2077         Put all binary data into a giant blob, similarly to the way .net assemblies
2078         store binary data. Emit offset tables in a compact form to reduce their size.
2079
2080         * mini.h: Bump AOT file format version.
2081
2082         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2083         places.
2084
2085         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2086         avoid linear searches at runtime.
2087
2088         * aot-runtime.c (find_symbol): Update this to use the hash.
2089
2090         * mini.h: Bump AOT file format version.
2091
2092 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2095         container.
2096
2097         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2098         too.
2099
2100         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2101         the distribution of got slot types.
2102
2103         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2104
2105         * method-to-ir.c: Add support for generating explicit null checks.
2106
2107 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2110         on a random thread if possible.
2111
2112         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2113         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2114         correctly.
2115
2116         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2117         regs. Pass the real size of the regs array to mono_unwind_frame ().
2118
2119         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2120         ones instead.
2121
2122 2009-11-24  Geoff Norton  <gnorton@novell.com>
2123
2124         * mini-darwin.c: Work around apple bug rdar://7209349  See
2125         http://openradar.appspot.com/7209349 for details.  Synopsis,
2126         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2127         never been initialized before.
2128
2129 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2132
2133         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2134
2135 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2138         OP_SHL_IMM is not 32 bit.
2139
2140 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2143
2144 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2145
2146         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2147         encountered.
2148
2149         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2150         > 0 since some threads can resume if their resume_count is > 0.
2151         (invoke_method): Avoid reading freed memory.
2152
2153         * debugger-agent.c (process_suspend): Extract the suspend code from
2154         process_single_step_inner () to a separate function. Rework the code to prevent
2155         races between this function and thread interrupts.
2156
2157         * debugger-agent.c (suspend_current): Check the resume_count field instead
2158         of resume_one so suspends+resumes during single threaded invokes work
2159         correctly.
2160
2161 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2162
2163         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2164         to make the generated code smaller.
2165
2166         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2167         sequence generated by recent LLVM versions.
2168
2169         * mini-llvm.c: Add support for a few simple cases which weren't supported
2170         before.
2171
2172         * mini-trampolines.c (mono_magic_trampoline): Don't call
2173         mono_arch_get_vcall_slot () when llvm is enabled.
2174
2175         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2176
2177         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2178         into a new function called common_call_trampoline () which is used by the
2179         llvm vcall trampoline as well.
2180
2181         * debugger-agent.c: Implement single threaded invokes.
2182
2183         * debugger-agent.c: Revert change which broke the agent on linux.
2184
2185         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2186         #557606.
2187
2188         * generics.cs: Add a test.
2189
2190 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * debugger-agent.c: Fix the cygwin build.
2193
2194 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * cprop.c: Remove this unused file.
2197
2198 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2201         #557262.
2202
2203         * basic.cs: Add a test.
2204
2205 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2208         in one more place.
2209
2210 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2213         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2214         it. Use this flag to control llvm related code paths instead of #ifdef
2215         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2216         AOT code.
2217
2218         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2219
2220         * mini.h: Bump AOT file format version.
2221
2222         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2223         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2224
2225         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2226         was used as an assembly filter.
2227
2228 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * unwind.c: Fix support for ppc.
2231
2232         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2233         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2234
2235 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2238         port.
2239         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2240         added by the ps3 changes.
2241
2242 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * mini-gc.c: Resurrect this, so at least it compiles.
2245
2246         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2247
2248 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2251         create_event_list () so assembly filters can be used.
2252
2253         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2254         from the LMF.
2255
2256 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2259         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2260         is disabled.
2261
2262         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2263         classes for char/bool too.
2264
2265         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2266
2267         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2268         used.
2269
2270         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2271         Fix warnings.
2272
2273 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2274
2275         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2276         
2277         Code contributed under MIT/X11 license.
2278
2279 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2280
2281         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2282         threads in native code work.
2283
2284         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2285         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2286         version.
2287
2288 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2289
2290         * debugger-agent.c: Implementation for Windows platform.
2291
2292         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2293         primitives. Use SEH to implement breakpoints and single stepping.
2294
2295         * mini-x86.h: Enable soft debugger on Windows.
2296
2297         Code contributed under MIT/X11 license.
2298
2299 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2302         under XEN. Fixes #522894.
2303
2304         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2305
2306         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2307         interface calls in LLVM AOT code.
2308
2309         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2310         is found.
2311
2312         * mini-llvm.c: Add support for OP_VPHI.
2313
2314         * objects.cs: Add a test.
2315
2316 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2319         this is called on the debugger thread.
2320
2321 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * mini-llvm.c: Add soft-float support.
2324
2325         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2326         FCALL which returns an R4.
2327
2328         * driver.c (mono_main): Add a missing '\n'.
2329
2330         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2331         platforms which doesn't support the LLVM IMT trampoline.
2332
2333 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2336
2337         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2338
2339         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2340         virtual calls.
2341
2342         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2343
2344 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2347         Instead of emitting a method_order table, sort the contents of the code_offsets
2348         table and do a binary search in the sorted table. The previous approach doesn't
2349         work with LLVM which emits methods in a arbitrary order.
2350
2351         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2352         in the .eh_frame section in ELF files.
2353
2354         * mini.h: Bump corlib file format version.
2355
2356         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2357
2358         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2359         LDMIA->LDM macro name change.
2360
2361 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2364         x86.
2365
2366         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2367         SVN.
2368
2369         * aot-compiler.c: Ditto.
2370
2371         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2372         &align to mini_type_stack_size_full ().
2373
2374         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2375
2376         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2377
2378 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * mini-arm.c: Compute the stack space used by arguments using
2381         mini_type_stack_size_full ().
2382
2383 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2384
2385         * optflags-def.h: Remove dead TREEPROP optimization.
2386
2387 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2390
2391         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2392
2393 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * driver.c (mono_jit_parse_options): New public API function to parse options
2396         as done by the runtime executable.
2397
2398         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2399         when handling named arguments.
2400
2401 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2404         for passing small vtypes in registers, make the CallInfo structures more
2405         similar to the code on the other platforms.
2406
2407         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2408         the code in the prolog requires it.
2409
2410 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2413         (koush@koushikdutta.com).
2414
2415         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2416         where the thunk memory should be allocated from. Fixes appdomain unloading
2417         on arm.
2418
2419 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2422         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2423
2424 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2427         AOT, as it is not implemented yet.
2428
2429         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2430
2431 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * debugger-agent.c: Fix windows build.
2434
2435 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2438         after the client connects/disconnects.
2439
2440         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2441         when an exception of a given type is thrown.
2442
2443         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2444         only on an uncaught exception.
2445
2446         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2447
2448         * debugger-agent.c: Add a 'launch' option.
2449
2450 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * debugger-agent.c: Add a 'timeout' option.
2453
2454 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2455
2456         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2457         the JDWP agent.
2458
2459 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * debugger-agent.c (set_breakpoint): Emit a log message.
2462
2463 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * mini-arm.c: Fix the arm build.
2466
2467 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2468
2469         * aot-compiler.c: don't leak the value returned from
2470         mono_type_full_name().
2471
2472 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2473
2474         * debugger-agent.c: defer including mono-mutex.h until we know the
2475         agent is supported.
2476
2477 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2478
2479         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2480         of pthreads directly.
2481
2482         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2483         exception handlers. Pass info argument.
2484
2485         * mini.h: Adjust signatures of soft debugger functions to pass void*
2486         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2487
2488         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2489         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2490         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2491         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2492
2493         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2494
2495         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2496         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2497         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2498         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2499
2500         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2501
2502         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2503
2504         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2505
2506         * mono-semaphore.h: Skeleton implementation for Windows.
2507
2508         Code contributed under MIT/X11 license.
2509
2510 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2511
2512         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2513
2514         Code contributed under MIT/X11 license.
2515
2516 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2517
2518         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2519
2520         Code contributed under MIT/X11 license.
2521
2522 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2525         debug info to 100 because 10 still slows down gdb too much.
2526
2527         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2528         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2529         them in the wrappers.
2530
2531 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2532
2533         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2534
2535         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2536
2537         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2538         function mono_aot_get_array_helper_from_wrapper ().
2539
2540         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2541         array helper methods.
2542
2543 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2544
2545         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2546         the value was loaded from memory.
2547
2548         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2549         the value was loader from there.
2550
2551         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2552         without constant swizzle.
2553
2554 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2555
2556         * mini-amd64.c: Put soft debugger functions behind a
2557         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2558
2559         * mini-amd64.h: disable the soft debugger in windows.
2560
2561         Code contributed under MIT/X11 license.
2562
2563 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2564
2565         * mini-x86.c: Put soft debugger functions behind a
2566         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2567
2568         Code contributed under MIT/X11 license.
2569
2570 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2571
2572         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2573         to mono_arch_find_jit_info_ext.
2574
2575         Code contributed under MIT/X11 license.
2576
2577 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2580
2581         * debugger-agent.c: Add support for filtering events by assemblies.
2582
2583         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2584         the agent is not enabled.
2585
2586 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2587
2588         * exceptions-x86.c: hopefully last change to fix the windows build.
2589         This one courtesy of Jonathan Chambers.
2590
2591 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2592
2593         * debugger-agent.c: remove unused function.
2594
2595 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2596
2597         * debugger-agent.c: add #ifdefs for a few header files.
2598         * mini-x86.h: disable the soft debugger in windows.
2599         Step 1 of 2 to make this compile on windows with gcc.
2600
2601 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2604         as it breaks the build.
2605
2606 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2607
2608         Merge the soft debugger branch.
2609
2610         * debugger-agent.h debugger-agent.c: New files containing the soft
2611         mode debugger module.
2612
2613         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2614         at the appropriate locations.
2615
2616         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2617         opcode.
2618
2619         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2620         enable/disable single stepping.
2621
2622         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2623         which returns all information in a StackFrameInfo structure, and can handle the
2624         LMF frames added by the debugger.
2625
2626         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2627         about an LMF frame.
2628
2629         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2630         walker function which works on a specific thread and passes a StackFrameInfo
2631         structure to its callback.
2632
2633         * mini.c (mini_init): Initialize the debugger agent.
2634
2635         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2636
2637         * mini-ops.h: Add OP_SEQ_POINT opcode.
2638
2639         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2640         arguments to the debugger agent.
2641
2642 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2643
2644         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2645         speed things up.
2646
2647         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2648
2649         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2650
2651         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2652
2653         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2654         if needed.
2655         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2656         sets the IMT argument and makes a virtual call.
2657
2658         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2659
2660 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2663         the windows build.
2664
2665 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2668         runtime. Fixes #551228.
2669
2670 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2673
2674         * basic.cs: Add a test.
2675
2676         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2677         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2678         CONSTRAINED. Fixes #550964.
2679
2680         * generics.cs: Add a test.
2681
2682 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2683
2684         * mini-posix.c (add_signal_handler): Use
2685         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2686
2687 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2688
2689         Contributed under the terms of the MIT/X11 license by
2690         Jerry Maine <crashfourit@gail.com>.
2691
2692         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2693         sse4a for simd intrinsics.
2694
2695         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2696         sse4a for simd intrinsics.
2697
2698 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2701         instead of inst_p1 which is not the same on ILP32 platforms.
2702
2703 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2704
2705         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2706         not the mscorlib one before calling mono_get_lmf_addr.
2707
2708         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2709         of the ip to the LMF.
2710
2711         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2712         immediate in the op->op_imm optimization.
2713
2714         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2715         understand. VTypes now work, but are not abi compliant, as they are
2716         split into 4 byte parts instead of 8.
2717         (emit_memcpy): Fix the unrolled case to work on the PS3.
2718
2719         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2720
2721         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2722         the default when static linking.
2723
2724         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2725
2726         * aot-compiler.c: Add an autoreg option to automatically register
2727         statically linked aot modules using ELF .ctors.
2728
2729         * genmdesc.pl: Add __ppc64__ to allowed defines.
2730
2731 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2734         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2735
2736 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2737
2738         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2739
2740 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2743         which will contain the domain where the method was found.
2744
2745         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2746         mini_jit_info_table_find ().
2747
2748         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2749
2750         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2751
2752 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2755         set, its not supported yet.
2756
2757 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2758
2759         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2760         iface wrapper is not found.
2761         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2762
2763 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2764
2765         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2766         which have a different name.
2767
2768         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2769         wrappers and Array.GetGenericValueImpl ().
2770
2771         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2772         because of the change above.
2773
2774         * generics.cs: Add a test for full aot + generic array ifaces.
2775
2776 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2777
2778         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2779         that hides the previous one.
2780
2781 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2784         marshalled. Fixes #541623.
2785
2786 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2789
2790 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2793
2794 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2795
2796         * mini-posix.c (sigprof_signal_handler):
2797         Implemented support for building stat call chans in different ways.
2798
2799 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2800
2801         * mini-exceptions.c (mono_find_jit_info):
2802         Also check that a jit info has been found (fixes a profiler crash).
2803
2804 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2805
2806         * mini.c (mono_codegen):
2807         Call mono_profiler_code_buffer_new with correct code address.
2808
2809 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * driver.c (mono_main): Change the date in the copyright.
2812
2813 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2814
2815         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2816         allocator in shared generic code for open classes, because we
2817         can't get those classes' vtables.  We need to make managed
2818         allocators not depend on the vtable at compile-time to solve this.
2819
2820 2009-10-13  Martin Baulig  <martin@ximian.com>
2821
2822         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2823         `const guint8 *trampoline' argument; send both the old and the new
2824         notification.
2825
2826 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2829         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2830         (can_marshal_struct): Skip structures with auto layout.
2831
2832         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2833
2834 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2837         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2838         a variable to hold the stack slot used by the int<->float conversion opcodes.
2839
2840         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2841
2842 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2845         when using full-aot.
2846
2847 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2848
2849         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2850         each instance of Comparer<T>.
2851
2852         * generics.cs: Add a new test.
2853
2854 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2855
2856         * driver.c (parse_debug_options): Add a 'gdb' option.
2857
2858         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2859
2860         * image-writer.c: Add support for emitting the image into a memory buffer.
2861
2862         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2863
2864         * aot-compiler.c: Add support for registering debug info with GDB using the
2865         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2866         MONO_XDEBUG to 'gdb'.
2867
2868 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2871         gdb mode.
2872
2873 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2874
2875         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2876         can be used to set breakpoints in gdb.
2877
2878         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2879         segment to an absolute address.
2880
2881 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2882
2883         * method-to-ir.c: Use the managed array allocator method if
2884         available.
2885
2886 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2887
2888         * aot-compiler.c : Fix the MSVC builds
2889
2890         Code is contributed under MIT/X11 license.
2891
2892 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2895         avoid registering 1 symbol file per method with gdb.
2896
2897 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini-sparc.c: Fix the handling of enums with base type long.
2900
2901         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2902
2903         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2904         instead of using type->data.klass as the later doesn't work with generics.
2905
2906 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2907
2908         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2909         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2910         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2911         works differently now and we don't handle it in the JIT anymore.
2912
2913         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2914         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2915         the Thread class split.
2916
2917 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * driver.c: Don't run tests with the obsolete treeprop optimization.
2920
2921         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2922         variable volatile. Fixes #541577.
2923
2924         * basic-calls.cs: Add a new test.
2925
2926         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2927
2928 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2931         work/required with recent iphone sdk versions.
2932
2933         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2934         structures.
2935
2936         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2937         in the VCALL decomposition code.
2938
2939 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2942
2943         * basic.cs: Add a test.
2944
2945         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2946         generic invokes.
2947
2948         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2949         searches all the domains of the current thread.
2950
2951         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2952
2953 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2956         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2957
2958         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2959         for non-jit trampolines.
2960
2961         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2962
2963         * aot-compiler.c (add_wrappers): Ditto.
2964
2965         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2966         the size of the param area used by dyn_call to 6 which covers the majority of
2967         methods.
2968
2969         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2970
2971         * mini-arm.c: Implement support for passing/receiving
2972         longs and receiving floats in the dyn_call code.
2973
2974         * mini-amd64.c: Implement support for receiving vtypes in registers in
2975         the dyn_call code.
2976
2977         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2978         the dyn_call code.
2979
2980 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * mini-arm.c (get_call_info): Return more precise information in
2983         ArgInfo->regtype.
2984         (dyn_call_supported): Use the information in CallInfo.
2985
2986         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2987
2988         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2989         code.
2990
2991         * mini-arm.c: Update after the dyn_call api changes.
2992
2993         * mini.c (mini_create_jit_domain_info): Register a destructor function
2994         for the runtime_invoke_hash.
2995
2996         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2997         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2998         this function.
2999         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3000         (dyn_call_supported): Simplify this by using get_call_info ().
3001         (mono_arch_dyn_call_free): New destructor function.
3002
3003         * generics.cs: Remove a printf.
3004
3005         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3006
3007         * mini-arm.c: Add support for enum return values and passing a few arguments
3008         on the stack.
3009         
3010         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3011         dyn invoke.
3012
3013         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3014
3015         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3016         the dynamic invoke wrappers.
3017
3018         * mini-arm.c: Implement OP_DYN_CALL for arm.
3019
3020         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3021         supported by the dynamic runtime invoke wrapper.
3022
3023         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3024         runtime invoke wrapper.
3025
3026         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3027         if possible when running with full-aot.
3028
3029         * mini-ops.h: Add OP_DYN_CALL opcode.
3030
3031         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3032         with dynamic arguments lists similar to libffi.
3033
3034 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3037         
3038         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3039         to NEWARR.
3040
3041         * iltests.il.in: Add a new test.
3042         
3043 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * aot-compiler.c (add_generic_instances): Add more instances of
3046         GenericEqualityComparer.
3047
3048 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3051
3052 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3053
3054         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3055         comments on some functions that now can fail.
3056
3057 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3058
3059         * Makefile.am: Add Info.plist to EXTRA_DIST
3060
3061 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3062
3063         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3064         static synchronized wrappers. Fixes #539500.
3065
3066 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3067
3068         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3069         properly.
3070
3071 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3074         lmf before calling filter clauses as well. Fixes #539550.
3075
3076         * exceptions.cs: Add a test.
3077         
3078 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3079
3080         * aot-compiler.c (add_generic_class): Add instances of
3081         Array.GetGenericValueImpl as well.
3082
3083         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3084         can be tested too.
3085
3086         * generics.cs: Add a fullaot linq test.
3087
3088 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3091         reg r1 on arm.
3092
3093 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3094
3095         * mini-trampolines.c (mono_delegate_trampoline) : Call
3096           mono_cominterop_get_invoke if the delegate target object
3097           is a COM object.
3098
3099         Code is contributed under MIT/X11 license.
3100
3101 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3102
3103         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3104         internal call is defined outside platform code. Reduce code 
3105         duplication with existing [Method|Field]AccessException
3106
3107 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3108
3109         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3110         if the return value is a small struct passed on regs.
3111
3112 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3115
3116         * mini-codegen.c: Enable the cpu description validation for arm.
3117
3118 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3121         test which depends on structs to objects.cs.
3122         
3123         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3124         require object model related stuff working.
3125
3126         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3127
3128         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3129
3130         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3131         against the instruction metadata in mini-ops.h. amd64 only for now.
3132
3133         * mini-ops.h: Fix some instruction descriptions.
3134
3135         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3136         unused instructions.
3137
3138 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3139
3140         * exceptions.cs: Add a new test.
3141
3142 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3143
3144         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3145
3146 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3147
3148         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3149         skip empty phi opcodes.
3150         
3151         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3152         correctly by zero extending after loads. Skip methods containing calls
3153         to the monitor enter/exit trampolines.
3154
3155         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3156         when calling mono_thread_force_interruption_checkpoint ().
3157
3158         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3159
3160         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3161         64 bit thunks.
3162         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3163
3164         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3165         bootstrap could run.
3166
3167 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3170
3171 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3174         of the method to
3175         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3176         LLVM might be very short.
3177
3178         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3179         in OP_THROW/RETHROW.
3180
3181         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3182         alignment on osx.
3183
3184 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3187         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3188         LLVM might be very short.
3189
3190 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3193         the alignment for the value of sp.
3194
3195 2009-09-01  Geoff Norton  <gnorton@novell.com>
3196
3197         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3198         managed wrappers in full aot.
3199
3200 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3203
3204 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3207
3208 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3211
3212         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3213         saved info.
3214
3215         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3216
3217         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3218         depend on the info MonoMethodHeader which could be missing in IL stripped
3219         assemblies.
3220
3221 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3224         they are only 4 byte aligned.
3225
3226 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3229         was done previously, since using SP causes too many problems.
3230
3231         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3232         frames without a frame pointer works.
3233
3234         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3235         global register in methods with calls, since the calls can go through
3236         a static rgctx trampoline which doesn't save it.
3237
3238 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3241
3242 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3245
3246 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3247
3248         * method-to-ir.c: Fix warnings for uninitialized variables.
3249
3250 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3251
3252         * mini-exceptions.c:
3253         * aot-compiler.c: Fix printf warnings.
3254
3255 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3258         Add GetGenericValueImpl<string>.
3259         
3260         * aot-compiler.c (add_generic_instances): Add instances of
3261         GenericEqualityComparer<T> for primitive types. Only emit the array
3262         wrappers into the mscorlib image.
3263
3264 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3267         the methods_loaded array using amodule->info->nmethods.
3268
3269         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3270         (MONO_AOT_FILE_VERSION): Bump this.
3271
3272         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3273         to work.
3274
3275         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3276         MonoJitInfo doesn't belong to its methods aot image.
3277
3278 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3281
3282         * mini-arm.c: Fix warnings.
3283         
3284         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3285
3286         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3287         supports it.
3288
3289 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3292         avoid clobbering IP.
3293
3294         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3295         hold the trampoline argument, so its initial value is available during
3296         debugging.
3297
3298 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3299
3300         * exceptions-arm.c:
3301         * exceptions-hppa.c:
3302         * mini.c:
3303         * exceptions-s390x.c:
3304         * exceptions-mips.c:
3305         * exceptions-ppc.c:
3306         * exceptions-sparc.c:
3307         * exceptions-alpha.c:
3308         * aot-runtime.c:
3309         * mini-trampolines.c:
3310         * exceptions-x86.c:
3311         * exceptions-s390.c: add and use #define's instead of sizeof()
3312         for MonoJitInfo and MonoJitInfoTable.
3313
3314 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3315
3316         * tramp-arm.c:
3317         * tramp-amd64.c:
3318         * tramp-ppc.c:
3319         * tramp-x86.c: use a #define instead of sizeof() for a few
3320         structures that use a zero-length array.
3321
3322 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3325         case when the method is dynamic. Fixes #529238.
3326
3327 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3330         of asserting when a method is JIT compiled in full-aot mode.
3331
3332 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3333         
3334         Contributed under the terms of the MIT/X11 license by
3335         Jerry Maine <crashfourit@gail.com>.
3336         
3337         * fixed wrong dates in changelog.
3338
3339 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3340         
3341         Contributed under the terms of the MIT/X11 license by
3342         Jerry Maine <crashfourit@gail.com>.
3343
3344         * basic-simd.cs: added test for packed double square root.
3345         * cpu-amd64.md: added opcode info for packed double square root.
3346         * cpu-x86.md: added opcode info for packed double square root.
3347         * mini-ops.h: added IR opcode for packed double square root.
3348         * mini-x86.c: added IR to native translation code for packed double square root.
3349         * mini-amd64.c: removed todo for packed double square root.
3350         * simd-intrinsics.c: added method to IR opcode converstion for
3351         packed double square root.
3352
3353 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3354
3355         Contributed under the terms of the MIT/X11 license by
3356         Jerry Maine <crashfourit@gail.com>.
3357
3358         * mini-amd64.c: Added a change to help tell the difference as 
3359         to what perpose the xmm register is being used--mainly to help
3360         with debuging.
3361         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3362         (one used for special cases) xmm registers for both fp
3363         and simd ops. Added define to turn on new feature in the regalloc
3364         that allows fp and simd ops to share the xmm regs happily.
3365         * codegen.c: Added code to detect for which perpose an xmm reg is
3366         being used (fp or simd) and to translate back and forth to the
3367         correct logical reg bank (fp or simd) for 'spill load's.
3368
3369 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3370
3371         Contributed under the terms of the MIT/X11 license by
3372         Jerry Maine <crashfourit@gail.com>.
3373
3374         * basic-simd.cs: Added tests for stressing the regalloc when running with
3375         16 simd regs and when simd and fp ops share the same reg bank.
3376
3377 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3378
3379         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3380         in shared generic code, we might have to look up the class in the
3381         RGCTX.  If we use the class directly, compute its GC descriptor.
3382
3383 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3384
3385         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3386
3387 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3388
3389         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3390         check for errors. Fixed the case when the class with the Main
3391         method is broken.
3392
3393 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3394
3395         Contributed under the terms of the MIT/X11 license by
3396         Jerry Maine <crashfourit@gail.com>.
3397
3398         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3399
3400 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3403
3404 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3405
3406         * method-to-ir.c: Fix naming of stelem and ldelem.
3407
3408 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * driver.c (main_thread_handler): Check that the assembly loaded
3411         matches the filename when doing AOT.
3412
3413 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3414
3415         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3416         call it anymore.
3417
3418         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3419         utils/mono-sigcontext.h).
3420
3421         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3422         #ifdef.
3423
3424 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3425
3426         * mini.c (mono_codegen):
3427         Call profiler hook to keep track of method code buffers.
3428
3429 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3430
3431         * method-to-ir.c: Invoke write barriers for the
3432         Interlocked.(Compare)Exchange JIT intrinsics.
3433
3434 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3435
3436         * Makefile.am (version.h): Fix issues when built out of tree.
3437         Remove some redundant 'grep's piped through 'sed's.
3438
3439 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3440
3441         This patch is contributed under the terms of the MIT/X11 license
3442
3443         * mini-ppc.c (mono_arch_output_basic_block):
3444         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3445         for bits 32-47 with signed load/store diplacements for bits
3446         48-63.  Use prefered base/offset order for indexed form.
3447         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3448         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3449         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3450         OP_LOADI2_MEMBASE): Same.
3451         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3452         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3453         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3454         indexed form.
3455         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3456         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3457         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3458         OP_LOADI1_MEMINDEX): Same
3459         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3460         OP_STORER8_MEMINDEX): Same
3461         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3462         computations.
3463         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3464         for bits 32-47 with signed load/store diplacements for bits
3465         48-63.  Use prefered base/offset order for indexed form.
3466
3467 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3468
3469 This patch is contributed under the terms of the MIT/X11 license
3470
3471         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3472         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3473         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3474         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3475         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3476         cfg->stack_usage to avoid size warnings.
3477         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3478         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3479         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3480         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3481         to convert.
3482         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3483         after code varible is initialized.
3484         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3485         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3486         (mono_arch_emit_epilog): 
3487         Move Use ppc_load32 for cfg->stack_usage to avoid size
3488         warnings.
3489
3490 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3491
3492         * method-to-ir.c: The write barrier doesn't do the store anymore,
3493         so we have always to emit it.  Also, emit the wbarrier after the
3494         store.
3495
3496 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3497
3498         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3499         for argument count 3 too.
3500
3501 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3504         the caller handle the exceptions.
3505         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3506         method. Fixes #524498.
3507
3508 2009-07-22  Geoff Norton  <gnorton@novell.com>
3509
3510         * mini-exceptions.c: Fix build on ia64.
3511
3512 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3513
3514         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3515         barriers.
3516
3517 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3520         code.
3521
3522 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * basic-simd.cs (Main): Pass args to the test driver.
3525
3526 2009-07-20  Geoff Norton  <gnorton@novell.com>
3527
3528         * mini-x86.h: Fix the x86 version guards to use Apple's
3529         properly defined macros.
3530
3531 2009-07-20  Geoff Norton  <gnorton@novell.com>
3532
3533         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3534         aligned access.
3535
3536 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3537
3538         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3539         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3540         the information which is needed for invokes, so only one locking+hash table
3541         lookup is needed.
3542
3543         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3544         
3545         * aot-compiler.c (add_generic_instances): Emit instances of 
3546         GenericComparer<T> for primitive types.
3547
3548 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3549
3550         * mini-posix.c: Fix linux build.
3551
3552 2009-07-19  Geoff Norton  <gnorton@novell.com>
3553
3554         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3555         mono_gdb_render_native_backtraces
3556         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3557         so we implement the sane semantics to the runtime here
3558         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3559         so we need to call it differently (mono_gdb_render_native_backtraces)
3560         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3561         here for default implementations.
3562         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3563         support Apple's weird syscall (SYS_fork) implementation and not busy
3564         loop in abort() on native crashes on OSX anymore.
3565
3566 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3567
3568         * aot-runtime.c (load_method): Change the handling of the
3569         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3570         are used.
3571
3572         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3573
3574 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3577         seems to break the aot tests.
3578         
3579         * mini.c (mono_patch_info_equal): Fix the handling of 
3580         MONO_PATCH_INFO_RGCTX_FETCH.
3581
3582 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3585
3586         * mini.c (mono_patch_info_hash): Fix the handling of 
3587         MONO_PATCH_INFO_INTERNAL_METHOD.
3588         (mono_patch_info_equal): Ditto.
3589
3590 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3593         in a few places.
3594         
3595         * mini-llvm.c: Add some infrastructure for AOT support.
3596
3597 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * mini-llvm-cpp.c: Update to the latest llvm api.
3600         
3601         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3602         option to false to prevent llvm from installing signal handlers which
3603         trip up the gc.
3604         
3605 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3606
3607         * cpu-x86.md:
3608         * cpu-amd64.md: Revert previous change as those instructions
3609         take 2 separate arguments. Remember to read the arch docs more
3610         carefully next time.
3611
3612 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3615
3616 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3617
3618         * mini-ppc.c: exploit multiple load/store units if available (rest of
3619         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3620         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3621
3622 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3623
3624         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3625         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3626
3627 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3628
3629         * cpu-x86.md: Fix missing clobbering from trancendental simd
3630         ops.
3631
3632         * cpu-amd64.md: Same.
3633
3634 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3635
3636         Contributed under the terms of the MIT/X11 license by
3637         Jerry Maine <crashfourit@gail.com>.
3638
3639         * basic-simd.cs: Added tests for single and doulble indexers.
3640
3641         * cpu-amd64.md: Added simd opcode information.
3642
3643         * mini-amd64.c: Added IR to native simd generation code.
3644         Added simd register names and function that returns them.
3645
3646         * mini-amd64.h: Added marcos to turn on simd code compilation in
3647         amd64. Added max simd register count marco. Added caller/callee
3648         register mask marcos. Added marcos to use simd register bank.
3649
3650         * mini.h: Added helper marco for shufling dwords and simple
3651         floats.
3652
3653 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3656
3657         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3658
3659         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3660         the length of the native code as well.
3661
3662         * basic-simd.cs: Add a test for #521662.
3663
3664 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3665
3666         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3667
3668 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3669
3670         * mini.c: Register function for getting the IP from a signal
3671         context with metadata.
3672
3673 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3676         call a generic class init trampoline if needed. Fixes #519336.
3677
3678         * generics.cs: Add a test.
3679         
3680 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3681
3682         * method-to-ir.c: When doing a call which might be remote from
3683         shared generic code to other shared code with open type arguments,
3684         get the remoting invoke wrapper from the RGCTX and do an indirect
3685         call to it.
3686
3687 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3690         after the unbox trampoline in the full-aot case.
3691
3692 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3693         
3694         * mini.c: Move initialization of jit_mutex before debugger initialization
3695         
3696         to avoid crashes.
3697         
3698         
3699         * Info.plist: added Info.plist and link flag to enable the mono executable
3700         to access other processes. Requires codesigning of the executable to work.
3701         
3702         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3703         
3704         compile on OS X.
3705         
3706
3707 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3708
3709         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3710
3711 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3714         when the generic instance is an instantiation of a subclass of the
3715         methods class. Fixes #517166.
3716
3717 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3720         code.
3721
3722         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3723         AOTed code.
3724
3725         * CMakeLists.txt: Add minimal support for installation.
3726
3727 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3730         determine whenever a method is directly callable to a separate function.
3731
3732         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3733         needed ones as a result of the previous change.
3734
3735         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3736         type of register arrays.
3737
3738         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3739         type of register arrays.
3740
3741 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3742         
3743         Contributed under the terms of the MIT/X11 license by
3744         Jerry Maine <crashfourit@gail.com>.
3745
3746         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3747
3748 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3751
3752 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3753
3754         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3755         dump of structure return value. Fix some formatting.
3756         * cpu-s390x.md: Fix lengths of instruction sequences.
3757         * mini-s390.c: Minor formatting changes.
3758
3759 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3762         Use sigaction on freebsd as well.
3763
3764 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3767         uses #ifdef on it.
3768         
3769         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3770
3771 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3772
3773         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3774
3775 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3776
3777         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3778
3779 2009-06-20  Martin Baulig  <martin@ximian.com>
3780
3781         * debug-mini.c
3782         (MonoDebuggerThreadFlags): New enum typedef.
3783         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3784         (mono_debugger_thread_created): Added `gpointer func' argument;
3785         initialize the new `thread_flags' field.
3786
3787 2009-06-18  Martin Baulig  <martin@ximian.com>
3788
3789         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3790         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3791
3792         * debug-debugger.c
3793         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3794         flag in `MONO_DEBUGGER__info.runtime_info'.
3795
3796         * driver.c
3797         (mono_main): Call mini_debugger_set_attach_ok() if generics
3798         sharing is disabled.
3799
3800 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * aot-compiler.c (add_wrappers): Fix a warning.
3803
3804         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3805         the ppc load/store macro changes.
3806
3807 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3808
3809         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3810
3811         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3812         not just the got symbol.
3813
3814         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3815         on ppc.
3816
3817         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3818         ppc.
3819         
3820         * aot-compiler.c: Remove some fixmes.
3821
3822         * driver.c (mono_main): Print a helpful message when cross-compiling.
3823
3824         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3825
3826         * method-to-ir.c (initialize_array_data): Do the optimization if the
3827         target byte order is little endian, instead of the host byte order.
3828
3829         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3830         wrappers into the mscorlib image, Emit a unique plt symbol for each
3831         image, emit symbols for plt entries.
3832
3833         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3834         a .size directive.
3835         
3836 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * aot-compiler.c (add_wrappers): Avoid calling 
3839         mono_marshal_get_type_info () since it can assert for some types.
3840
3841         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3842         ldtoken are used inside wrappers.
3843
3844         * helpers.c: Add support for prefixing tools with the arch name.
3845
3846         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3847         quantities when using ilp32.
3848
3849         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3850         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3851
3852         * image-writer.c: Use .long on ilp32.
3853
3854         * aot-compiler.c: Use 32 bit loads on ilp32.
3855         
3856 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3857
3858         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3859
3860         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3861
3862         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3863
3864         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3865         second got slot of every aot image.
3866         
3867         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3868         aot on platforms with function pointers.
3869
3870         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3871         support for aot/full aot on ppc/ppc64.
3872         
3873         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3874         arguments which are needed on ppc.
3875
3876         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3877         argument.
3878
3879         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3880         
3881         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3882
3883         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3884
3885         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3886
3887         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3888
3889 2009-06-17  Geoff Norton  <gnorton@novell.com>
3890
3891         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3892
3893 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3896         to control whenever the dwarf writer is in xdebug or aot mode.
3897         (emit_class_dwarf_info): Use a separate abbrev for structures without
3898         children.
3899
3900         * aot-compiler.c: Pass the appending parameter to 
3901         mono_dwarf_writer_create ().
3902
3903         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3904         falls through to its next bblock. Fixes #513931.
3905
3906         * iltests.il: Add a test.
3907
3908         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3909         infor even if emit_line is FALSE, as the apple linker seems to require it.
3910
3911         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3912
3913         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3914         gcc does.
3915         (emit_fde): Ditto.
3916
3917 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3920         mips build.
3921
3922 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3923
3924         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3925         'has_call_handler' fields.
3926
3927         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3928
3929         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3930         first bblock if not needed. Fixes #512790.
3931         
3932 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3935         
3936         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3937         wrappers.
3938
3939         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3940         remoting-invoke-with-check wrappers, which are not needed when running with
3941         full-aot, since it doesn't support remoting.
3942         
3943 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3946
3947         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3948         method info, it is not used anymore.
3949
3950         * mini.h: Bump AOT file format version.
3951         
3952         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3953         word smaller.
3954
3955         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3956         change above.
3957         
3958         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3959
3960         * mini.h: Bump AOT file format version.
3961         
3962 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3965         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3966         iphone.
3967
3968         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3969         of CKFINITE and FBGE for VFP.
3970
3971 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * aot-compiler.c: Don't align code to 16 bytes on arm.
3974         
3975         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3976         before the methods they belong to.
3977
3978         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3979         the full-aot case if possible, since the trampoline will be called right 
3980         away.
3981
3982         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3983         trampolines to 1024 after the change above.
3984
3985         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3986         trampoline to save 8 bytes per trampoline.
3987
3988         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3989         change above.
3990
3991 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3994
3995 2009-06-08  Martin Baulig  <martin@ximian.com>
3996
3997         * debug-mini.c
3998         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3999         (_mono_debugger_throw_exception): Don't make this static.
4000         (_mono_debugger_unhandled_exception): Likewise.
4001         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4002
4003         * debug-mini.c
4004         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4005         (_mono_debugger_throw_exception): Add function prototype.
4006         (_mono_debugger_unhandled_exception): Likewise.
4007
4008         * mini-exceptions.c
4009         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4010         arg; return the first exception handler if the exception is caught
4011         and we're running inside the debugger.
4012         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4013         improve exception handle inside runtime-invoke, check whether the
4014         exception is actually caught in the method being invoked and not
4015         by the runtime-invoke-wrapper.
4016
4017 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * image-writer.c: Improve support for the osx assembler.
4020
4021         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4022         support them.
4023
4024 2009-06-08  Martin Baulig  <martin@ximian.com>
4025
4026         * debug-mini.c
4027         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4028         (_mono_debugger_throw_exception): Don't make this static.
4029         (_mono_debugger_unhandled_exception): Likewise.
4030         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4031
4032         * debug-mini.c
4033         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4034         (_mono_debugger_throw_exception): Add function prototype.
4035         (_mono_debugger_unhandled_exception): Likewise.
4036
4037         * mini-exceptions.c
4038         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4039         arg; return the first exception handler if the exception is caught
4040         and we're running inside the debugger.
4041         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4042         improve exception handle inside runtime-invoke, check whether the
4043         exception is actually caught in the method being invoked and not
4044         by the runtime-invoke-wrapper.
4045
4046 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4047
4048         * image-writer.c (append_subsection): Don't align subsections of the
4049         debug_line section as a workaround.
4050
4051         * dwarfwriter.c: Emit line number info in the AOT case as well.
4052
4053 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4054
4055         This patch is contributed under the terms of the MIT/X11 license
4056
4057        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4058        code_len <= code_size
4059
4060 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4063
4064 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4067         invoke wrappers, we now use trampolines instead.
4068
4069 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4070
4071         * mini-darwin.c: The exception thread must not be registered with
4072         the GC.
4073
4074 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4075
4076         * mini-gc.c: Disable the code because it makes SGen crash.
4077
4078 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4081         instead of asserting.
4082
4083 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4086         output file after the code has been compiled.
4087
4088 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4091
4092 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4093
4094         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4095         entries distinction to simplify the code.
4096
4097         * mini.h: Bump AOT file format version.
4098         
4099 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * objects.cs: Fix the signature of one of the tests.
4102
4103         * mini.c (mini_create_ftnptr): New helper function, moved here from
4104         object.c.
4105         (mini_get_addr_from_ftnptr): Ditto.
4106         (mini_init): Install the new helpers.
4107
4108 2009-05-28  Martin Baulig  <martin@ximian.com>
4109
4110         Correctly initialize the debugger when embedding Mono.
4111
4112         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4113         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4114         see documentation in mini_debug_running_inside_mdb().
4115
4116         * debug-debugger.c
4117         (mini_debug_running_inside_mdb): New function to check whether
4118         we're running inside mdb.
4119
4120         * mini.c (mini_init): Call mini_debugger_init() if we're running
4121         inside the debugger.
4122
4123         * driver.c (mono_main): Moved the call to mini_debugger_init()
4124         into mini_init() to make this work when embedding Mono.
4125
4126         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4127         calls to mini_debugger_init().
4128
4129         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4130         mono_debugger_main() -> mini_debugger_main() and put them inside a
4131         `MONO_DEBUGGER_SUPPORTED' conditional.
4132
4133 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4134
4135         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4136         this is no longer in use.
4137         * mini.h: Same.
4138
4139 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4142
4143         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4144         methods.
4145
4146 2009-05-27  Martin Baulig  <martin@ximian.com>
4147
4148 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4149
4150         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4151         long_conv_to_r_un to 64 bits.
4152
4153         * cpu-x86.md: Increase the instruction size due to the changes.
4154
4155         * iltests.il.in: Add regression test.
4156
4157         Fixes #467201.
4158
4159 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4160
4161         * objects.cs: Move the previous test from basic.cs to here.
4162
4163 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4164
4165         * basic.cs: Add regression test for #506915.
4166
4167 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4168
4169         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4170         optimization we must check the bb of the first byte of stobj as
4171         it's the only one set in cil_offset_to_bb.
4172
4173         Fixes #506915.  
4174
4175 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * image-writer.c: Fix pointer directive on ppc64.
4178
4179 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * image-writer.c (asm_writer_emit_section_change): Avoid using
4182         .bss subsections on ppc too.
4183
4184 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * image-writer.c: Fix the definition of TARGET_ASM_....
4187         
4188         * image-writer.c: Fix the emission of assembler directives in the last
4189         change.
4190
4191         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4192         exception throwing code to accomodate ppc64.
4193
4194         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4195         size to work on ppc64 too.
4196
4197         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4198         too.
4199
4200         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4201         the assembler dialect instead of using platform specific defines.
4202
4203 2009-05-22  Geoff Norton  <gnorton@novell.com>
4204
4205         * mini-arm.c (get_call_info): If a structure is split between the stack
4206         and argument registers, we should not advance the stack pointer by the entire
4207         native size, but just by the amount that spilled.
4208
4209 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4212         correctly.
4213
4214 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4217         wrappers normally.
4218         
4219         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4220         methods so wrapper don't get added twice.
4221         (add_generic_instances): Don't add methods of arrays.
4222
4223         * generics.cs: Mark one test as !FULLAOT.
4224
4225 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4226
4227         * mini-x86.c (emit_move_return_value): Remove unused vars.
4228
4229 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4232         decomposing 8 bytes structs into a LCALL.
4233
4234         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4235         pointer for where to store the returned regs.
4236
4237         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4238         state the concern.
4239
4240         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4241
4242 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4243
4244         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4245         without getenv.
4246
4247 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4250
4251         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4252         generics.
4253
4254 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4255
4256         * local-propagation.c (mono_local_cprop): Avoid local propagation
4257         across paired add/sub if the first instruction dest reg is it's
4258         source reg. For example:
4259
4260         int_add_imm R12 <- R12 [1] clobbers: 1
4261         int_sub_imm R42 <- R12 [1] clobbers: 1
4262
4263         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4264         maintain the math identify.
4265
4266         Fixes #505375.
4267
4268 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4269
4270         * Makefile.am: avoid going on the network just to get the revision,
4271         use git log instead
4272
4273 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4274
4275         Fixed estimate for short branches on amd64 (they were off mark, and
4276         enabling call prolog-epilog instrumentations caused assertions).
4277         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4278         estimate for the maximum length of this basic block.
4279         * mini-amd64.c:
4280         - mono_arch_emit_prolog: compute max_length for each basic block
4281           (instead of max_offset), and inflate size estimate also for entry bb
4282           in case of code instrumentation.
4283         - mono_arch_output_basic_block: get rid of "cpos" (the current
4284           estimated "position" in the code), and always use "offset" instead,
4285           which is accurate; at the beginning of the function quickly recompute
4286           max_offset for all the remaining blocks, starting from the current
4287           cfg->code_len (which is correct, and not estimated) and using the
4288           estimated block lengths computed previously.
4289
4290 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4293         functions, it is already done in the caller.
4294
4295         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4296
4297         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4298         MONO_ARCH_GSHARED_SUPPORTED define.
4299
4300         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4301
4302         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4303         function.
4304
4305 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4308         call to mono_marshal_get_rgctx_invoke ().
4309
4310         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4311         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4312         gshared use the static rgctx trampolines now.
4313         
4314         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4315         platform supports it.
4316
4317 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4320
4321         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4322
4323 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4326
4327         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4328         for ppc.
4329
4330 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4331
4332         Made it possible for mono_arch_instrument_epilog to preserve
4333         argument registers, otherwise instrumenting the "epilogue" before
4334         a tail call would clobber them.
4335         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4336         if like mono_arch_instrument_epilog but with an additional parameter
4337         that states if argument registers must be preserved.
4338         * mini.c: implemented mono_arch_instrument_epilog as a call to
4339         mono_arch_instrument_epilog_full without asking to preserve argument
4340         registers (this makes the existing code work as usual).
4341         * mini-amd64.c:
4342         - mono_arch_instrument_epilog: add parameter to transform it into
4343         mono_arch_instrument_epilog_full, and preserve argument registers
4344         when required.
4345         - mono_arch_output_basic_block, OP_TAILCALL case: call
4346         mono_arch_instrument_epilog_full.
4347         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4348         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4349         only transformed mono_arch_instrument_epilog into
4350         mono_arch_instrument_epilog_full.
4351
4352 2009-05-15  Geoff Norton  <gnorton@novell.com>
4353
4354         * mini-darwin.c: This works on arm now.
4355
4356 2009-05-14  Geoff Norton  <gnorton@novell.com>
4357
4358         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4359         embedding api.
4360
4361 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4362
4363         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4364         label names.
4365
4366         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4367         wrappers during full aot mode correctly.
4368
4369         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4370         methods correctly.
4371
4372         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4373         mono_metadata_type_hash ().
4374
4375 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4376
4377         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4378         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4379         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4380         Removed MONO_INST_BRLABEL from the instruction flags, and the
4381         remaining code that used it, because we do not support branches inside
4382         basic blocks (and branch target labels) anymore.
4383         * Makefile.am: As part of the above cleanup, remove reference to
4384         BURG files which don't exist anymore.
4385
4386 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4387
4388         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4389         osx.
4390
4391         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4392         to use mono_arch_throw_corlib_exception.
4393
4394         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4395         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4396
4397         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4398         domain mempool.
4399
4400         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4401
4402         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4403         for the got to make debugging easier and to avoid confusing it with the
4404         system got.
4405         
4406         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4407         method so a breakpoint can be set when using gdb.
4408
4409 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4412         on mono_method_get_imt_slot ().
4413
4414         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4415         num_decodes variables.
4416
4417         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4418         change as it doesn't seem to work.
4419         
4420         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4421         wrappers.
4422
4423 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4426         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4427
4428         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4429         builder when using full aot.
4430
4431         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4432         here, it is already handled.
4433         
4434         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4435         correctly for IMT.
4436
4437         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4438
4439         * mini-arm.h: Enable IMT for full aot.
4440         
4441         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4442         arch doesn't support it.
4443
4444         * mini.c (mini_init): Don't disable IMT for full aot if the
4445         architecture supports it.
4446
4447         * mini.h (MonoAotTrampoline): New enum containing the different types
4448         of 'numerous' trampolines.
4449         (MONO_AOT_FILE_VERSION): Bump this.
4450
4451         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4452         static rgctx trampolines. Add support for full-aot IMT thunks.
4453
4454         * mini-amd64.h: Enable IMT for full aot.
4455
4456         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4457         to exclude tests belonging to a category.
4458
4459         * generics.cs: Mark some tests with a !FULLAOT category.
4460
4461         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4462         generics tests.
4463
4464 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4467         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4468         (emit_plt): Fix a warning.
4469
4470 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4471
4472         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4473         back into aot-compiler.c to a place where the other functions shared by
4474         the runtime and aot compiler are.
4475         
4476         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4477         as done previously, instead of in MonoAotFileInfo, since pointers might have
4478         alignment requirements.
4479
4480         * mini.h: Bump AOT file format version.
4481
4482 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4483
4484         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4485         that is used at runtime from the aot-compiler.c, this makes it
4486         work on setups that remove the AOT compiler from the output
4487         image. 
4488
4489 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4492         PPC.
4493
4494         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4495
4496         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4497
4498         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4499         stuff to mono_arch_decompose_long_opts ().
4500         (mono_decompose_opcode): Remove some dead code.
4501
4502 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4505         cmethod can be null for quite a some reasons.
4506
4507 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4508
4509         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4510
4511 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4514
4515 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4516
4517         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4518         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4519         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4520         calls returning structures by addr on amd64.
4521
4522         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4523
4524         * iltests.il.in: Restructure the tail call tests a bit.
4525         
4526 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4529         for virtual methods too.
4530
4531 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4532
4533         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4534         due to regression in verifying System.dll.
4535
4536 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4539         in dynamic methods.
4540
4541         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4542         instances.
4543
4544         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4545         g_str_hash () which can change.
4546
4547         * driver.c (mini_regression): Disable optimizations not supported by
4548         the cpu. Fixes #500019.
4549
4550         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4551         build.
4552
4553 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4556         to the latest LLVM code.
4557
4558 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4561
4562 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4563
4564         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4565         x86/amd64.
4566
4567         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4568         no longer saving offsets, so just save the patch types along with the other
4569         info.
4570         * aot-runtime.c (load_patch_info): Update after the changes to 
4571         encode_patch_list ().
4572         (decode_got_entry): Removed, merged into load_patch_info ().
4573         (is_shared_got_patch): Removed, call the same function from
4574         aot-compiler.c.
4575
4576         * mini.h: Bump aot file format version.
4577         
4578         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4579         half-finished no-dlsym code.
4580
4581         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4582         option.
4583
4584         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4585         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4586
4587 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4590         buffer length to work with AOT code.
4591
4592         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4593         ldfld/stfld opcodes.
4594
4595         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4596         as it is not used.
4597
4598         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4599
4600         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4601
4602         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4603         LLVM API.
4604
4605         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4606         if needed. Don't decompose long operations when using llvm.
4607
4608 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4611         PAGESIZE constant.
4612
4613         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4614
4615 2009-05-03  Martin Baulig  <martin@ximian.com>
4616
4617         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4618         mono_debugger_insert_method_breakpoint() since the class init
4619         handler we're inserting at the top of the method already gives us
4620         a notification.
4621
4622 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4625         to mono_arch_decompose_long_opts () for x86 and arm.
4626
4627 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4630         TARGET_AMD64 here.
4631
4632 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4633
4634         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4635         JIT code.
4636
4637 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4638
4639         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4640         number of trampolines used in full-aot mode.
4641
4642         * aot-compiler.c: Add an ntrampolines option to set the number of 
4643         trampolines emitted in full-aot mode.
4644
4645 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4646
4647         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4648         a volatile load. Get rid of get_tempname (), llvm assigns names
4649         automatically.
4650
4651         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4652         builder function.
4653
4654         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4655         a value.
4656
4657         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4658         level 1.
4659
4660         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4661         to the same register as a fixed sreg2. Fixes #497271.
4662
4663         * iltests.il.in: Add a new test.
4664
4665 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4666
4667         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4668         stack, since pushes complicate exception handling.
4669
4670         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4671         the stack if they are passed using moves.
4672
4673         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4674
4675         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4676         when using llvm.
4677
4678         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4679         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4680         of FMOVE if it is an R4.
4681
4682 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4685
4686         * mini.h (LLVMCallInfo): New structure to store calling convention 
4687         information for the LLVM back end similar to the CallInfo structures in 
4688         the back-ends.
4689
4690         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4691         call information in a format usable by LLVM.
4692         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4693
4694         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4695         mono_llvm_emit_call () when compiling using LLVM.
4696
4697         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4698         comments to all functions. Fix memory leaks. Add a public init/cleanup
4699         function.
4700
4701         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4702
4703         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4704         mono_array_new_va () jit icall.
4705         
4706 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4707
4708         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4709         multiple machine description files to be specified.
4710         * mini-ops.h: fixes for cross-compilation.
4711
4712 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4713
4714         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4715         some porting work.
4716
4717 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4720         to prevent asserts in various passes. Fixes #497220.
4721
4722 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4725         a racy assert.
4726
4727         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4728         table to avoid duplicates.
4729
4730         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4731         
4732         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4733         option is used.
4734
4735 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4738         is for method or field access.
4739
4740 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4741
4742         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4743         a Value to stdout.
4744
4745         * mini-llvm.c (mono_llvm_emit_method): Use it.
4746         
4747         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4748         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4749         on volatile values.
4750
4751         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4752         synchronized methods.
4753
4754         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4755
4756         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4757
4758         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4759         OP_LOADI8_MEM.
4760
4761         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4762         allowing some options to be set dynamically.
4763
4764 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4767         unconditional branch.
4768
4769         * mini.h (MonoTrampolineType): Add new trampoline type 
4770         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4771         compiled code.
4772
4773         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4774         function.
4775
4776         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4777         creation function.
4778
4779         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4780         is enabled. Instead, use the llvm vcall trampoline.
4781         
4782         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4783
4784         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4785         
4786         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4787         functions.
4788
4789         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4790         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4791
4792         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4793         OP_IA64_CSET opcode.
4794
4795         * mini.c: Fix a warning.
4796
4797         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4798         THROW to the appropriate llvm type.
4799
4800 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * mini.c (mini_method_compile): Add statistics for methods JITted
4803         with/without LLVM.
4804
4805 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4806
4807         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4808         OP_IA64_CMP_<cond>_IMM opcodes.
4809
4810 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4813         corlib exceptions.
4814
4815         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4816         correctly.
4817
4818         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4819         GENERICINST.
4820
4821 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4822
4823         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4824
4825 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4826
4827         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4828         support.
4829
4830         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4831         rgctx invoke trampolines for x86.
4832
4833         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4834         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4835         (mono_arch_get_vcall_slot): Simplify this.
4836
4837 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4840         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4841
4842 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4843
4844         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4845         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4846
4847         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4848
4849         * liveness.c (visit_bb): Remove a needless assert.
4850
4851 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4854         full aot support to the arch specific code.
4855
4856         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4857
4858         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4859
4860         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4861         
4862         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4863         collect information about the delegate invoke impl trampolines.
4864
4865         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4866         to save trampolines during full-aot mode.
4867
4868         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4869         creation function which returns a trampoline which sets the rgctx
4870         argument.
4871         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4872         wrapper if possible.
4873         (mono_delegate_trampoline): Ditto.
4874
4875         * mini.c (mono_jit_runtime_invoke): Ditto.
4876
4877         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4878         
4879         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4880
4881         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4882         
4883 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4886         just setting the opcode to OP_NOP.
4887
4888 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * mini.c (mini_method_compile): Put the last change inside an 
4891         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4892         
4893         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4894         and extend live ranges to cover the whole method when using xdb.
4895
4896         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4897         do it in the trampolines.
4898
4899         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4900         needed.
4901
4902         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4903         
4904         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4905         call code in full-aot mode since IMT is disabled there.
4906         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4907         new JIT no longer has that restriction.
4908
4909         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4910
4911         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4912         a more compact format.
4913         (mono_aot_wrapper_name): New function to return a unique name for a
4914         wrapper method, also used by the AOT runtime.
4915
4916         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4917         aot-compiler.c.
4918
4919         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4920         when a ICollection<T> etc is encountered.
4921         (add_generic_instances): Process method arguments/locals too.
4922         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4923         trampoline names.
4924
4925         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4926         
4927 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4930
4931         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4932
4933         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4934         representing the result of the decomposition. Nullify instructions
4935         instead of setting them to OP_NOP since nops can't have registers
4936         set.
4937
4938 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4939
4940         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4941         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4942         info. Strip 'mapping symbols' on ARM.
4943
4944         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4945         
4946         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4947         this with the native genmdesc.
4948
4949 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4950
4951         * aot-runtime.c:  Fixing the MSVC build.
4952
4953         Code is contributed under MIT/X11 license.
4954
4955 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4958         JITted code depends on it.
4959
4960 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4961
4962         * aot-compiler.c: Use new MonoGenericParam accessors.
4963
4964 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4965
4966         Reduce memory usage and improve correctness wrt MonoGenericParam
4967         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4968         handing.  Avoid allocating MonoGenericParams, but use the ones in
4969         the container itself.
4970
4971 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4972
4973         * tasklets.c: Return exceptions in the out argument.
4974
4975 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4978         opcode. Use pointer types in more places instead of casting them to 
4979         integers.
4980
4981         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4982         optimizations.
4983         (mono_llvm_optimize_method): New helper function to optimize a method.
4984
4985         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4986         widening code so it could be called from more places.
4987         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4988         code paths in the call opcodes.
4989
4990 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4991
4992         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4993
4994 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * dwarfwriter.c: Use _ to separate class name 
4997         components as gdb can't handle '.'. Represent reference variables
4998         as 'class <NAME>&'.
4999         
5000         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5001
5002         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5003         
5004         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5005
5006         * gc-test.cs: New file with GC stack marking tests.
5007         
5008         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5009         negative numbers for vfp.
5010
5011         * basic-float.cs: Add a test.
5012         
5013 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5014
5015         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5016
5017 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5018
5019         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5020         part of tasklet/continuation support.
5021
5022 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5025         amd64 opcodes inside an ifdef.
5026
5027         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5028         of complex types.
5029         
5030         * dwarfwriter.c (emit_type): Emit the class info for classes.
5031
5032 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5035
5036         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5037
5038         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5039
5040         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5041
5042 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5043
5044         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5045
5046         * mini-llvm.c: Update comments.
5047
5048         * mini.h (COMPILE_LLVM): New macro.
5049
5050         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5051
5052         * ssa.c (mono_ssa_compute): Ditto.
5053         
5054         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5055         the unwind ops from a DWARF FDE.
5056
5057         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5058         methods by extracting the dwarf unwind ops from the unwind info generated
5059         by LLVM.
5060         
5061         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5062         calls.
5063
5064         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5065         addressing modes.
5066
5067 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5068
5069         * Makefile.am (llvm_sources): Enable this.
5070
5071         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5072         failing back to the JIT if something cannot be handled.
5073
5074         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5075         compiling with LLVM.
5076
5077         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5078         compiling with LLVM.
5079
5080         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5081         compiling with LLVM.
5082
5083         * mini-ops.h: Add a few opcodes needed by LLVM.
5084
5085         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5086         has no unwind info.
5087
5088         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5089         backend.
5090
5091         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5092
5093         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5094
5095 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5096
5097         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5098         ridiculously large methods.
5099
5100 2009-03-31  Martin Baulig  <martin@ximian.com>
5101
5102         * debug-debugger.c (debugger_remove_breakpoint): Call
5103         mono_debugger_remove_class_init_callback ().
5104
5105 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5108         right before emitting code, not at the start.
5109
5110         * mini.c (mono_postprocess_patches): Extract this into a separate function
5111         from mono_codegen ().
5112
5113         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5114         byref types correctly.
5115
5116 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5119         by the last change.
5120
5121 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5124         indirect calls, this avoids problems where get_vcall_slot () would get
5125         confused by the native code for the instruction preceeding the call.
5126         (mono_arch_get_vcall_slot): Simplify this.
5127         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5128
5129         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5130         register allocator now seems to depend on them instead of the data in
5131         cpu-<ARCH>.md.
5132
5133         * mini.c (mini_method_compile): Throw the correct type of exception if
5134         mono_method_get_header () fails because of a loading error.
5135
5136 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * mini.c (mini_method_compile): Clear the loader error if the method
5139         header cannot be decoded.
5140
5141         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5142         interface methods on proxies correctly.
5143
5144         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5145         this argument for vtype methods. Add precise liveness info for arguments.
5146
5147         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5148         LIVERANGE_START/END opcodes.
5149
5150         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5151         for arguments and values in registers.
5152
5153 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5154
5155         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5156         return a valuetype. Fixes #487518.
5157
5158         * iltests.il: Add a test.
5159         
5160         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5161
5162         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5163         closed over a null reference correctly.
5164
5165 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5168
5169 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5170
5171         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5172         allocated to the same registers as fixed sregs.
5173
5174 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5175
5176         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5177         ATOMIC_CAS_IMM ops.
5178
5179         * method-to-ir.c: Handle more cases for
5180         Interlocked.CompareExchange.
5181
5182         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5183         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5184         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5185
5186 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * aot-runtime.c (decode_method_ref): Fix a warning.
5189
5190         * unwind.c (mono_unwind_frame): Ditto.  
5191
5192 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5195         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5196
5197         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5198         fix the handling of large values in the ALU_PC_G0_NC relocation.
5199
5200 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5201
5202         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5203
5204 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5205
5206         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5207         ops.
5208
5209 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5210
5211         * method-to-ir.c: MINI_OP3 needs a comma.
5212
5213         * method-to-ir.c, mini.h, mini.c: Remove
5214         mono_init_op_sreg_counts ().
5215
5216 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5219         OP_JMP.
5220         
5221         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5222         assertion.
5223
5224         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5225
5226         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5227         code somewhat.
5228
5229 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5230
5231         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5232         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5233         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5234         operations.
5235
5236 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5237
5238         * driver.c: Change location of gc_wrapper.h.
5239
5240         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5241         inside finally clauses correctly. Fixes #485721.
5242
5243         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5244         after the change above.
5245
5246         * exceptions.cs: Add a test.
5247         
5248 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5249
5250         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5251
5252         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5253         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5254         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5255
5256         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5257         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5258
5259 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5260
5261         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5262         Simplify logic for ensure_method_is_allowed_to_call_method. 
5263         Handle wrappers on callers.
5264
5265 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5266
5267         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5268         them don't run yet.
5269
5270         * basic-simd.cs: Fix the names of some test methods.
5271
5272 2009-03-18  Geoff Norton  <gnorton@novell.com>
5273
5274         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5275
5276 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5279
5280 2009-03-17  Jb Evain  <jbevain@novell.com>
5281
5282         * driver.c: remove now uneeded call to mono_gc_base_init before
5283         mono_profiler_load.
5284
5285 2009-03-17  Jb Evain  <jbevain@novell.com>
5286
5287         * dwarfwriter.c (token_handler): handle more cases.
5288
5289 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5290
5291         * method-to-ir.c: Remove more dead code (that was required only
5292         because of method_is_safe). Fix compiler warnings.
5293
5294 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5295
5296         * method-to-ir.c: Remove unneeded/useless method_is_safe
5297         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5298
5299 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5300
5301         * mini.c (mini_method_compile): Print the method been compiled with
5302         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5303         for people not familiar with the runtime.
5304
5305 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5308         a managed object which is later put into a GList. Return its class instead.
5309
5310         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5311         stack slots when using sgen.
5312
5313 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5316
5317 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5318
5319         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5320         > so it works on the first vreg as well.
5321
5322 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5325         trigger randomly.
5326
5327         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5328         
5329         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5330         implement GArray.
5331
5332 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5333
5334         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5335         native->IL offset mapping.
5336
5337 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5338
5339         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5340
5341         * basic.cs: Add a test.
5342
5343 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5344
5345         * mini-x86.c (mono_arch_output_basic_block): Use different
5346         registers in case the ones we want to overwrite are used by the
5347         other operand.  Fixes regression in #480807.
5348
5349 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5350
5351         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5352
5353         * dwarfwriter.c (emit_line_number_info): The line number info for
5354         IL code was off by one. Fix that.
5355
5356         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5357         stack.
5358
5359 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5360
5361         Contributed under the terms of the MIT/X11 license by Steven
5362         Munroe <munroesj@us.ibm.com>.
5363
5364         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5365         Fixes #483462.
5366
5367 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5370         as well.
5371
5372 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5375         the delegate ctor handling code. Fixes #482638.
5376         
5377         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5378         #481458.
5379
5380         * iltests.il.in: Add a test.
5381         
5382         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5383         mini-posix.c.
5384
5385 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5386
5387         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5388         is shared generic code, return the trampoline, even if the method
5389         has already been compiled.  Fixes #479763.
5390
5391         * mini.c, mini.h: New function
5392         mono_jit_find_compiled_method_with_jit_info() which is the same as
5393         mono_jit_find_compiled_method() but also returns the jit info.
5394
5395 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5396
5397         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5398         for methods which actually have one.  For all other methods, make
5399         sure the this argument var is live the whole method.
5400
5401         * mini.c (mini_method_compile): Every shared method has a
5402         this/vtable/mrgctx info.  Fixes #480807.
5403
5404 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5405
5406         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5407         generic/imt thunks where some entries branch through the vtable,
5408         while other entries branch directly.
5409
5410 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5413
5414         * mini-windows.c: Ditto.
5415         
5416         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5417         ctors.
5418
5419 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5420
5421         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5422         down an assert.
5423
5424 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5425
5426         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5427         #481403.
5428
5429 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5430
5431         * exceptions-x86.c: Include debug-mini.h - fixes build.
5432
5433 2009-03-04  Martin Baulig  <martin@ximian.com>
5434
5435         * debug-mini.c: Clean up the exception API and add documentation.
5436         (mono_debugger_handle_exception): New public method; this is
5437         called when throwing an exception or encountering an unhandled one.
5438         (mono_debugger_call_exception_handler): Formerly known as
5439         mono_debugger_handle_exception(); this is used to tell the
5440         debugger that we're about to invoke an exception handler.
5441
5442 2009-03-04  Martin Baulig  <martin@ximian.com>
5443
5444         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5445         ../metadata/mono-debug-debugger.c; save and reset exception state.
5446
5447 2009-03-02  Martin Baulig  <martin@ximian.com>
5448
5449         * debug-mini.c: Moved the debugger exception handling here from
5450         ../metadata/mono-debug-debugger.c.
5451
5452         * debug-mini.h
5453         (MonoDebuggerExceptionAction): New exception typedef.
5454
5455         * debug-mini.c
5456         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5457
5458         * exceptions-amd64.c
5459         (mono_amd64_throw_exception): Use the new debugger exception
5460         handling code.
5461
5462         * mini-exceptions.c
5463         (mono_handle_exception_internal): Don't call
5464         mono_debugger_unhandled_exception() here.
5465
5466 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * mini.c aot-compiler.c: Update after the changes to 
5469         mono_marshal_get_runtime_invoke ().
5470
5471         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5472         Virtual generic methods might not have method->slot set, work around
5473         that.
5474
5475         * generics.cs: Add a test.
5476
5477 2009-03-02  Geoff Norton  <gnorton@novell.com>
5478
5479         * mini.c:
5480         * driver.c: Allow signal chaining of SIGFPE as well.
5481
5482 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5485         this since it now receives the method not its generic context in the
5486         IMT reg.
5487
5488         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5489         generic/imt thunks where some entries branch through the vtable, while
5490         other entries branch directly.
5491
5492         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5493
5494         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5495         support for interface methods as well.
5496
5497         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5498         using the normal IMT thunks.
5499
5500         generics.cs: Add new tests.
5501         
5502         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5503         the generic inst to the generic imt thunks. This fixes AOT support, 
5504         improves consistency with the normal IMT thunks, and makes it easier to
5505         add support for interface generic virtual methods later.
5506
5507         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5508         
5509 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5510
5511         * driver.c (mono_set_signal_chaining): New public API function to enable
5512         signal chaining on POSIX platforms.
5513
5514         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5515         (si@lindenlab.com) to implement signal chaining. The original patch was
5516         contributed under the MIT X/11 license:
5517         https://bugzilla.novell.com/show_bug.cgi?id=318894
5518
5519 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5522         too until it can be made to run on amd64.
5523
5524 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5527         to  get_generic_context_from_code () + get_call_info () if possible.
5528
5529 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5532         suspend-on-sigsegv functionality.
5533
5534         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5535         to suspend when a native SIGSEGV is received. This is useful for debugging
5536         crashes which don't happen under gdb, since a live process contains more
5537         information than a core file.
5538
5539         * mini-exceptions.c (mono_print_thread_dump): Use 
5540         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5541
5542         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5543
5544         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5545         
5546         * basic-float.cs: Disable the tests which currently fail on amd64.
5547
5548         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5549         value to mono_arch_patch_callsite () to fix crashes.
5550         
5551         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5552
5553 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5554
5555         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5556         nop code by patching the call address to point to the nullified class init
5557         trampoline, as the former does not seem to be safe on SMP machines.
5558
5559 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5560
5561         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5562         they were wrong.
5563
5564 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * basic-float.cs basic-calls.cs: Fix warnings.
5567
5568 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5569
5570         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5571         correct frame pointer in the LMF.  Should fix #478394.
5572
5573 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5574
5575         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5576
5577         * image-writer.c: Make the binary writer less verbose.
5578
5579 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5582         are called from runtime invoke wrappers.
5583
5584 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * cpu-ppc.md (store_memindex): Increase the size of this.
5587
5588 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5589
5590         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5591
5592         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5593
5594         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5595         OP_LCONV_TO_R_UN.
5596
5597         Last fix for of #467201.
5598
5599
5600 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5601
5602         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5603
5604         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5605         and long_conv_to_r8_2:
5606
5607         Fixed part of #467201.
5608
5609 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5612
5613         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5614         conversion to 32 bits.
5615
5616         * cpu-x86.md: Increase the size of int_conv_to_r4.
5617
5618         * basic-float.cs: Add a test for this.
5619
5620         Fixed part of #467201.
5621
5622 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5623
5624         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5625
5626         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5627         conversion to 64 bits.
5628
5629         * basic-float.cs: Add a test for this.
5630
5631         Fixed part of #467201.
5632
5633 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5634
5635         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5636
5637         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5638         This behavior is compatible with MS.
5639
5640         * iltest.il.in: Add a test for this.
5641
5642         Fixed part of #467201.
5643
5644 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5645
5646         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5647
5648         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5649         change the precision of the value.
5650
5651         * cpu-x86.md: Define len for float_conv_to_r4.
5652
5653         * basic-float.cs: Add a test for this.
5654
5655         Fixed part of #467201.
5656
5657 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5658
5659         * mini.c: Adjust locking order to the new semantics where the loader lock
5660         comes first.
5661
5662 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5663
5664         * aot-runtime.c:
5665         * mini-amd64.c:
5666         * mini-arm.c:
5667         * mini-ia64.c:
5668         * mini-mips.c:
5669         * mini-ppc.c:
5670         * mini-sparc.c:
5671         * mini-trampolines.c:
5672         * mini-x86.c:
5673         * mini.c:
5674         * tramp-alpha.c:
5675         * tramp-amd64.c:
5676         * tramp-arm.c:
5677         * tramp-hppa.c:
5678         * tramp-ia64.c:
5679         * tramp-mips.c:
5680         * tramp-ppc.c:
5681         * tramp-s390.c:
5682         * tramp-s390x.c:
5683         * tramp-sparc.c:
5684         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5685
5686 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5689         as it is incorrect.
5690
5691 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5692
5693         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5694         for cctors if needed.
5695
5696 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5697
5698         * mini-ppc.c: Fix build on Darwin.
5699
5700 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5703         version instead of 3 as valgrind doesn't like version 3.
5704
5705         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5706
5707         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5708         usable for hashing methods.
5709         (emit_extra_methods): Use the new hash to avoid putting every method in the
5710         same hash bucket.
5711
5712         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5713
5714         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5715         whenever a method ref could match a method.
5716         
5717         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5718         test to fail.
5719         
5720         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5721         methods refs.
5722
5723         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5724
5725         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5726         the encoding buffer.
5727
5728         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5729         mono_method_get_header () on inflated methods as an optimization.
5730
5731 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * ssa.c (fold_ins): Fix another crash if the instruction following the
5734         switch was optimized away.
5735
5736 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5737
5738         Contributed under the terms of the MIT/X11 license by Steven
5739         Munroe <munroesj@us.ibm.com>.
5740
5741         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5742
5743 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5746         around the mono_domain_alloc calls, it is now done by the functions
5747         themselves.
5748
5749         * aot-compiler.c (compile_method): Only add wrappers referenced by
5750         the method if compiling with full AOT.
5751         (mono_compile_assembly): Error out if --aot=full is specified on
5752         a platform where it is not supported.
5753
5754         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5755         on ARM too.
5756
5757         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5758         AOT support.
5759
5760         * aot-runtime.c (load_named_code): Handle 
5761         mono_arm_throw_exception_by_token.
5762
5763         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5764
5765         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5766         unaligned.
5767
5768         * Makefile.am (fullaotcheck): Exit if a test fails.
5769
5770         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5771         on ARM.
5772         (mono_compile_assembly): Handle the assembler failing.
5773
5774         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5775         accepting subsections of .bss.
5776
5777         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5778         was optimized away.
5779
5780         * aot-compiler.c: Remove some unused includes.
5781         
5782         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5783         now in MonoImageWriter.
5784
5785         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5786         code sequence which matches a non-virtual call. Fixes #472654.
5787
5788 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5789
5790         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5791         xdebug code.
5792         
5793         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5794         use the image/dwarf writers directly.
5795
5796         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5797         field.
5798
5799         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5800         MonoDwarfWriter.
5801
5802         * image-writer.h: Fix some typos.
5803
5804         * dwarfwriter.h dwarfwriter.c: New files.
5805         
5806         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5807         separate module.
5808
5809         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5810         argument to return unwind info.
5811
5812         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5813
5814         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5815         
5816         * aot-runtime.c (decode_method_ref): Add a case for 
5817         MONO_AOT_METHODREF_WRAPPER_NAME.
5818
5819         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5820         for AOT.
5821
5822         * aot-compiler.c (encode_method_ref): Use the new constants.
5823
5824         * aot-runtime.c (decode_method_ref): Ditto.
5825
5826         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5827         be compiled, not the icall itself.
5828
5829 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5832         using decode_method_ref ().
5833
5834         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5835         convert it to an in32. Fixes #475859.
5836
5837         * arrays.cs: Add a test.
5838
5839 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5840
5841         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5842         OP_LCONV_TO_U2.
5843
5844         * basic-long.cs: Add a test.
5845
5846 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5847
5848         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5849         remove the frame pointer in leaf methods which don't receive any
5850         arguments, don't throw exceptions and don't do dynamic stack
5851         allocations.
5852
5853 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5856         the fail_tramp changes. Hopefully fixes #475132.
5857
5858 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5861         instead of mono_metadata_signature_dup_full.
5862
5863 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5866         for processing jump tables. Fixes #473787.
5867
5868 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5869
5870         * mini-generic-sharing.c: mini_method_get_context() just calls
5871         mono_method_get_context_general() now.
5872
5873         * mini.c, mini.h: Moved get_object_generic_inst(),
5874         construct_object_context_for_method() and
5875         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5876
5877 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5880         basic block fell through to its successor bblock without a branch. Fixes
5881         #474718.
5882
5883         * iltests.il.in: Add a test.
5884         
5885         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5886         (can_encode_patch): We can now handle arrays of generic parameters and
5887         array methods.
5888
5889         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5890
5891         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5892         the AOT file to avoid some #ifdefs in aot-runtime.c
5893
5894         * mini.h: Bump AOT file format version.
5895
5896 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5897
5898         * Makefile.am (fullaotcheck): Make this run the tests.
5899
5900         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5901
5902 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5903
5904         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5905         individually.  Fixes #473482.
5906
5907 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5910
5911 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5912
5913         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5914         (mono_compile_assembly): Hush compile warnings about
5915         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5916         code path.
5917
5918 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5921
5922         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5923
5924         * aot-compiler.c: Fix arm support.
5925
5926         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5927         img_writer_emit_unset_mode () function.
5928
5929         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5930         (mono_unwind_get_dwarf_pc_reg): Ditto.
5931
5932         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5933         Move almost all platform specific code to a set of arch_ functions, 
5934         and document them to ease porting.
5935         
5936         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5937
5938         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5939
5940         * aot-compiler.c: Extract the image writing functionality into a separate
5941         module to reduce the size of this file.
5942
5943 2009-02-09  Geoff Norton  <gnorton@novell.com>
5944
5945         * mini-s390.c: Fix the signature of emit_sig_cookie.
5946
5947 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5950
5951         * aot-runtime.c (is_shared_got_patch): Ditto.
5952
5953         * aot-runtime.c (load_named_code): Cope with the fact that 
5954         decode_got_entry () won't decode the patch fully if its corresponding got
5955         entry is already filled.
5956         
5957         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5958         Initialize *ji.
5959         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5960
5961         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5962         as the moving pointer instead of 'buf' for consistency with the rest of the
5963         codebase.
5964         (mono_arch_create_monitor_exit_trampoline): Ditto.
5965
5966         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5967         generic_class_init trampolines.
5968         (add_generic_class): Extract some code from add_generic_instances () into a
5969         separate function so it can be called from other places too.
5970         (compile_method): Call add_generic_class () for the classes of inflated methods
5971         referenced by the method.
5972         (can_encode_patch): Allow references to generic parameters.
5973
5974         * aot-runtime.c: Add support the patches required by the new trampolines.
5975         
5976         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5977         support.
5978
5979         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5980         full-aot support.
5981
5982         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5983         this from get_throw_pending_exception, make the signature full aot compatible.
5984
5985         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5986
5987         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5988
5989         * exceptions.cs: Add a test.
5990
5991 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5994         use the DWARF_DATA_ALIGN constant instead.
5995
5996         * exception-<ARCH>.c: Update after the above change.
5997
5998         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5999         dwarf unwinder.
6000
6001         * mini-arm.c: Enable the dwarf unwinder.
6002
6003         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6004         instead of mono_class_setup_vtable ().
6005
6006 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6007
6008         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6009         dwarf unwinder.
6010
6011         * mini-x86.h: Enable the dwarf unwinder.
6012
6013 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6014
6015         Fix mcs/tests/test-7.cs
6016         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6017         2009-02-03.
6018
6019 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * mini.c (print_jit_stats): Remove some unused statistics.
6022
6023 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6024
6025         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6026
6027 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6028
6029         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6030         the method we get from mono_object_get_virtual_method() because
6031         that function does it properly, now.
6032
6033 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6036         opcodes. Fixes #472775.
6037
6038 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6039
6040         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6041         fact that mono_find_jit_info() sometimes returns the context
6042         corresponding to the jit info in new_ctx.  Fixes #472600.
6043
6044 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6047         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6048         klass->enum_basetype directly.
6049
6050         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6051         enum subtypes.
6052
6053         * unwind.c: Avoid 0 sized arrays.
6054
6055 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6056
6057         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6058         size on systems with 64k pages. Fixes #471389.
6059
6060 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6061
6062         Contributed under the terms of the MIT/X11 license by Steven
6063         Munroe <munroesj@us.ibm.com>.
6064
6065         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6066         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6067         necessary.
6068
6069 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6070
6071         Contributed under the terms of the MIT/X11 license by Steven
6072         Munroe <munroesj@us.ibm.com>.
6073
6074         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6075         comparison fix.
6076
6077         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6078         The trampoline can be longer on PPC64.
6079
6080 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6081
6082         Contributed under the terms of the MIT/X11 license by Steven
6083         Munroe <munroesj@us.ibm.com>.
6084
6085         * mini-ppc.c: Compiler warning fixes and trivial code
6086         simplifications.
6087
6088 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6089
6090         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6091         ins->dreg which could be a hardware register, not a vreg.
6092
6093         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6094         
6095         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6096         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6097
6098         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6099         
6100         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6101         ->dreg, that is not the vreg we are looking for.
6102
6103         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6104
6105         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6106         LIVERANGE_END.
6107
6108         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6109         strange crashes.
6110
6111 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6114
6115         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6116         the line diff is 0.
6117
6118         * aot-compiler.c: Add xdebug support on x86.
6119
6120         * unwind.c: Add x86 support.
6121         
6122         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6123         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6124
6125         * mini.c (mini_method_compile): Ditto.
6126         
6127         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6128         the variable index.
6129
6130         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6131         which mimic .push_section/.pop_section in GAS.
6132         
6133         * aot-compiler.c: Emit precise live range information for variables.
6134
6135         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6136
6137         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6138         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6139         them.
6140
6141         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6142         the live ranges of variables.
6143
6144         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6145         of the variable in terms of native offsets.
6146
6147 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6148
6149         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6150         
6151 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6152
6153         Contributed under the terms of the MIT/X11 license by Steven
6154         Munroe <munroesj@us.ibm.com>.
6155
6156         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6157         order (offset then base reg) for ppc_load_multiple_regs.
6158         (emit_save_saved_regs) Correct operand order for
6159         ppc_store_multiple_regs.
6160         (mono_arch_get_call_filter): Correct operand order for
6161         ppc_load_multiple_regs.
6162
6163         * mini-ppc.c (emit_memcpy): Fix operand order for
6164         ppc_load_reg_update and ppc_store_reg_update.
6165         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6166         (mono_arch_emit_epilog): Correct operand order for
6167         ppc_load_multiple_regs.
6168
6169         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6170         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6171
6172 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6173
6174         * cpu-ppc64.md: Fixed storer4_memindex length.
6175
6176 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6177
6178         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6179         line number info.
6180         
6181         * aot-compiler.c (emit_line_number_info): Optimize this.
6182
6183 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6186         
6187         * aot-compiler.c: Add debug info for methods without debug info by
6188         emitting an IL file and having the line number info referencing that file.
6189
6190         * aot-compiler.c: Optimize the size of the generated line number info.
6191
6192         * aot-compiler.c: Emit line number info in xdebug mode.
6193
6194         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6195         million arguments.
6196
6197 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6198
6199         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6200
6201         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6202         is used.
6203
6204 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6205
6206         * basic-calls.cs: Test for the weird crash found on arm.
6207         
6208 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6209
6210         * cpu-arm.md: Increase the size of storer8_membase_reg and
6211         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6212
6213         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6214         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6215         reg to LR otherwise we'll be loading/storing from just the offset.
6216
6217 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6218
6219         Question: if we are storing gint32's inside the "*native_offset",
6220         should we change the signature to "gint32 *native_offset" to
6221         ensure that we do not have type definition problems?
6222         
6223         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6224         an int * as this is what the other function expects, causes
6225         problems with Freescale's compiler that defined int32_t to be a
6226         long and makes int incompatible 
6227
6228 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6229
6230         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6231         filename conflict with bjam.
6232
6233 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6234
6235         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6236         as it might use decomposed ops.
6237
6238 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6239
6240         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6241
6242         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6243         is defined.
6244
6245         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6246
6247         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6248         offsets.
6249
6250         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6251         way registers are stored in MonoContext on arm.
6252
6253         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6254         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6255
6256         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6257
6258         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6259
6260         * mini.c (mini_init): Register mono_isfinite.
6261
6262         * jit-icalls.c (mono_isfinite): New jit icall.
6263
6264         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6265         
6266         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6267         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6268         the parent frame.
6269
6270 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6273         separate frame and stack pointers, so we must use FP to find the register
6274         spill area.
6275         The FP reg is retrieved from the MonoContext::regs array.
6276
6277 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6280         as FPA requires it.
6281
6282 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6283
6284         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6285         return R4 and R8 when not running under softfloat.
6286
6287         Fixes basic-calls.exe
6288
6289 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * mini-arm.c: Implement some overflow opcodes.
6292
6293 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6294
6295         * ssa.c: handle another alloca.h
6296
6297         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6298         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6299         MONO_ARCH_USE_SIGACTION. 
6300
6301         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6302         capability defines.
6303
6304         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6305
6306         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6307         PPC targets as sigaction does not exist on all platforms, define
6308         this on a per-platform basis.
6309
6310         Instead of erroring out if the platform is not defined, include
6311         mini-ppc-os.h, and expect that the OS specific setting provides
6312         the required information.   
6313
6314 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * aot-compiler.c: Fix --enable-minimal=aot.
6317
6318 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6321         previous change.
6322
6323 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6324
6325         * exceptions-arm.c: Fix warnings.
6326
6327         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6328         ARM.
6329
6330         * mini-x86.c: Fix --enable-minimal=jit build.
6331
6332         * mini.c: Really fix --enable-minimal=jit build.
6333         
6334         * mini.c (construct_object_context_for_method): Move this outside
6335         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6336
6337         "Backported" of r124984 from 2.0 branch.
6338         
6339         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6340
6341         "Backport" of r124977 + r124978 from 2.0 branch.
6342         
6343         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6344         to avoid calling mono_exception_from_token () from the throw trampoline.
6345         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6346         for throwing corlib exceptions, this fixes full-aot support for corlib
6347         exceptions.
6348
6349         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6350
6351 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6352
6353         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6354         part of the changes to split the code in mini into operating
6355         system specific files.
6356
6357         This patch was done by copying mini.c to the respective files to
6358         preserve SVN history.
6359
6360 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6363
6364 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6367         remoting-invoke-with-check wrappers of shared methods.
6368
6369         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6370
6371 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6372
6373         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6374         optimization if the top of stack is the last instruction in the
6375         bblock.  Otherwise it might have been used after its definition.
6376         Fixes #469742.
6377
6378 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6379
6380         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6381         method as well when get_vcall_slot () fails to match a code sequence.
6382
6383         * mini-arm.c: Fix the android build, which doesn't have
6384         __aeabi_read_tp.
6385
6386 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6389         the s390x build.
6390
6391 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6394
6395 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6398         and put its id into jinfo->used_regs. This is only used on amd64,
6399         which is currently the only platform generating unwind info.
6400
6401         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6402         the dwarf unwinder. This is required to correctly handle async exceptions
6403         like thread abort and stack overflows, which can happen while a method
6404         is in the middle of its prolog or epilog.
6405         
6406         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6407         the unwind info belonging to an AOTed method.
6408
6409         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6410         into cfg->unwind_ops.
6411         
6412         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6413
6414         * mini.c (mini_init): Call mono_unwind_init ().
6415         (mini_cleanup): Call mono_unwind_cleanup ().
6416
6417         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6418         unwind info to be shared between methods.
6419
6420         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6421         saved in the LMF.
6422
6423         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6424         get_throw_pending_exception () to avoid initialization races.
6425
6426         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6427         mono_arch_exceptions_init () function.
6428
6429         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6430
6431 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6432
6433         * mini.c (mono_get_domain_intrinsic): New helper function.
6434         (mono_get_thread_intrinsic): Ditto.
6435
6436         * mini-arm.c mini-ia64.c: Use the new helper functions.
6437         
6438         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6439         the last constrained_call change, since it is needed in the non-AOT
6440         case as well.
6441
6442         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6443         
6444         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6445         mono_get_lmf_addr () on arm eabi linux.
6446
6447 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6448
6449         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6450         code sequence which matches a non-virtual call.
6451
6452 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6453
6454         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6455         stack pointer (r1).
6456
6457 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6458
6459         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6460         runtime-invoke wrappers, since they are also shared based on signature.
6461
6462 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6463
6464         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6465         info from the (correct) context.
6466
6467 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6468
6469         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6470         
6471         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6472         using dwarf unwinding info. Not yet used.
6473
6474         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6475
6476 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6477
6478         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6479         descriptors.
6480
6481         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6482         special case and handle mono_arch_delegate_invoke_impl() returning
6483         function descriptors.
6484
6485         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6486         trampolines return function descriptors, too.
6487
6488 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6491         out_of_line optimization.
6492
6493 2009-01-21  Martin Baulig  <martin@ximian.com>
6494
6495         * mini.h
6496         (MonoCompile): Added `disable_deadce_vars' to disable removing
6497         unused variables.
6498
6499         * mini.c
6500         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6501         inside the debugger.
6502
6503         * liveness.c (mono_analyze_liveness): Don't remove any unused
6504         variables if `cfg->disable_deadce_vars' is set.
6505
6506 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6507
6508         * method-to-ir.c: Only apply exception constructor optimization if
6509         the the method actually belongs to an exception class.  Fixes
6510         #467456.
6511
6512 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6515         change inside a #ifdef __mono_ppc64__.
6516
6517         * aot-compiler.c (compile_method): Remove the previous limitation.
6518
6519         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6520         on type variables in AOTed code.
6521         
6522         * aot-compiler.c (compile_method): Skip generic methods having type 
6523         constraints on their generic parameters.
6524
6525         * aot-compiler.c (compile_method): Check for methods which cannot be
6526         encoded inside RGCTX_FETCH patches as well.
6527
6528         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6529         build.
6530
6531 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6532
6533         * method-to-ir.c: Force the vtable variable in shared generic code
6534         for the case that they might show up on a stack trace where they
6535         are needed.
6536
6537         * mini-exceptions.c: Save and use generic sharing info as well as
6538         IP in stack traces to resolve shared generic instantiations.
6539
6540 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6543         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6544
6545 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6546
6547         * method-to-ir.c: Do generic sharing for array constructors.
6548
6549 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6550
6551         * mini-exceptions.c (mono_print_thread_dump): Add information
6552         about the thread state using wapi_current_thread_desc.
6553
6554 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6555
6556         * basic-simd.cs: Tests for the new constructors. 
6557
6558 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         * mini-ops.h: Added OP_EXPAND_*
6561
6562         * cpu-x86.md: Same.
6563
6564         * mini-x86.c (mono_arch_output_basic_block): Same.
6565         
6566         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6567
6568 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * iltests.il.in: Add a test for #467385.
6571
6572 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6573
6574         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6575         thread been cleaned up is not the same currently in execution.
6576
6577         Fixes appdomain-unload crashes on windows, osx and linux variants
6578         without the __thread keyword.
6579
6580 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6583         (koush@koushikdutta.com). Implement this for android.
6584
6585         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6586         begins with a digit.
6587
6588         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6589         mono_marshal_get_write_barrier ().
6590
6591 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6594         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6595         that pass them on a register pair.
6596
6597         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6598         test was crashing due to that.
6599
6600 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6601
6602         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6603         trampoline code. Include ucontext.h only if available.
6604
6605 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6606
6607         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6608         and doesn't check whether it's sharable, like it was before
6609         removing the shared generics hash.  This brings IronPython
6610         performance back to what it was before that change.
6611
6612 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6613
6614         * method-to-ir.c: Handle delegate invocation optimization earlier,
6615         otherwise it would be handled (much more slowly) by the
6616         final/sealed optimization.
6617
6618 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6619
6620         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6621         domain is not set. Fixes #465864.
6622
6623 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6624
6625         * method-to-ir.c: Don't stop sharing of generic methods with catch
6626         clauses - we already handle those.
6627
6628 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6629
6630         * mini.c, mini.h: lookup_generic_method() is now
6631         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6632         making the shared_generics_hash obsolete.
6633
6634 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6635
6636         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6637         use the red zone.  Make room on the stack first and then use it,
6638         not the other way around.
6639
6640 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6641
6642         * mini.c (mini_init): Call mono_xdebug_init ().
6643
6644         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6645
6646 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6647
6648         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6649
6650         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6651         trampolines.
6652
6653         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6654         debug+unwind info for trampolines.
6655
6656         * mini.c (mono_create_unwind_op): New helper function.
6657
6658         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6659
6660 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6661
6662         * aot-compiler.c: Fix the build.
6663
6664 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6665
6666         * Makefile.am: Update dtrace-prelink.sh location.
6667
6668 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6669
6670         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6671         optimization. Fixes #464520.
6672
6673 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6674
6675         * mini-amd64.c : Adding code to save/restore non-volatile registers
6676            on Winx64.
6677
6678         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6679           registers on Winx64.
6680
6681         Contributed under MIT/X11 license.
6682
6683 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6684
6685         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6686         __GNUC_MINOR__ which can break when the major version changes.
6687
6688 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6689
6690         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6691
6692 2009-01-07  Geoff Norton  <gnorton@novell.com>
6693
6694         * helpers.c:  Allow mono -v -v -v to work on darwin.
6695
6696 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6697
6698         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6699           pattern. 
6700
6701         Contributed under MIT/X11 license.
6702
6703 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6706         instead of directly accessing type->data.klass. Fixes #462016.
6707         (mono_allocate_stack_slots_full): Ditto.
6708
6709         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6710         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6711
6712         * aot-compiler.c (emit_plt): Fix ARM build.
6713
6714 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6717         
6718         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6719         change.
6720
6721         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6722         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6723         #463357.
6724
6725         * iltests.il.in: Add a regression test.
6726
6727 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6728
6729         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6730
6731 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * basic-simd.cs: Add a regression test for #462457.
6734
6735 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6736
6737         * mini-ops.h: Add a definition of XPHI.
6738
6739         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6740
6741         * ssa.c (op_phi_to_move): Handle XPHI.
6742
6743         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6744
6745         Fixes #462457
6746
6747 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6748
6749         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6750
6751 2008-12-31  Geoff Norton  <gnorton@novell.com>
6752
6753         * mini-ppc.c: The prolog size allocated can be too small for darwin
6754         ppc32 under certain circumstances.  Also fix a small logic bug.
6755
6756 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6759         while loading AOT methods.
6760
6761         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6762         since only the former is nulled out after a successful cast. This prevents
6763         crashes with rethrown exceptions when using --debug=casts.
6764
6765 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6766
6767         * mini.h: New macro for checking whether a method is final,
6768         i.e. whether the method or its class is marked final.
6769
6770         * method-to-ir.c: Use the new macro for all final-checks
6771         consistently.  Fixes the crash in the System.ServiceModel tests.
6772
6773 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini-exceptions.c (get_exception_catch_class): Corrected another
6776         overly strict assertion.
6777
6778 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6779
6780         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6781         Clobbering it is not allowed because the caller might use it as
6782         the vtable register in the interface call.
6783
6784 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6785
6786         * mini-exceptions.c (get_exception_catch_class): Corrected an
6787         overly strict assertion.
6788
6789 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6790         
6791         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6792
6793         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6794
6795         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6796
6797         * cpu-mips.md: correct lengths for certain long_ opcodes.
6798
6799         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6800
6801         * 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().
6802         
6803 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6804
6805         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6806         
6807 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6808         
6809         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6810         
6811 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6812
6813         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6814         next basic block.
6815         
6816 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6817
6818         * 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
6819
6820         * 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)
6821         
6822 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6823         
6824         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6825         
6826 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6827
6828         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6829         gshared code. Fixes #458947.
6830
6831         * generics.cs: Add a test.
6832
6833 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6834         
6835         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6836         
6837         * mini-mips.c: first pass n32 code generation.
6838
6839         * mini-mips.h: datatypes and defines for n32 support.
6840
6841         * exceptions-mips.c: first pass n32 code generation.
6842         
6843         * tramp-mips.c: first pass n32 code generation.
6844         
6845         * cpu-mips.md: add long_ opcodes.
6846         
6847 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6848
6849         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6850
6851         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6852         
6853         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6854         
6855         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6856
6857         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6858
6859         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6860
6861         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6862
6863         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6864
6865         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6866
6867 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6870
6871 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6872
6873         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6874
6875 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6876
6877         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6878         descriptors for helper functions directly in front of the code.
6879
6880 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6881
6882         * method-to-ir.c: Removed an unnecessary assertion.
6883
6884 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * method-to-ir.c: Merge SGEN changes from the old JIT.
6887
6888 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * driver.c (compile_all_methods_thread_main): Handle failure of
6891         mono_get_method ().
6892
6893 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6894
6895         * mini-ppc.c: Merged with mini-ppc64.c.
6896
6897         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6898
6899         * Makefile.am: Use the same sources for PPC and PPC64.
6900
6901         * mini-ppc64.c: Removed.
6902
6903 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6904
6905         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6906         code to mono_bb_is_fall_through.
6907         
6908         * branch-opts.c (mono_remove_critical_edges): Same.
6909
6910 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6911
6912         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6913         expect that an OP_BR_REG will be there.
6914
6915 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6918         for the many branch ops. The original check miss OP_BR_REG.
6919
6920         Fixes #457574.
6921         
6922 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6923
6924         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6925
6926 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6929         while holding the aot lock.
6930
6931 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6932
6933         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6934         
6935 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6936
6937         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6938           to release all runtime callable wrappers held by the runtime.
6939
6940         Contributed under MIT/X11 license.
6941
6942 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6943
6944         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6945           for Winx64.
6946
6947         Contributed under MIT/X11 license.
6948
6949 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6950
6951         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6952         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6953
6954 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6955
6956         * cpu-mips.md: fix ckfinite length
6957
6958         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6959         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6960         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6961         
6962 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6963
6964         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6965         
6966 2008-12-08  Geoff Norton  <gnorton@novell.com>
6967
6968         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6969         size by 8 bytes as well.
6970
6971 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6972
6973         * basic-simd.cs: Fix method names for Vector16b.
6974         
6975 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6976
6977         * basic-simd.cs: Fix method names for Vector16sb.
6978
6979 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6980
6981         * basic-simd.cs: Fix method names for Vector8us.
6982         
6983 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6984
6985         * basic-simd.cs: Fix method names for Vector8s.
6986         
6987 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6988
6989         * basic-simd.cs: Fix method names for Vector4ui.
6990
6991 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * basic-simd.cs: Fix method names for Vector2l.
6994
6995 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6996
6997         * basic-simd.cs: Fix method names for Vector2d.
6998
6999 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7002         that are extension methods.
7003
7004 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7005
7006         * basic-simd.cs: Fix method names for Vector4f.
7007
7008 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7009
7010         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7011         as such. Fixes #456669.
7012
7013 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7014
7015         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7016         
7017 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7018
7019         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7020         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7021         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7022         (mips_adjust_stackframe): handle FP spills
7023                 
7024         * mini-ops.h: add mips_mtc1_s2
7025         
7026         * cpu-mips.md: add mips_mtc1_s2
7027         
7028 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * unwind.c: New file, move the unwind info encoding functions here from
7031         aot-compiler.c, so they could be used at runtime too.
7032
7033 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7034
7035         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7036         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7037         
7038 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7039
7040         * mini-mips.c: cleanup warnings
7041         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7042         (mips_adjust_stackframe): handle case of taking the address of stack locals
7043         
7044 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * aot-compiler.c: Implement a few functions missing from the asm writer.
7047         (emit_method_code): Only write symbols for methods when using the bin
7048         writer, since the assembler can't deal with the characters in our method
7049         names.
7050
7051         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7052
7053         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7054         call.
7055
7056         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7057         a bit to also restore %rax.
7058
7059 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7060
7061         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7062
7063 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7064
7065         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7066         arguments.
7067
7068 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7069
7070         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7071
7072         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7073         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7074
7075         * exceptions-ppc64.c: Removed.
7076
7077         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7078
7079 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7080
7081         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7082         tramp-ppc64.c.
7083
7084         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7085
7086         * tramp-ppc64.c: Removed.
7087
7088 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7089
7090         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7091         the TYPESPEC table.
7092
7093 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7094
7095         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7096
7097         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7098         mini-ppc.h instead of mini-ppc64.h.
7099
7100         * mini-ppc64.h: Removed.
7101
7102 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7103
7104         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7105         
7106         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7107         
7108 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7109
7110         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7111         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7112         code easier.
7113
7114 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7117
7118 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7119
7120         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7121
7122 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7123
7124         * basic-simd.cs: Tests for operator == and != on Vector4f.
7125
7126 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7129
7130         * simd-intrinsics.c: Kill useless enum.
7131
7132 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7133
7134         * cpu-mips.md: add long_conv_to_ovf_i4_2
7135         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7136
7137 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7138
7139         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7140         
7141         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7142
7143 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7144
7145         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7146         
7147 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7148
7149         * basic-simd.cs: Add tests for new methods.
7150
7151 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7152
7153         * simd-intrinsics.c: Add support for operator == and !=
7154         on Vector4(u)i.
7155
7156         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7157
7158 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7159
7160         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7161
7162 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7163
7164         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7165
7166         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7167         MONO_PATCH_INFO_ICALL_ADDR.
7168
7169         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7170
7171         * aot-compiler.c: Resurrect full-aot support.
7172
7173 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7174
7175         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7176         
7177 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7178
7179         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7180         
7181 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7182
7183         * basic-simd.cs: Fix tests to work under ppc.
7184         Remove tests for methods that will be removed.
7185
7186 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7187
7188         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7189         generic type (via a typedef or typeref) correctly.
7190
7191 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7192
7193         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7194         diagnose an assertion failure.
7195
7196 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7197
7198         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7199         Fix trampoline size.
7200
7201         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7202         conversion opcodes are implemented natively instead via emulation.
7203
7204 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7205
7206         * cpu-mips.md: remove mips_xori
7207
7208         * mini-ops.h:  remove mips_xori
7209
7210         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7211
7212         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7213         
7214         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7215         
7216 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7217
7218         * cpu-mips.md: fix instruction lengths.
7219
7220         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7221
7222         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7223
7224         * mini-ops.h: fix slti / sltiu op profiles.
7225         
7226 2008-12-02  Martin Baulig  <martin@ximian.com>
7227
7228         * method-to-ir.c (mono_method_to_ir): Disable debugging
7229         information for the init locals block to make the debugger stop
7230         after all locals have been initalized.
7231
7232 2008-12-02  Martin Baulig  <martin@ximian.com>
7233
7234         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7235         running inside the debugger.
7236
7237 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7238
7239         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7240         is enabled.
7241
7242         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7243         alu->alu imm optimization which only shows if deadce is disabled.
7244
7245         * aot-compiler.c: Rename the function names for the binary and asm writers
7246         so they can coexist in the same process. Rework the xdebug code to use the
7247         asm writer. This avoids the need to call into the runtime to dump the
7248         debugging info. Add more debugging info for types.
7249
7250         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7251
7252         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7253         cpu description tables, they can't occur in cpu-<ARCH>.md.
7254
7255         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7256         the stack in CEE_LDFLDA. Fixes #450542.
7257
7258         * generics.cs: Add a new test.
7259
7260 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7261
7262         * mini-ops.h: updated MIPS opcodes
7263         * mini-mips.c: decompose long opts
7264         * mini-mips.h: decompose long opts
7265         
7266 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7267
7268         * cpu-mips.md: fix length on int_rem_un
7269         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7270         
7271 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7272
7273         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7274
7275         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7276
7277 2008-11-29  Martin Baulig  <martin@ximian.com>
7278
7279         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7280         mono_debug_using_mono_debugger() in addition to the
7281         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7282
7283 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7284
7285         * mini-ops.h: updated more MIPS opcodes
7286         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7287         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7288         
7289 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7290
7291         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7292
7293 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7294
7295         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7296         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7297         * mini-ops.h: correct selected mips opcode entries
7298         
7299 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7300
7301         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7302         make them work.
7303
7304 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7305
7306         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7307
7308 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7309
7310         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7311         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7312         * mini-mips.h: disable IMT
7313         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7314         
7315 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7316
7317         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7318
7319 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7320
7321         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7322
7323 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7326         consistency.
7327
7328 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7331         for Set/GetVector aligned versions.
7332
7333 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7334
7335         * basic-simd.cs: Add tests for Get/SetVector.
7336
7337 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7338
7339         * mini.c: Removed g_slist_append_mempool().  Now in
7340         metadata/mempool.c.
7341
7342 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7343
7344         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7345         size properly and make the bounds check optional.
7346
7347         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7348         for SetVector and IsAligned.
7349
7350 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * mini.c: Remove unused mono_normalize_opcodes () function.
7353
7354 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7355
7356         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7357         using the new atomic add ops now.
7358
7359         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7360         add.
7361
7362 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7363
7364         * mini-ppc64.c: Several fixes.
7365
7366 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7367
7368         * cpu-mips.md: added jump_table
7369         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7370
7371 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7372
7373         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7374
7375 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7376
7377         * mini-ops.h: corrected a handful of MIPS opcodes.
7378
7379 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7380
7381         * aot-compiler.c: MIPS to use ELF writer
7382
7383 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7384
7385         * mini-codegen.c: remove MIPS specific assert.
7386
7387 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7388
7389         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7390         fixes.  PPC64 now passes most of the runtime regressions.
7391
7392 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7395         volatile intervals a bit.
7396
7397 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7398
7399         * basic-long.cs: New test case.
7400
7401 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7402
7403         * mini.c (mini_method_compile): Disable globalra for large methods for 
7404         now.
7405
7406         * regalloc2.c (order_moves): Add fp support.
7407
7408         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7409         source bblock ends with an OP_BR_REG.
7410
7411         * ratests.cs: Add a new test.
7412
7413 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7414
7415         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7416         sharing.  PPC64 now passes generics.exe.
7417
7418 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7419
7420         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7421
7422 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7423
7424         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7425         memory when mono_jit_info_table_find () can't find the method in the
7426         LMF case.
7427
7428         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7429         AOTed code too.
7430         
7431         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7432         writer too.
7433
7434 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7437         Several fixes.  PPC64 now runs exceptions.exe and
7438         devirtualization.exe.
7439
7440 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7441
7442         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7443         arrays.exe and basic-math.exe.
7444
7445 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7446
7447         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7448         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7449
7450 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7451
7452         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7453
7454 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7457
7458         * ir-emit.h: Move macros from method-to-ir.c to here.
7459
7460 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7461
7462         * mini-ops.h: Correct the long simd ops to use LREG.
7463
7464 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7467         
7468         * mini-ops.h: Correct the dreg type of a few long opcodes.
7469
7470         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7471         Add netbsd support.
7472
7473 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7474
7475         * mini-ppc.c: remove negative stack references in epilog
7476         for platforms that don't support the red zone.
7477
7478 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7479
7480         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7481         point regs.  Now PPC64 passes basic-calls.exe.
7482
7483 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7484
7485         * basic-simd.cs: Add tests for accessors of Vector2l.
7486
7487 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7488
7489         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7490
7491         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7492         
7493         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7494
7495 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7496
7497         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7498         PPC64 passes basic-long.exe.
7499
7500 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7501
7502         * decompose.c: Decompose carry and overflow add on PPC64 like on
7503         other 64 bit archs.  Don't decompose sub at all on PPC64.
7504
7505         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7506         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7507         basic-long.exe.
7508
7509 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7510
7511         * basic-simd.cs: Add tests for accessors of Vector2d.
7512
7513 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7516
7517         * cpu-x86.md: Same.
7518
7519         * mini-x86.c (mono_arch_output_basic_block): Same.
7520         
7521         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7522
7523 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * basic-simd.cs: Add tests for accessors of Vector4f.
7526
7527 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7528
7529         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7530
7531         * cpu-x86.md: Same.
7532
7533         * mini-x86.c (mono_arch_output_basic_block): Same.
7534         
7535         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7536
7537 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7538
7539         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7540
7541 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7542
7543         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7544
7545         * cpu-x86.md: Same.
7546
7547         * mini-x86.c (mono_arch_output_basic_block): Same.
7548         
7549         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7550
7551 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7552
7553         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7554
7555 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * simd-intrinsics.c: Enable setters for Vector16sb.
7558
7559 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7560
7561         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7562
7563         * cpu-x86.md: Same.
7564
7565         * mini-x86.c (mono_arch_output_basic_block): Same.
7566         
7567         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7568
7569 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7570
7571         * simd-intrinsics.c: Implement setter for Vector8us.
7572
7573 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7576         for dead variables.
7577
7578 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7579
7580         * mini-ppc.c: remove references to the red zone in the prolog
7581         (for systems that don't support it).
7582
7583 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7584
7585         * cpu-ppc64.md: Fixed a few instruction lengths.
7586
7587         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7588         now.
7589
7590 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7591
7592         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7593         basic.exe now.
7594
7595 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7598
7599 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * mini-ops.h: Added OP_INSERT_I2.
7602
7603         * cpu-x86.md: Same.
7604
7605         * mini-x86.c (mono_arch_output_basic_block): Same.
7606         
7607         * simd-intrinsics.c: Implement setter for Vector8s.
7608
7609         * simd-methods.h: Add the names of get setters of Vector8s.
7610
7611 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7612
7613         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7614         
7615         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7616         parameters.
7617
7618         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7619
7620 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7621
7622         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7623         for PPC64.  An empty program runs now.
7624
7625 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7628
7629         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7630         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7631         info for JITted code is emitted into a shared library, loadable into gdb.
7632
7633 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7634
7635         * Makefile.am: Changes to build PPC64.
7636
7637         * mini-arch.h: Include mini-ppc64.h on PPC64.
7638
7639 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7640
7641         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7642         in PPC code up to r119147.
7643
7644 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7645
7646         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7647         cpu-ppc64.md: Changes for PPC64.
7648
7649         Based on code submitted by andreas.faerber@web.de at
7650         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7651         X11/MIT license.
7652
7653 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7654
7655         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7656         cpu-ppc64.md: Copied from the corresponding PPC files from
7657         r118846.
7658
7659 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7660
7661         * mini-ops.h: Added OP_ROUND.
7662
7663         * cpu-x86.md: Added round.
7664
7665         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7666
7667         * basic-math.cs: Added test_0_round to test rounding.
7668
7669         Contributed under MIT/X11 license.
7670
7671 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7672
7673         * aot-compiler.c : Fix the Winx64 build.
7674
7675         Contributed under MIT/X11 license.
7676
7677 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7680         in OP_EXTRACT_R8 to avoid possible stack corruption.
7681
7682 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7683
7684         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7685
7686         * cpu-x86.md: Added extract_r8.
7687
7688         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7689         
7690         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7691         a couple of OP_EXTRACT_I4.
7692
7693         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7694
7695         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7696
7697 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7698
7699         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7700         and not 4.1. 
7701
7702 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7705         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7706
7707         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7708         are not needed any more.
7709
7710         * mini.h: Remove the unused INS_LIST macros.
7711
7712         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7713         longer needed.
7714
7715         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7716         ir-emit.h.
7717
7718         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7719         mono_alloc_ireg () instead.
7720
7721         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7722         macros.
7723
7724         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7725         on amd64.
7726
7727         * aot-runtime.c (load_aot_module): Disable AOT when running under
7728         CAS.
7729
7730         * mini-amd64.h: Change the monitor fastpath defines to check for
7731         !PLATFORM_WIN32 so they work on *bsd too.
7732
7733         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7734
7735         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7736
7737         * mini.h (MonoCompile): Remove new_ir flag.
7738
7739         * regalloc.h regalloc.c: Remove unused code.
7740
7741         * cpu-*.md: Remove more unused opcodes.
7742
7743         * simple-cee-ops.h simple-mini-ops.h: Removed.
7744
7745         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7746         
7747 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7748
7749         * aliasing.h: Removed.
7750
7751         * *.c: Remove references to aliasing.h and inssel.h.
7752
7753         * mini.c: Remove additional unused functions.
7754
7755         * mini-ops.h cpu-*.md: Remove unused opcodes.
7756
7757 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7758
7759         Remove the old JIT code.
7760
7761         * inssel*.brg: Removed.
7762
7763         * ssa.c abcremoval.c aliasing.c: Removed.
7764
7765         * ssa2.c: Renamed to ssa.c.
7766
7767         * abcremoval2.c: Renamed to abcremoval.c.
7768
7769         * *.c: Removed all !cfg->new_ir code.
7770
7771         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7772         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7773
7774         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7775         
7776 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7777
7778         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7779         to simplify the code and cut back on the number of global symbols in the AOT
7780         file.
7781         
7782         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7783
7784 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7787         with the got/got_info tables.
7788
7789         * mini.h: Bump AOT file format version.
7790         
7791         * unwind.h: New file, contains definitions for stack unwinding.
7792
7793         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7794         to cfg->unwind_ops.
7795         
7796         * aot-compiler.c: Generalize the emitting of unwind information to use the
7797         information in cfg->unwind_ops.
7798
7799         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7800
7801         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7802         AOT method frames. Enable writing symbols for methods by default.
7803
7804 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7807         and make it work with vectors of element sizes 1, 2 and 4.
7808
7809         * simd-intrinsics.c: Enable getter for all vectors with element size
7810         1, 2 or 4.
7811
7812         * simd-methods.h: Add the names of other getters.
7813
7814         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7815
7816         * cpu-x86.md: Same.
7817
7818         * mini-x86.c: Same.
7819
7820 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7821
7822         * mini-ppc.h: portability fix.
7823
7824 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7825
7826         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7827         buggy and will overwrite it.
7828
7829 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7832         Use it to emit local symbols for all methods so AOTed methods show up with
7833         their full name in gdb/valgrind output.
7834
7835 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7836
7837         * mini-ppc.c: portability fixes.
7838
7839 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7840
7841         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7842         entries out of the if (!generic_shared...) code so it is always done.
7843         (mono_class_init_trampoline): Do the patching when running under valgrind
7844         too, newer versions of valgrind have no problems with it.
7845
7846 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7847
7848         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7849         further sections.
7850
7851 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7852
7853         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7854         filters.
7855
7856 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7857
7858         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7859
7860 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7863
7864         * cpu-x86.md: Same.
7865
7866         * mini-x86.c: Same.
7867
7868         * simd-intrinsics.c: Same.
7869
7870 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7871
7872         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7873
7874 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7875
7876         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7877         to work with more Vector types.
7878
7879 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7880
7881         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7882         store the elemens directly instead of using and intermediate.
7883
7884 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7887
7888         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7889         to preserve %eax for aot plt trampolines.
7890
7891         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7892         (encode_method_ref): Flag synchronized methods so they won't go through
7893         the AOT trampoline.
7894
7895         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7896         wrappers.
7897
7898         * cpu-ia64.md (jmp): Increase max length.
7899
7900 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7901
7902         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7903         open generic classes.
7904
7905         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7906
7907         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7908         box+brtrue optimization since it causes test failures on x86.
7909
7910 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7911
7912         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7913
7914         * cpu-x86.md: Same.
7915
7916         * mini-x86.c: Same.
7917
7918         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7919         for simd ctor values. 
7920
7921         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7922         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7923
7924 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7925
7926         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7927         LogicalRightShift.
7928
7929         * simd-instrincs.c: Same.
7930
7931         * basic-simd.cs: Same.
7932
7933 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * ratests.cs: Add more tests.
7936
7937         * regalloc2.c (add_spill_code): Handle more corner cases.
7938
7939 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7942         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7943         both the source an destination of an instruction.
7944
7945 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7946
7947         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7948         wapihandles.c: more portability changes.
7949
7950 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7951
7952         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7953         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7954         safe to execute in a signal handler and the kernel provides better
7955         the info in /proc/self/smaps. Avoid the assert on sigaction during
7956         cleanup.
7957
7958 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7961         do the bblock linking hack if it is actually needed.
7962
7963         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7964         up linking.
7965
7966         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7967         crash problem is fixed.
7968
7969         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7970         bblocks.
7971
7972         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7973         for catch clauses.
7974         (mini_method_compile): Set the starting value of next_vreg to 
7975         MAX_IREGS + MAX_FREGS when using globalra.
7976
7977         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7978         filter clauses with BB_EXCEPTION_HANDLER.
7979
7980         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7981
7982 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7983
7984         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7985         space for stdcall.  Fixes regressions on Win32.
7986
7987 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7990         bblocks.
7991         (linear_scan): Remove an assert which doesn't seem to be needed.
7992
7993         * local-propagation.c (mono_local_deadce): Avoid a call to
7994         MONO_DELETE_INS which would screw up the instruction linking.
7995
7996         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7997
7998         * regalloc2.c: Upgrade to work the current JIT code.
7999
8000 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8001
8002         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8003         case.
8004
8005         * aot-runtime.c: Remove some dead code.
8006
8007         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8008         consistency.
8009         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8010
8011         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8012         trampolines using sscanf since atoi doesn't work on large unsigned values.
8013
8014         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8015         Initialize code_size.
8016
8017 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8018
8019         * method-to-ir.c (mini_emit_inst_for_method): Make
8020         Interlocked.CompareExchange work for Int arguments on 32 bit
8021         archs, as well.
8022
8023 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8024
8025         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8026
8027 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8028
8029         * main.c Fix MSVC build.
8030
8031         Contributed under MIT/X11 license.
8032
8033 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8034
8035         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8036         alignment larger than 8 bytes are aligned correctly, too.
8037
8038         * mini.c: Honor the min_align field of MonoClass when laying out
8039         the stack.
8040
8041 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8042
8043         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8044
8045         * aot-compiler.c (emit_plt): Fix a warning.
8046         
8047         * aot-compiler.c: Implement ARM support in the binary writer.
8048
8049 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8050
8051         * basic-simd.cs: Add test for getter with byref arg.
8052         Fix the naming of a few tests.
8053         Add missing checks to a test.
8054
8055 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8056
8057         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8058
8059         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8060         most of the full-aot support for monitor enter/exit trampolines.
8061
8062         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8063         enter/exit trampoline creation functions.
8064
8065         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8066         make dist.
8067
8068 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8069
8070         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8071         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8072         implement the needed functionality without adding crap to the runtime.
8073
8074 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8077         non-x86 builds.
8078
8079         * mini.c (mono_build_date): New global version holding the build date in
8080         string format.
8081         
8082         * Makefile.am (buildver.c): Generate a file containing the build date.
8083
8084         * main.c: Set the build date from the generated file.
8085
8086         * mini.c (mono_get_runtime_build_info): New helper function returning build
8087         information in a string format.
8088         
8089         * driver.c (mono_main): Print the build date in --version.
8090
8091         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8092         file when the bind-to-runtime-version option is used.
8093
8094 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8095
8096         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8097
8098 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8099
8100         * simd-methods.h: Rename prefetch methods.
8101
8102         * simd-intrinsics.c: Same.      
8103
8104 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8105
8106         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8107         sizes.
8108
8109 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * aot-compiler.c: Use the bundled elf header files instead of depending on
8112         the system one.
8113         
8114         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8115         mempool.
8116
8117         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8118         on every call.
8119
8120 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8121
8122         * cpu-x86.md: Add store nta ops.
8123
8124         * mini-ops.h: Same.
8125
8126         * mini-x86.c: Same.
8127
8128         * mini.h: Add an enum for simd prefetch modes.
8129
8130         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8131         of store. Use the changed code to support store nta.
8132
8133         * simd-intrinsics.c: Add prefetch ops for all vector types.
8134
8135 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8136
8137         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8138         threads.
8139         
8140         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8141         names.
8142
8143         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8144         trampolines.
8145
8146 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8147
8148         * mini-x86.c: Fixed commit.
8149
8150 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8151
8152         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8153
8154 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8155
8156         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8157         and MONITOR_EXIT, for the ASM fastpaths.
8158
8159         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8160         available.
8161
8162         * mini.c, patch-info.h: Signature and patch infos for
8163         Monitor.Enter/Exit trampolines.
8164
8165         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8166
8167         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8168         Monitor.Enter/Exit ASM fastpath for Linux.
8169
8170 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8173
8174         * objects.cs: Add a new test.
8175         
8176         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8177
8178         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8179         if MONO_LOG_LEVEL is set.
8180
8181         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8182
8183         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8184
8185         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8186         
8187         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8188         of file offsets. Align the sections belonging to the data segment to 
8189         PAGESIZE.
8190
8191 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8192
8193         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8194         elf.h. Port it to amd64.
8195
8196 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8197
8198         * driver.c: Enable SIMD by default.
8199
8200 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8201
8202         * cpu-x86.md: Add prefetch op.
8203
8204         * mini-ops.h: Same.
8205
8206         * mini-x86.c: Same.
8207
8208         * mini.h: Add an enum for simd prefetch modes.
8209
8210         * simd-methods.h: Add prefetch function names.
8211
8212         * simd-intrinsics.c: Add prefetch ops for all vector types.
8213
8214 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8215
8216         * aot-compiler.c (emit_bytes): Speed this up a little.
8217
8218 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * aot-compiler.c: Add JIT time etc. statistics.
8221         
8222         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8223
8224         * mini.h (MonoCompile): Add 'got_offset' field.
8225
8226         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8227         method_got_offsets array.
8228
8229         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8230         wrappers.
8231
8232         * aot-compiler.c (compile_method): Add generic method instances referenced
8233         by the method to the list of methods to be compiled, this is required so if
8234         A<T> references B<T>, and another assembly references A<int>, then it will
8235         also get a copy of B<int>.
8236
8237         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8238         when checking for monitor enter/exit.
8239
8240 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8241
8242         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8243         for Monitor.Enter and Monitor.Exit if enabled.
8244
8245         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8246         Solaris.
8247
8248 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8249
8250         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8251         of an OP_MOVE. Fixes #440046.
8252
8253         * basic-long.cs: Add a new test.
8254
8255 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8256
8257         * mini.h: Add synchronization note for the managed counter-part.
8258
8259         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8260         returns the simd caps of the current cpu.
8261
8262 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         * basic-simd.cs: Remove Console.WriteLine.
8265
8266 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8267
8268         * basic-simd.cs: New tests for Vector2ul.
8269
8270 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8271
8272         * simd-intrinsics.c: Add new vector type Vector2ul.
8273
8274 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8275
8276         * basic-simd.cs: New tests for Vector2l.
8277
8278 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8279
8280         * cpu-x86.md: Add long version of most packed int ops.
8281
8282         * mini-ops.h: Same.
8283
8284         * mini-x86.h: Same.
8285
8286         * simd-intrinsics.c: Add new vector type Vector2l.
8287
8288 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8289
8290         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8291
8292         * simd-methods.h: Remove SN_op_BitwiseXor.
8293
8294 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8295
8296         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8297         alignment.
8298
8299 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8300
8301         * basic-simd.cs: Test for Vector2d.
8302
8303         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8304         value.
8305
8306 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8307
8308         * cpu-x86.md: Add double version of all packed float ops.
8309
8310         * mini-ops.h: Same.
8311
8312         * mini-x86.h: Same.
8313
8314         * simd-intrinsics.c: Add new vector type Vector2d.
8315
8316         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8317
8318         * simd-methods.h: Add Duplicate.
8319
8320 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8321
8322         * basic-simd.cs: Test for packing with signed saturation.
8323
8324 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8327         found in the TYPESPEC table.
8328
8329 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8330
8331         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8332         too.
8333
8334         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8335
8336         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8337         instead of the RVA, since the RVA can be changed by tools like the cil 
8338         stripper.
8339
8340         * method-to-ir.c (mono_method_to_ir2): Ditto.
8341
8342         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8343         (deserialize_variable): Ditto.
8344
8345 2008-10-25  Martin Baulig  <martin@ximian.com>
8346
8347         * debug-mini.c (write_variable): Use
8348         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8349
8350 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8351
8352         * cpu-x86.md: Add unsigned variants of packd and packw.
8353
8354         * mini-ops.h: Same.
8355
8356         * mini-x86.h: Emit the right instruction for packd and packw.
8357         Add unsigned variants of packd and packw.
8358
8359         * simd-intrinsics.c: Packd and packw were used in place of their
8360         unsigned variants. Change that.
8361         Add intrinsics for (Signed)PackWithSignedSaturation.
8362
8363         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8364
8365 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8368
8369 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8370
8371         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8372
8373         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8374
8375         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8376         sse instructions.
8377
8378         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8379
8380 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8381
8382         * method-to-ir.c, mini.c: Special casing for the synchronized
8383         wrapper for the ldtoken+GetTypeFromHandle case.
8384
8385 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8386
8387         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8388
8389         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8390         created/split bblocks.
8391
8392 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8393
8394         * mini-ops.h: Add packed signed mul high.
8395         
8396         * cpu-x86.md: Same.
8397
8398         * mini-x86.c (mono_arch_output_basic_block): Same.
8399
8400         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8401
8402         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8403
8404 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8405
8406         * basic-simd.cs: Tests for Vector16sb.
8407
8408 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8411
8412 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8413
8414         * mini-ops.h: Add packed signed min, max and compare greater.
8415         
8416         * cpu-x86.md: Same.
8417
8418         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8419         saturation.
8420
8421         * simd-methods.h: Add CompareGreaterThan.
8422
8423         * simd-methods.h: Remove CompareEquals.
8424
8425         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8426
8427         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8428
8429         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8430         CompareEqual.
8431
8432 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8433
8434         * basic-simd.cs: Fix tests due to change in the API.
8435
8436 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8439
8440 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8441
8442         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8443
8444         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8445         inst_offset as this has invalid values for LDADDR.
8446
8447 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8448
8449         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8450
8451         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8452
8453 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8456         for accessing field->data.
8457
8458 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8459
8460         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8461
8462 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8463
8464         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8465
8466         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8467
8468 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8471         from the cfg mempool.
8472
8473 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8474
8475         * basic-simd.cs: Tests for new methods in Vector8us.
8476
8477 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8478
8479         * mini-ops.h: Add multiply and store high.
8480         
8481         * cpu-x86.md: Same.
8482
8483         * mini-x86.c (mono_arch_output_basic_block): Same.
8484
8485         * simd-methods.h: Same.
8486
8487         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8488         and CompareEqual.
8489
8490 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8493         mono_class_setup_vtable ().
8494
8495         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8496         mono_class_get_vtable_entry () for accessing klass->vtable.
8497
8498         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8499
8500         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8501         found.
8502
8503         * method-to-ir.c (mono_save_token_info): Don't save references made from
8504         wrappers.
8505
8506         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8507         of generic instances.
8508
8509         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8510
8511 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8512
8513         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8514         OP_JMP depends on the method signature.  Calculate it properly.
8515
8516 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8517         
8518         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8519         called directly.
8520
8521         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8522         instances.
8523         (emit_extra_methods): Add another table mapping method indexes to 
8524         offsets in the extra_method_info table.
8525
8526         * mini.h: Bump AOT file format version.
8527         
8528         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8529         and mono_aot_get_method_from_token () into one function.
8530
8531 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8532
8533         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8534         separate counter.
8535
8536 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8537
8538         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8539         methods.
8540
8541         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8542         disable_aot.
8543
8544         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8545
8546         * mini.h: Bump aot file format version.
8547
8548         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8549         AOT file can contain native code for methods which are not in the METHOD
8550         table. Generate code for non-sharable generic instances of generic methods
8551         found in the METHODSPEC table.
8552         
8553         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8554         encoding generic type handles.
8555
8556         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8557         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8558
8559         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8560         macros + MONO_ADD_INS.
8561
8562         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8563         context as well.
8564
8565         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8566
8567         * mini.h: Bump aot file format version.
8568
8569         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8570
8571 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8572
8573         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8574         platforms, with definable stack alignment value.  Set to 16 now
8575         for all platforms.
8576
8577         * mini.c, mini.h, driver.c: Command line option for disabling
8578         stack alignment.
8579
8580 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8581
8582         * basic-simd.cs: Tests for new methods in Vector4ui.
8583
8584 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8585
8586         * mini-ops.h: Add packed int shuffle.
8587         
8588         * cpu-x86.md: Same.
8589
8590         * mini-x86.c (mono_arch_output_basic_block): Same.
8591
8592         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8593         extract mask, max, min, shuffle.
8594
8595         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8596
8597 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8598
8599         * basic-simd.cs: Tests for new methods in Vector8us.
8600
8601 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8602
8603         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8604         RuntimeTypeHandle, not a TypedReference.
8605
8606 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8607
8608         * simd-intrinsics.c: remove relocations.
8609
8610 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8611
8612         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8613         optimizations from the x86 backend.
8614
8615 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8616
8617         * simd-methods.h, simd-intrinsics.c: debloat method names and
8618         prepare for no relocations.
8619
8620 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8621
8622         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8623         
8624         * cpu-x86.md: Same.
8625
8626         * mini-x86.c (mono_arch_output_basic_block): Same.
8627
8628         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8629         extract mask, max, min and sum of absolute differences.
8630
8631         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8632         method name.
8633
8634 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8635
8636         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8637         Renamed one test for consistency.
8638
8639 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8640
8641         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8642         fix to the code that deal with other blocks.
8643
8644 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8647
8648 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8649
8650         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8651         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8652         able to process the source reg.
8653
8654 2008-10-16  Martin Baulig  <martin@ximian.com>
8655
8656         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8657
8658         * inssel.brg: Add `OP_HARD_NOP'.
8659
8660         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8661
8662         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8663         `OP_HARD_NOP' instruction when running inside the debugger.
8664
8665         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8666         `OP_HARD_NOP' instruction when running inside the debugger.
8667
8668 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8669
8670         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8671         now works. The issue with the regalloc tripping up no longer
8672         happens.
8673
8674         * simd-intrinsics.c (load_simd_vreg): Same.
8675
8676 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8677         
8678         * basic-simd.cs: Tests for new Vector8ui methods.
8679
8680 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8681
8682         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8683         only for type. This fixes crashes where MonoInst::klass is checked
8684         for ops of type != VTYPE or OBJ.
8685
8686         * simd-intrinsics.c (load_simd_vreg): Same.
8687
8688 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8689
8690         * mini-ops.h: Add ops for packed shuffle/max/avg and
8691         extract mask.
8692         
8693         * cpu-x86.md: Same.
8694
8695         * mini-x86.c (mono_arch_output_basic_block): Same.
8696
8697         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8698         extract mask.
8699
8700         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8701         to emit extract mask op.
8702
8703         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8704         to emit word shuffles.
8705
8706 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8707
8708         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8709         the largest alignment needed by a variable, but at least
8710         sizeof(gpointer).
8711
8712 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8713
8714         * basic-simd.cs: Tests for the fixes in the last commit.
8715
8716 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8717
8718         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8719         no longer handles STACK_PTR input.
8720
8721         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8722
8723         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8724         get_simd_vreg   but handles STACK_PTR input.
8725
8726         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8727         as the input can be an arbitrary pointer.
8728
8729         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8730         LDADDR local optimization directly otherwise use a store op.
8731
8732 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8733
8734         * basic-simd.cs: Tests for dup low and dup high.
8735
8736 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8737
8738         * mini-ops.h: Add dup low and dup high ops.
8739         
8740         * cpu-x86.md: Same.
8741
8742         * mini-x86.c (mono_arch_output_basic_block): Same.
8743
8744         * simd-intrinsics.c (vector4f_intrinsics): Same.
8745
8746 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8747
8748         * basic-simd.cs: Tests for recently added functionality.
8749
8750 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8751
8752         * mini-ops.h: Add remaining sse1 fp ops.
8753         
8754         * cpu-x86.md: Add remaining sse1 fp ops.
8755
8756         * mini-x86.c (mono_arch_output_basic_block): Same.
8757
8758         * mini.h: Add enum for simd FP compare conditions.
8759
8760         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8761
8762         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8763         so the backed can generate the appropriate op.
8764
8765 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8766         This patch squeese one more byte from the SimdIntrinsc struct.
8767
8768         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8769         a a shift amount intead of simply or'ing it.
8770
8771         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8772
8773         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8774         byte so we can have an aditional flags field without increasing struct size.
8775
8776         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8777         against the simd_supported_versions bitmask.
8778
8779         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8780
8781 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8782
8783         * mini.c: remove rawbuffer code (the only use here is unsafe because
8784         it takes locks during signal handling and the kernel now provides much
8785         better info in proc/pid/smaps these days).
8786
8787 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8790         OP_X86_PUSH_OBJ. Fixes #434620.
8791
8792         * objects.cs: Add a test.
8793         
8794 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8795
8796         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8797         that the packuswb/packusdw don't work with unsigned numbers for what
8798         would be negative numbers in signed format.
8799
8800         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8801         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8802
8803         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8804
8805         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8806
8807         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8808
8809         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8810
8811         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8812         add more ops.
8813
8814         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8815         version as the enum in mini.h.
8816
8817         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8818         for sse3 ops, check the simd_version field if present. This way the code
8819         works with all versions of sse.
8820
8821 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8822
8823         * simd-intrinsics.c: Fixed intrinsic name typo.
8824
8825         * mini.h: Added missing simd exported function.
8826
8827         * basic-simd.cs: Added tests for Vector4ui.
8828         Fixed broken test for Vector16b.
8829
8830 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8833         the max length to 64.
8834
8835 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8836
8837         * method-to-ir.c: Only do the fast virtual generic method call for
8838         non-wrapper methods.
8839
8840         * mini.h, mini-trampolines.c: The new generic virtual remoting
8841         trampoline handles virtual method calls via the vtable (as done by
8842         the fast virtual generic method calls) to remoting proxies.
8843
8844         * mini.c (mono_jit_create_remoting_trampoline): For generic
8845         methods reate a generic virtual remoting trampoline.
8846
8847         * mini-amd64.h: Enable fast virtual generic method calls again.
8848
8849 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8850
8851         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8852         restore registers when doing tail calls.
8853
8854 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8855
8856         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8857         Vector4ui.
8858
8859 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8860
8861         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8862
8863 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8864
8865         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8866
8867 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8868
8869         * basic-simd.cs: Retrofit for API changes.
8870
8871 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8872
8873         * mini-ppc.c: Handle integer stack arguments for tail calls.
8874
8875 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8876
8877         * optflags-def.h: Removed sse3 optimization.
8878
8879         * driver.c: Same.
8880
8881         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8882         sse3.
8883
8884         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8885
8886         * mini.h: Added enumeration with simd versions.
8887
8888         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8889         for detecting SSE3.
8890
8891         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8892
8893         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8894
8895 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8898
8899         * basic-simd.cs: Fixed test naming.
8900
8901 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8902
8903         * mini-ops.h: Added ops for packed and saturated math, shifts
8904         and packing/unpacking.
8905
8906         * cpu-x86.md: Added descriptors for the above ops.
8907
8908         * mini-x86.c: Added code to emmit the above ops.
8909
8910         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8911
8912 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8913
8914         * aot-compiler.c (compile_method): Enable AOT for generic code.
8915
8916         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8917
8918 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8919
8920         * mini.c: add a workaround for a common screwup that ends up blamed
8921         to mono (other processes blocking signal delivery).
8922
8923 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8926         in the LDFLD/STFLD opcodes. Fixes #432673.
8927
8928         * iltests.il.in: Add a new test.
8929
8930 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8931
8932         * mini-arm.c: attach the thread in unmanaged->managed transitions
8933         using delegates (bug #433148).
8934
8935 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937        * basic-simd.cs: Use new ShuffleSel constants.
8938
8939 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8942
8943         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8944         only disable simd intrinsics if no sse2 is detected.
8945
8946         * optflags-def.h: Added sse3.
8947
8948         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8949         is disabled.
8950
8951 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8952
8953         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8954         when adding delegate-invoke wrappers.
8955
8956 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * Makefile.am: Reenable the simd tests.
8959
8960 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8961
8962         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8963           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8964           other vreg is allocated to that hreg.
8965
8966         Contributed under MIT/X11 license.
8967
8968 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8969
8970         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8971         yet checked in.
8972
8973 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8974
8975         * basic-simd.cs: New test suite for SIMD intrinsics.
8976
8977         * Makefile.am: Added new tests.
8978
8979 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8980
8981         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8982
8983         * mini-ops.h: Same.
8984
8985         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8986
8987         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8988         using SSE2 aware opcodes.
8989
8990         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8991         is enabled, this code path is only reachable if conversion ops are emmited after
8992         mono_method_to_ir.
8993
8994         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8995
8996         This optimization saves 6 bytes per conversion against the old version.
8997
8998 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * aot-compiler.c (compile_method): Don't skip methods referencing 
9001         generic methods without a corresponding entry in token_info_hash, since
9002         encode_method_ref () can handle all generic methods now.
9003
9004         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9005         generic context is set.
9006         
9007         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9008         generic sharing of LDTOKEN.
9009
9010 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9011
9012         * mini-amd64.h: Temporarily disabled fast virtual generic method
9013         calls because it breaks the System.Runtime.Remoting tests.
9014
9015 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9018
9019         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9020         so inlining actually works.
9021         (check_inline_caller_method_name_limit): Ditto.
9022
9023 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9024
9025         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9026         64 bit safety (from Olaf Hering and Andreas Farber).
9027
9028 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9029         
9030         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9031         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9032         unused virtual call support code.
9033
9034         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9035         
9036         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9037         which can't use aot trampolines.
9038         (decode_patch): Don't create aot trampolines for methods which can't use
9039         them.
9040
9041         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9042         use aot trampolines.
9043
9044         * mini.h: Bump AOT image format version.
9045         
9046 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9049         to save_token_info () since cmethod is inflated for constrained calls.
9050
9051         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9052
9053 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9054
9055         * Makefile.am: Add build rules for ppc64.
9056         This avoids the build failing at pedump with unresolved symbols
9057         due to lack of arch_sources. Instead it will now fail earlier
9058         due to lack of cpu-ppc64.md.
9059
9060         Contributed under MIT/X11 license.
9061
9062 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9063
9064         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9065         tail calls.
9066
9067         * iltests.il.in: Add test case for tail call with many arguments.
9068
9069 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9070
9071         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9072         to the fast virtual generic method code until the aot case is fixed.
9073
9074 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9075
9076         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9077
9078 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9079
9080         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9081         thunks.
9082
9083 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9084         
9085         * simd-intrinsics.c: Forgot to add this one.
9086
9087         * mini-codegen.c: Fix macro in case SIMD is not supported.
9088
9089 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9090         
9091         This patch land initial JIT support for simd intrinsics.
9092
9093         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9094
9095         * Makefile.am: Added simd-intrinsics.c
9096
9097         * simd-intrinsics.c: New file with simd instrinsic related
9098         code.
9099
9100         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9101
9102         * cpu-x86.md: Add simd related instructions.
9103
9104         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9105
9106         * driver.c: Added two new --regression variants.
9107
9108         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9109
9110         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9111
9112         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9113         extract some complicated logic to helper functions.
9114
9115         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9116
9117         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9118
9119         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9120         the specialized simplification pass.
9121
9122         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9123
9124         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9125
9126         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9127         table.
9128
9129         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9130         if MONO_ARCH_NEED_SIMD_BANK is defined.
9131
9132         * mini-ops.h: Added the new simd ops.
9133
9134         * mini-x86.c: Added mono_arch_xregname.
9135
9136         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9137
9138         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9139
9140         * mini-x86.h: Define simd related MONO_ARCH macros.
9141
9142         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9143
9144         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9145
9146         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9147         MONO_CLASS_IS_SIMD to deal with simd related IR.
9148
9149         * mini.h (MonoInst): Added spill_var to the backend union.
9150
9151         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9152
9153         * mini.h: Added forward declarations of the new simd fuctions.
9154
9155         * optflags-def.h: Added new optimization names SIMD.
9156
9157         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9158
9159         * regalloc.h: Added support for working with 3 register banks.
9160
9161         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9162
9163         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9164
9165 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9166
9167         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9168
9169 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9172         instead of one on 64 bit systems.
9173
9174         * method-to-ir.c: Remove unused includes.
9175
9176 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9179         cfg->used_int_regs, since the two are different on arm.
9180
9181 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9182
9183         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9184         mono_method_get_vtable_index() to get the vtable index.
9185
9186 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9187
9188         * method-to-ir.c (mono_method_to_ir2): Don't create native
9189         wrappers for array methods, because they're never called (and if
9190         they were called they wouldn't work).
9191
9192 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9193
9194         * method-to-ir.c (mono_method_to_ir2): Array methods are
9195         special-cased and must not be invoked indirectly via the (M)RGCTX
9196         when generic sharing is turned on.  Fixes #431413.
9197
9198 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9199
9200         * method-to-ir.c: When generic sharing is active, call
9201         non-interface virtual generic methods via the standard trampoline.
9202
9203         * mini-trampolines.c: Handle virtual generic shared methods.
9204
9205         * mini.h, mini-x86.c, mini-x86.h: New argument for
9206         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9207         method thunks and which is the trampoline to call if the lookup
9208         fails.  Enable the virtual generic method thunk for x86.
9209
9210         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9211         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9212         argument but assert that it's NULL, because these archs don't yet
9213         implement the virtual generic method thunk.  Changes in the IMT
9214         thunk data structures.
9215
9216 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * aot-compiler.c (emit_globals): Avoid invalid characters in
9219         the static linking symbol.
9220
9221         * objects.cs: Add a test for the range check optimization. Fix warnings.
9222
9223         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9224         optimization from the current JIT.
9225
9226         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9227         later in decompose_array_access_opts () to allow more optimizations.
9228
9229         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9230         mono_decompose_soft_float () for consistency.
9231
9232         * mini-ops.h: Fix arguments of OP_STRLEN.
9233
9234         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9235         into a separate function.
9236         (reset_cast_details): Ditto.
9237         (handle_unbox): Save cast details. Fixes #431254.
9238
9239         * method-to-ir.c: Remove some obsolete FIXMEs.
9240
9241 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9242
9243         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9244
9245 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9246
9247         * mini-codegen.c: More work on macros to make them
9248         ready for multiple regbanks.
9249
9250 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9251
9252         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9253
9254         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9255
9256 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9257
9258         * mini-codegen.c (mono_spillvar_offset): Proper support for
9259         multiple regbanks.
9260
9261 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9262
9263         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9264         the stack overflow changes.
9265
9266 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9267
9268         * mini-codegen.c: Make all bank macros depend on reg_bank.
9269
9270         * mini-codegen.c (mono_local_regalloc): Make free mask
9271         initialization regbank aware.
9272
9273 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9274
9275         * mini-codegen.c (mono_local_regalloc): Extract callee
9276         mask selection to a function and make it regbank aware.
9277
9278 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9279
9280         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9281         code to deal with many regbanks.
9282
9283 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9284
9285         * mini-codegen.c: More fp->regbank changes.
9286
9287 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9288
9289         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9290         of a hardcoded constant.
9291
9292 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9293
9294         * method-to-ir.c (type_from_stack_type): Fix typo.
9295
9296 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * mini-ia64.c (emit_move_return_value): Convert float return values to
9299         double.
9300
9301         * objects.cs: Add a new test.
9302         
9303         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9304         VARARG methods to fix an assert later.
9305
9306         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9307         end so it at least compiles.
9308
9309 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9312
9313 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9314
9315         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9316         optimization to a new function (emit_optimized_ldloca_ir) and enable
9317         it for both ldloca and ldloca_s.
9318
9319 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9320
9321         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9322         gshared CASTCLASS code.
9323
9324         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9325         amd64, where the libc stack unwinder encounters stack frames referring to
9326         native code in unmapped memory.
9327
9328         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9329         sharing.
9330
9331         * generics.cs: Add new test.
9332
9333 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9334
9335         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9336         add a check that one of the ARM_FPU_ constants is defined.
9337
9338         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9339         
9340         * mini-exceptions.c: Fix build on non-altstack platforms.
9341
9342         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9343         sharing of vtypes.
9344
9345         * ir-emit.h: Add a comment to NEW_PCONST.
9346
9347         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9348
9349         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9350
9351         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9352         after the changes to MonoJitDomainInfo.
9353
9354 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9355
9356         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9357
9358 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9359
9360         * mini-ppc.c: Compiler warning fixes.
9361
9362 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9363
9364         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9365         for pinvokes.
9366
9367 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9368
9369         * exceptions-ppc.c, mini-ppc.h: Compile
9370         mono_arch_handle_altstack_exception() on Darwin, too.
9371
9372 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9373
9374         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9375         work on archs which don't have generic sharing implemented, only
9376         without the vtable_arg.
9377
9378 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9379
9380         * mini.c: Added comment explaining why delegate ctor icall
9381         wrappers are compiled.
9382
9383 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9384
9385         * mini.c: Don't produce trampolines to delegate ctor icall
9386         wrappers but compile them upfront.
9387
9388 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9389
9390         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9391         runtime-set function when going back to managed code. Currently this
9392         is used to set back the protection on the soft ovf pages and/or to
9393         throw the stack overflow exception that happened in unmanaged code.
9394
9395 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9396
9397         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9398         runtime-set function when going back to managed code. Currently this
9399         is used to set back the protection on the soft ovf pages and/or to
9400         throw the stack overflow exception that happened in unmanaged code.
9401
9402 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9403
9404         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9405         the support code for restoring stack protection after stack overflows
9406         that happen in unmanaged code. Don't set the exec permission on the
9407         soft overflow area.
9408
9409 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9410
9411         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9412         delegate->method_ptr is set. Fixes #428054.
9413
9414 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * tests.cs: Rename to ratests.cs.
9417
9418         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9419         emit_get_rgctx_... functions.
9420
9421 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9422
9423         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9424
9425 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9426
9427         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9428         before asserting that method is sharable.
9429
9430 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9431
9432         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9433         whether method needs a static RGCTX wrapper used instead of
9434         complex conditions.
9435
9436         * generic-sharing.c, mini.h: A few functions moved to
9437         metadata/generic-sharing.c.
9438
9439 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9440
9441         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9442         Generic code sharing for value types, which essentially means
9443         treating value type methods like static methods.  The RGCTX is
9444         passed in the same way.
9445
9446 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9447
9448         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9449         opcode when creating multi-dimensional arrays of open types.
9450
9451         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9452         open generic types.
9453
9454         * generics.cs: Add a test.
9455
9456         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9457
9458 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9461
9462         * mini.c (mini_method_compile): Set it when running under the debugger. 
9463
9464         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9465         vreg optimization if the flag is set.
9466
9467         * driver.c (mono_main): Add --attach= option to pass options to
9468         the attach agent.
9469
9470         * mini.c (sigquit_signal_handler): Start the attach agent.
9471
9472         * ssapre.c: Disable this to save space since it is not yet ported to
9473         linear IR.
9474
9475         * regalloc2.c: Disable this to save space.
9476
9477         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9478
9479 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9480
9481         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9482         the -v option useful again.
9483
9484 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9485
9486         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9487         --break-at-bb.
9488
9489         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9490         arrays of arrays. Fixes #428406.
9491
9492         * method-to-ir.c (mini_emit_castclass): Ditto.
9493
9494         * objects.cs: Add new test.
9495         
9496 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9497
9498         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9499         was wrong at it choked against target_type_is_incompatible for byref types.
9500
9501 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9504         places.
9505
9506 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9507
9508         * mini-exceptions.c: update a few more exceptions-related counters.
9509
9510 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9511
9512         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9513         new functions to allocate from persistent mempools.
9514
9515 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9518         multiple register banks in the future.
9519
9520         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9521
9522 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9523
9524         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9525
9526         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9527
9528         * mini.h: Export type_to_eval_stack_type.
9529
9530         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9531         is only ins->klass of byref types.
9532
9533 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9536         (mini_emit_memcpy2): Ditto.
9537
9538         * mini-amd64.c: Fix a warning.
9539
9540 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9541
9542         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9543         linking.
9544
9545 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547         * method-to-ir.c: Extract stloc micro-optimization to a
9548         function and apply it to all cases.
9549
9550 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9551
9552         * method-to-ir.c: Don't fail generic code sharing in cases we
9553         already support.
9554
9555 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9556
9557         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9558
9559 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9560
9561         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9562         implementation.
9563
9564 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9565
9566         * trace.c: make tracing more useful and correct, with per-thread
9567         id and indent info.
9568
9569 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9570
9571         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9572         doing a method call and the argument is an R4.
9573
9574 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9577         generic methods.
9578
9579 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9580
9581         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9582
9583 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9584
9585         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9586         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9587
9588 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9589
9590         * driver.c: Add a --agent argument (not supported yet) to load managed
9591         agent assemblies before loading the main assembly, similarly to how the
9592         Java VM handles agents.
9593
9594 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9595
9596         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9597         function to do stack layout of local variables.
9598
9599 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9600
9601         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9602         calculation.
9603
9604 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9605
9606         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9607         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9608         JIT if DISABLE_JIT is defined.
9609
9610         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9611         defined.
9612
9613 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9614
9615         * iltests.il.in: Disable the fconv test on PPC (the result is
9616         undefined according to ECMA).
9617
9618 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9619
9620         * iltests.il.in: Enable tail call tests for PPC.
9621
9622         * mini.h: Add variable for storing incoming valuetype argument
9623         addresses for tail calls.
9624
9625         * mini-ppc.c: Implement valuetype arguments and return values for
9626         tailcalls on Linux.
9627
9628 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9629
9630         * mini-ppc.c: Partially implement tail calls (struct arguments and
9631         return values not supported).
9632
9633         * method-to-ir.c: Enable tail calls on PPC.
9634
9635 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9638         runtime-invoke wrappers to work around the problem of them getting
9639         assigned to a random class.
9640
9641         * aot-runtime.c (mono_aot_get_method): Ditto.
9642         
9643 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9646         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9647
9648 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9649
9650         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9651         until they're implemented properly.
9652
9653         * exceptions-ppc.c: Use arch-independent exception-handling code
9654         instead of custom one.
9655
9656         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9657         for Linear IR.
9658
9659         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9660
9661         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9662         applies when __powerpc__ is defined.
9663
9664 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9665
9666         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9667         methods to their code to avoid computing the full name of wrappers and
9668         doing a lookup in a string hash table.
9669
9670 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9671
9672         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9673         we identify bblocks before method_to_ir () is ran.
9674
9675         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9676         Also avoid optimizing branches pointing to themselves.
9677
9678         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9679
9680 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9681
9682         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9683
9684 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9685
9686         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9687         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9688         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9689         'buf'.
9690
9691         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9692         jumped to the same entry in plt_jump_table.
9693
9694 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9695
9696         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9697         dynamic images.
9698
9699 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9700
9701         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9702         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9703         #421807.
9704
9705 2008-08-29  Geoff Norton  <gnorton@novell.com>
9706
9707         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9708         segment, and doesn't properly handle .space as .text.  Fixes
9709         AOT Mach/ARM
9710
9711 2008-08-29  Geoff Norton  <gnorton@novell.com>
9712
9713         * mini.c: Disable the mach exception handler when running on 
9714         ARM
9715
9716 2008-08-29  Geoff Norton  <gnorton@novell.com>
9717
9718         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9719         globals on Darwin/ARM
9720
9721 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9724         since too many things depend on it. Instead, call 
9725         mono_runtime_set_no_exec ().
9726         
9727         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9728         the new JIT.
9729
9730         * aot-compiler.c: Add an 'asm-only' AOT option.
9731
9732         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9733                 
9734         * aot-compiler.c (compile_method): Disable gshared support for now as it
9735         doesn't yet work.
9736
9737 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9738
9739         * mini-amd64.h : Fix a compiler warning.
9740
9741         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9742           Changed to use a callback function to retrieve the unwind info.
9743           This avoids problems observed when code blocks were removed by
9744           unloading an app domain.
9745
9746         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9747           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9748           to work properly.
9749
9750         Contributed under MIT/X11 license.
9751
9752 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9753
9754         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9755           case to keep the stack aligned to 8.
9756
9757         Contributed under MIT/X11 license.
9758
9759 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9760
9761         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9762         avoid repeated linear searches.
9763
9764 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9765
9766         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9767         methods it can't handle.
9768         
9769         * aot-compiler.c (add_method): Avoid adding a method twice.
9770         (add_wrappers): Add runtime invoke wrappers for all methods.
9771
9772         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9773         function to create an aot-compatible version of this trampoline.
9774
9775         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9776
9777 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9778
9779         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9780
9781         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9782         with a generic sharing failure.
9783
9784         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9785
9786         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9787         CEE_RETHROW. Fixes #419634.
9788
9789         * mini.c (mono_method_to_ir): Ditto.
9790
9791         * exceptions.cs: Add a new test.
9792         
9793         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9794         to mono_type_stack_size_internal () since some callers might not pass in
9795         an rgctx.
9796
9797         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9798         instrument_prolog. Fixes #419878.
9799
9800         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9801         doubles in soft float mode volatile.
9802
9803 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9806
9807         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9808         to handle soft float correctly.
9809
9810         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9811         the fast path.
9812
9813         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9814
9815         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9816         to sp, since the generics catch code requires it.
9817
9818         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9819         copying.
9820
9821         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9822         mono_arch_emit_imt_argument ().
9823
9824         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9825
9826         * mini-arm.c tramp-arm.c: Generic sharing updates.
9827
9828 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * mini-arm.c: Fix the arm build.
9831
9832         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9833         handling enums, generic instances and generic sharing.
9834         (mini_type_stack_size_full): Ditto.
9835
9836         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9837         
9838         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9839
9840         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9841
9842         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9843         trampolines.
9844
9845         * mini-arm.c: Various small generic sharing changes.
9846
9847         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9848         this for x86.
9849         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9850         custom code.
9851
9852         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9853         helper function to return a generic class init trampoline.
9854
9855         * method-to-ir.c mini.c: Use it.
9856         
9857         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9858         arch-specfic function to return a generic class init trampoline.
9859
9860         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9861         the GENERIC_CLASS_INIT custom code.
9862
9863         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9864         a fatal error, not a sharing failure.
9865
9866         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9867         needed.
9868
9869         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9870         trampoline argument from MONO_ARCH_VTABLE_REG.
9871
9872         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9873         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9874         argument, and pass the vtable in VTABLE_REG.
9875
9876         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9877         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9878         argument, and pass the vtable in VTABLE_REG.
9879         (mono_arch_create_trampoline_code_full): Remove some special casing for
9880         the rgctx fetch trampoline.
9881
9882         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9883         Fixes #419273.
9884
9885         * iltests.il: Add a test for it.
9886
9887 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9890
9891         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9892         no longer needed.
9893
9894         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9895         use mono_jit_info_table_find () to avoid recursion.
9896         (mono_delegate_trampoline): Add a sync wrapper here.
9897
9898         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9899         here.
9900
9901         * mini.c (mono_method_to_ir): Ditto.
9902         
9903         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9904         add_sync_wrapper argument. Don't add a sync wrapper here.
9905         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9906
9907         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9908         
9909 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9910
9911         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9912           of nonvolatile registers back from MonoContext to CONTEXT.
9913
9914         Contributed under MIT/X11 license.
9915
9916 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9917
9918         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9919           arguments on Winx64 there are only 4 argument registers.  For this
9920           logic to work the last argument must be pulled from the stack.  
9921
9922         Contributed under MIT/X11 license.
9923
9924 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9925
9926         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9927
9928         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9929         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9930         encode/decode_method_ref ().
9931
9932         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9933
9934         * aot-runtime.c (decode_patch): Ditto.  
9935
9936         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9937         MONO_PATCH_INFO_METHOD.
9938
9939         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9940         MonoGenericJitInfo.
9941
9942         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9943         MonoGenericJitInfo.
9944
9945         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9946
9947         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9948         one from the caller.
9949
9950         * aot-runtime.c (decode_generic_inst): New function to decode and
9951         return a interned generic inst.
9952         (decode_klass_ref): Use it.
9953         (decode_method_ref): Ditto.
9954
9955         * aot-compiler.c (emit_exception_debug_info): Save 
9956         jinfo->has_generic_jit_info too.
9957
9958 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9961
9962         * iltests.il.in: Add a test for fconv_to_i.
9963
9964         * liveness.c: Disable the liveness2 pass for now to save space.
9965
9966         * regalloc2.c: Include mempool-internals.h to fix warnings.
9967
9968         * aot-compiler.c (encode_method_ref): Encode the context of generic
9969         instance methods.
9970
9971         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9972         the context saved in the aot file.
9973
9974         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9975
9976         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9977
9978         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9979         volatile so they won't be optimized away.
9980
9981 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9982
9983         * ssa.c:
9984         * ssa2.c:
9985         * mini.c:
9986         * regalloc2.c:
9987         * dominators.c: Remove duplicated functions that now are in
9988         mempool-internals.h.
9989
9990 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * aot-compiler.c: Fix warnings.
9993
9994         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9995
9996         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9997
9998         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9999         as the patch type.
10000
10001         * mini.c (mono_resolve_patch_target): Ditto.
10002         
10003         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10004         (encode_klass_ref): Add support for encoding VARs/MVARs.
10005
10006         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10007
10008         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10009         the handling of the got entries into a separate 'decode_got_entry' function.
10010         Add support for RGCTX_FETCH.
10011
10012         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10013         clobbered by the trampoline code.
10014
10015         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10016         not clobbered by the indirect calling code.
10017
10018 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10021         to fix the build.
10022
10023 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10024
10025         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10026         signature using the compilation mempool otherwise we would leak it.
10027
10028 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10031         mono_emit_abs_call ().
10032
10033         * patch-info.h: Add GENERIC_CLASS_INIT.
10034
10035         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10036
10037         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10038         as their target as a near call.
10039
10040         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10041         ABS handling code.
10042         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10043
10044         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10045         call to a runtime function described by a patch.
10046
10047         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10048         mono_emit_abs_call, this has the advantage that the ABS handling code in
10049         mono_codegen () can handle them both, and can handle other stuff in the
10050         future without additional code.
10051
10052         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10053         entry.
10054         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10055         abs addresses.
10056
10057         * mini.h: Add missing bblock related prototypes.
10058
10059         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10060         reverse_inst_list_len fields.
10061
10062         * mini.c: Refactor this file a bit by moving branch optimizations to 
10063         branch-opts.c.
10064
10065         * method-to-ir.c: Merge generic sharing changes missed earlier.
10066
10067         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10068
10069         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10070         shared patches. Process METHODCONST as a shared patch.
10071
10072         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10073         as it crashes on the 2.0 mscorlib.
10074
10075         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10076         to cause crashes.
10077         
10078         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10079         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10080         by IMT.
10081
10082         * aot-compiler.c: Reorganize the got handling code to be a bit more
10083         understandable.
10084
10085 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10088         mono_patch_info_equals/hash, and use it to massively simplify
10089         get_plt_index ().
10090
10091         * mini.c (mono_patch_info_hash): Simplify this and add support for
10092         more patch types.
10093
10094         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10095
10096         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10097         handling code, since an offset is not enough to identify a trampoline.
10098
10099         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10100
10101 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10102
10103         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10104
10105         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10106
10107         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10108
10109         * decompose.c: PPC decompositions for various ops.
10110
10111         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10112
10113 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10116         call the generic trampoline code using a call, instead of a jump, to
10117         remove some special casing from the generic trampoline code.
10118
10119         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10120         (mono_codegen): Ditto.
10121
10122         * aot-compiler.c aot-runtime.c: Ditto.
10123
10124         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10125
10126         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10127         helper function to find the offset corresponding to a lazy fetch trampoline.
10128
10129         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10130         when doing generic sharing.
10131
10132         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10133         places.
10134         
10135         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10136         mini-trampolines.c to be with the other trampoline creation functions.
10137
10138         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10139         as it is equal to method->signature in most cases, add a 
10140         mono_emit_method_call_full variant which takes a signature and an imt
10141         argument as well.
10142
10143 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10146         to this function, since it could be computed easily from the method 
10147         argument.
10148         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10149         more.
10150
10151         * method-to-ir.c mini.c: Remove references to 
10152         compile_generic_method_wo_context.
10153
10154         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10155         generic method calls.
10156         
10157         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10158         dimensional non-szarrays.
10159
10160         * mini.c (mini_init): Register mono_array_new_1.
10161
10162         * jit-icalls.c (mono_array_new_1): New jit icall.
10163
10164         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10165         pointing to the method.
10166
10167         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10168         method addresses belonging to METHOD_JUMP patches in the 
10169         jump_target_got_slot_hash.
10170         (mono_aot_load_method): Ditto.
10171
10172         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10173         METHOD_JUMP patches.
10174
10175         * mini.c (mini_create_jit_domain_info): New helper function which 
10176         initializes/frees domain->runtime_info.
10177         (mini_free_jit_domain_info): Ditto.
10178         (mini_init): Install the domain hook functions with the runtime.
10179
10180         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10181         information maintained by the JIT.
10182
10183         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10184         insertion into jump_table_hash into mono_codegen (), also implement proper
10185         locking.
10186
10187         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10188         tail calls, it is already done by the aot code.
10189         
10190         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10191         mechanism on amd64.
10192
10193         * iltests.il.in: Make the jmp test a bit more complex.
10194
10195         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10196         generic instances which doesn't have a token.
10197
10198         * aot-runtime.c (decode_method_ref): Ditto.
10199         
10200         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10201         can handle this case now.
10202         (handle_box): Ditto.
10203
10204 2008-08-15  Geoff Norton  <gnorton@novell.com>
10205
10206         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10207         debugging check.
10208
10209 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10210
10211         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10212         calling generic methods.
10213
10214         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10215
10216         * aot-runtime.c (decode_patch_info): Ditto.
10217
10218         * mini.c (mono_resolve_patch_target): Ditto.
10219         
10220         * patch-info.h: Add METHOD_RGCTX.
10221
10222         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10223
10224 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10225
10226         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10227         arguments in registers.
10228
10229         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10230         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10231
10232         * mini.c (mini_method_compile): Abort aot compilation for generic
10233         methods if generic sharing is disabled.
10234         
10235         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10236         an mrgctx.
10237
10238         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10239         requiring an mrgctx.
10240
10241         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10242         store instructions when converting a vcall to a normal call.
10243
10244         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10245         mono_arch_find_jit_info.
10246
10247 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10250         avoid calling mono_method_full_name () for every method even if the
10251         env var is not set.
10252         (check_inline_caller_method_name_limit): Ditto.
10253
10254 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10257         assemblies in one run.
10258
10259         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10260         skipped methods if it is not 0.
10261
10262         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10263
10264 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10265
10266         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10267           MONO_ARCH_HAVE_UNWIND_TABLE.
10268
10269         Contributed under MIT/X11 license.
10270
10271 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10272
10273         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10274           from default optimizaton list on Winx64.
10275
10276         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10277
10278         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10279           the LMF from the MonoJitTlsData structure.
10280
10281         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10282
10283         Contributed under MIT/X11 license.
10284
10285 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10286
10287         * mini.c (sigsegv_signal_handler): Fix the build.
10288
10289         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10290         assembly->aot_module.
10291
10292         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10293         hash table. This simplifies and speeds up a lot of code, and fixes support
10294         for .netmodules.
10295
10296         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10297         with the runtime.
10298
10299         * mini-exceptions.c: Ditto.
10300         
10301         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10302         'native_offset' argument, since these are computed in the 
10303         mono_find_jit_info () function.
10304
10305         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10306         is used by exceptions-ppc.c.
10307
10308         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10309         mono_arch_find_jit_info ().
10310         
10311         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10312         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10313         generic code in mini-exceptions.c.
10314
10315 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10318
10319         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10320         
10321         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10322         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10323         called while holding the loader lock. Fixes #415608.
10324         (mono_aot_get_method_from_token_inner): Ditto.
10325
10326 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10329         to reduce differences between this and the generic implementation in
10330         mini-exceptions.c.
10331         (ves_icall_get_frame_info): Ditto.
10332
10333         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10334
10335         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10336         longer neccesarry.
10337
10338         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10339         mono_arch_get_call_filter () and make it non-static, for consistency with the
10340         other architectures.
10341
10342 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10343
10344         * mini.c:
10345         * local-propagation.c:
10346         * mini-x86.c: Correct the name of arch defines.
10347
10348 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10349
10350         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10351         NO_EMULATE_LONG_SHIFT_OPS define.
10352
10353 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10356         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10357
10358         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10359         MACH fixes. Merged from the 2.0 branch.
10360
10361         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10362
10363         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10364         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10365
10366         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10367
10368         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10369         mono_marshal_get_native_wrapper () signature changes.
10370
10371 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10372
10373         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10374         conversion bug under arm.
10375
10376 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10377
10378         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10379
10380         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10381         with overflow checking.
10382
10383 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10384
10385         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10386         to the genmdesc.pl file
10387
10388 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10389
10390         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10391         arg_array in the soft-float versions of the LOAD/STORE macros.
10392
10393         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10394         implementation.
10395
10396         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10397
10398 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10399
10400         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10401         a float HFA. Fixes #413621.
10402
10403 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10404
10405         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10406         frame_size to args_size. Fixes build.
10407
10408 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10411         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10412
10413         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10414         the stack are not unaligned. Fixes #413247.
10415         
10416 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10417
10418         * mini.c: update jitted methods performance counters.
10419
10420 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10421
10422         * mini-exceptions.c: increase the exceptions thrown performance
10423         counter in mono_handle_exception ().
10424
10425 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10428         can work with netmodules.
10429
10430 2008-07-28  Geoff Norton  <gnorton@novell.com>
10431
10432         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10433         regression tests.
10434
10435 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10436
10437         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10438         correct place.
10439
10440 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10441
10442         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10443           The float param registers and other param registers must be the 
10444           same index on Windows x64.
10445
10446         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10447           ArgValuetypeAddrInIReg argument case.  Setting the argument
10448           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10449
10450         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10451           variable computed above as the copy length for arguments of storage
10452           type ArgValuetypeAddrInIReg.
10453
10454         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10455           ArgValuetypeAddrInIReg argument case.  This case will rely on
10456           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10457
10458         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10459           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10460           jump and tail call instructoins as they do not follow the typical call behavior.
10461
10462         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10463           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10464           local variable and pass the local variable by reference to the called method.
10465
10466         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10467           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10468           of a struct is passed in a register it must be saved with the other
10469           volatile argument on the stack.
10470
10471         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10472           frame pointer the stack adjustment value must be saved to the unwind 
10473           info structure.
10474
10475         Contributed under MIT/X11 license.
10476
10477 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10478
10479         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10480         which got lost in the merge.
10481
10482 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10485         build.
10486
10487         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10488         
10489         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10490         icalls, since they won't be patched.
10491
10492         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10493         different code sequence when running under valgrind to prevent some valgrind
10494         errors.
10495
10496         * iltests.il.in: Add new regression test.
10497
10498         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10499         end with a throw.
10500
10501         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10502         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10503
10504         * iltests.il.in: Add new test.
10505
10506         * aot-compiler.c: Fix some warnings.
10507
10508         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10509         Fixes #412494.
10510
10511 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10512
10513         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10514         (mini_usage_jitdeveloper): Add a missing --wapi option.
10515
10516 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * mini-codegen.c: Simplify the is_fp macros.
10519         (free_up_ireg): Remove, use free_up_reg instead.
10520         (free_up_reg): Fix the fp case.
10521
10522 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10525         lowered earlier.
10526
10527         * exceptions-x86.c: Merge some changes which seemed to have got lost
10528         in the linear-ir merge.
10529
10530         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10531
10532         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10533         long vreg volatile even if the variable was already created.
10534
10535         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10536         volatile variables.
10537
10538 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10541
10542         * mini.c (mono_jit_compile_method_inner): Add support for 
10543         MONO_EXCEPTION_BAD_IMAGE.
10544
10545         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10546         mini_method_get_context () returns NULL. Fixes #356531.
10547
10548         * mini.c (mono_method_to_ir): Ditto.
10549         
10550         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10551         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10552
10553 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10556         in the LDFTN implementation.
10557
10558 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10559
10560         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10561         code, patch calls to icalls, too, even if they're not in the
10562         shared generic code hash.  Fixes #411962.
10563
10564 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * cpu-x86.md: Increase the length of the fcall opcodes.
10567
10568         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10569         calls returning floats.
10570
10571         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10572         on NEWARR.
10573         
10574         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10575         missed earlier.
10576
10577         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10578         into the domain->method_code_hash.
10579
10580         * aot-compiler.c: Fix win32 build.
10581
10582         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10583         
10584         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10585         gshared NEWARR implementation.
10586
10587         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10588
10589         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10590         can be used outside of method_to_ir.
10591
10592         * mini.h (MonoCompile): Add arg_types field.
10593
10594         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10595         
10596         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10597         the values of the local arg_array and param_types array.
10598
10599 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10602         got accesses might only get generated later when NEWOBJ is decomposed.
10603         
10604         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10605         looking up the native code of the target method when a delegate is called
10606         for the first time.
10607
10608         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10609         optimization.
10610
10611         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10612
10613         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10614         AOT work on platforms without a working dlsym implementation.
10615
10616         * mini.h: Bump AOT image format version.
10617         
10618 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10619
10620         * mini-exceptions.c: Free a MonoType with
10621         mono_metadata_free_type() instead of g_free().
10622
10623         * aot-runtime.c: Free a MonoType.
10624
10625 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10626
10627         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10628         optimization.
10629
10630         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10631         fp stack on x86.
10632
10633 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10634         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10635         profiler hook.
10636
10637 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10638
10639         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10640         NEWOBJ calls on valuetypes.
10641
10642         * iltests.il.in: Add new test.
10643
10644         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10645
10646 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10649         is no longer needed.
10650
10651         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10652         non register sized integer arguments.
10653         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10654         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10655         emit_memcpy2 ().
10656
10657         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10658         CEE_MONO_RETOBJ.
10659         
10660         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10661         two a binop with different sized arguments is emitted.
10662
10663         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10664         instruction in the ins==NULL case.
10665
10666 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10669
10670         * mini-x86.c: Fix osx build.
10671
10672         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10673         opcodes as well.
10674
10675         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10676         instruction for non int sized variables.
10677
10678         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10679         implementation.
10680
10681 2008-07-23  Robert Jordan  <robertj@gmx.net>
10682
10683         * method-to-ir.c: Fix MSVC build.
10684
10685 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10688         a non int sized type, widen it to an int since newer versions of gcc seem to
10689         generate code which needs this.
10690
10691         * ssa2.c abcremoval2.c: Fix warnings.
10692
10693         * *: Merge the Linear IR branch.
10694
10695         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10696         the ChangeLog file there describes all the changes done over the years. 
10697         Further documentation can be found at www.mono-project.com/Linear_IL.
10698
10699 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10700
10701         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10702           The float param registers and other param registers must be the 
10703           same index on Windows x64.
10704
10705         Contributed under MIT/X11 license.
10706
10707 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10708
10709         * mini.c: Make the previous fix GC safe.
10710
10711 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10712
10713         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10714
10715 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10716
10717         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10718           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10719           ArgValuetypeAddrInIReg instead.
10720
10721         Contributed under MIT/X11 license.
10722
10723 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * mini-codegen.c (get_register_spilling): Fix a warning.
10726
10727 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10728
10729         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10730         for types which the initialization fails. Raises the provided exception
10731         at the right stop after cleanup.
10732
10733 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10734
10735         * aot-compiler.c: Free most of the memory allocated during compilation.
10736
10737         * mini.c (mini_parse_debug_options): Fix a leak.
10738         
10739         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10740         during aot compilation.
10741
10742 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10743
10744         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10745         it has too much register pressure.
10746
10747 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10750
10751 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10754         on x86.
10755
10756         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10757         on amd64 similar to the way it is done on arm.
10758
10759         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10760
10761         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10762         consistency, normalize error messages, avoid loading aot-only modules in
10763         normal mode.
10764
10765         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10766         for consistency.
10767
10768         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10769
10770 2008-07-11  Martin Baulig  <martin@ximian.com>
10771
10772         * debug-debugger.h
10773         (MonoDebuggerInfo): Add `interruption_request'.
10774
10775 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10776
10777         * aot-compiler.c (emit_plt): Remove some dead code.
10778
10779         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10780
10781         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10782         return the plt info offset belonging to a given plt entry.
10783
10784         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10785         mono_aot_get_plt_info_offset.
10786         
10787         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10788         similar to the amd64 code by makeing jumps through a separate jump table 
10789         instead of embedding the jump addresses into the code.
10790
10791 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10794         method.
10795
10796 2008-07-10  Martin Baulig  <martin@ximian.com>
10797
10798         * mini.c (mini_method_compile): Disable generics sharing when
10799         running in the debugger.
10800
10801 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10802
10803         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10804
10805         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10806         the local register allocator from running out of registers on x86 when 
10807         using aot.
10808
10809 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10810
10811         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10812         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10813         C4146.
10814
10815         Contributed under MIT/X11 license.
10816
10817 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10820         speed up the assembler.
10821
10822 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10825         support.
10826
10827         * mini.c: Move the soft float handling macros a bit earlier, add 
10828         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10829         place.
10830
10831         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10832
10833         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10834         read-only to help catch code allocation requests.
10835         
10836         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10837         and turn it off when using --aot-only or when compiling with --aot=full.
10838
10839         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10840         jump table for switches from the normal domain mempool, not the code
10841         manager.
10842
10843         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10844         unbox trampoline which handles aot-only mode too.
10845
10846         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10847         an AOTed unbox trampoline.
10848
10849         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10850
10851 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10852
10853         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10854         ""
10855
10856         Contributed under MIT/X11 license.
10857
10858 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10859
10860         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10861           the unwind information for the method at the end of the allocated block.
10862           
10863         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10864           MonoCompileArch to hold the unwind info for SEH on Winx64
10865         
10866         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10867           frame pointer info for the method being compiled.
10868           
10869         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10870           the call to mono_exception_from_token.
10871           
10872         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10873           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10874           information is stored a the end of the method block because it is all 32-bit offset based.
10875
10876         Contributed under MIT/X11 license.
10877
10878 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10881
10882         * wapihandles.c: Fix warnings.
10883
10884         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10885         mode.
10886
10887         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10888         mono_jit_compile_method in aot-only mode since that calls the type 
10889         initializer.
10890         
10891         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10892         get_delegate_invoke_impl in aot-only mode.
10893
10894         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10895
10896 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10897
10898         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10899
10900         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10901         is on by default.
10902
10903         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10904
10905         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10906         init trampoline from the AOT file as well.
10907
10908         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10909         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10910         code.
10911
10912         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10913         mono_init.
10914
10915         * exceptions-amd64.c: Add _full variants for the remaining exception code
10916         creation functions as well, allow emission of relocatable code, remove
10917         caching since that is now done by the caller.
10918
10919         * mini-exceptions.c: Add _full variants for the remaining exception code
10920         creation functions as well, add aot-only support.
10921
10922         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10923         if we can determine a proper token for them.
10924         (add_wrappers): Add a few more wrappers.
10925         (emit_method_code): Remove some dead code.
10926         (emit_trampolines): Emit exception code too.
10927
10928         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10929
10930         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10931         mono_array_new_va which avoids varargs.
10932
10933         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10934
10935         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10936         mono_arch_create_specific_trampoline () in all places.
10937
10938         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10939         a bit so it can be used for other things as well.
10940         
10941         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10942         on demand as well.
10943
10944         * exceptions-amd64.c: Rename the caching from the exception code creation
10945         functions, it is done by the caller instead.
10946         
10947         * exceptions-amd64.c: Change the signature of the exception code creation 
10948         functions to allow the creation of relocatable code later.
10949
10950         * mini-exceptions.c: Add a set of functions to query the various 
10951         runtime-generated exception functions.
10952
10953         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10954         mono_arch_.. () functions.
10955         
10956 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10957
10958         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10959
10960         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10961
10962         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10963         (mini_get_vtable_trampoline): Ditto.
10964
10965         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10966         code in the AOT case by returning the code size and a list of relocations to
10967         the caller.
10968
10969         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10970
10971 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10972
10973         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10974           clean the stack.
10975
10976         Contributed under MIT/X11 license.
10977
10978 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10981         so the buffer size can be computed correctly. Fixes #404735.
10982
10983         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10984         normally as cfg->debug_info is already freed.
10985
10986 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * mini-amd64.c: For calls returning vtypes in registers, don't store
10989         the return address on the stack, instead allocate a separate local for
10990         it. Fixes #404729.
10991
10992 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10993
10994         * mini-trampolines.c, mini.h: Add an argument to
10995         mono_create_jit_trampoline_in_domain() for turning off the adding
10996         of the sync wrapper.
10997
10998         * mini.c: Use the JIT trampoline without sync instead of
10999         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11000         be patched.
11001
11002 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11003
11004         * driver.c: Turn on GSHARED optimization by default.
11005
11006 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11007
11008         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11009         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11010
11011         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11012         create a variant of the generic trampoline code callable from AOTed trampolines.
11013
11014         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11015         trampoline code callable from AOTed trampolines.
11016
11017         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11018
11019 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11020
11021         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11022         pass-through manner.
11023
11024         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11025         and don't fail sharing for them anymore.
11026
11027         * mini-exceptions.c: Handle exceptions in shared generic methods.
11028
11029         * generic-sharing.c: When checking the context of a generic
11030         method, also check its class's context.  Don't treat wrappers as
11031         sharable.
11032
11033         * mini-trampolines.c: Some code factored out to
11034         metadata/generic-sharing.c.  Handle the MRGCTX case.
11035
11036         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11037         we must deal with the method being of another instantiation of the
11038         class.  Add static rgctx invoke wrappers to generic methods.
11039
11040 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11041
11042         * mini.c: Provide all jit infos of generic shared methods with a
11043         generic jit info.
11044
11045         * mini-exceptions.c: Handle the new situation that a generic info
11046         might be available, but not info about the this/vtable/mrgctx
11047         variable.
11048
11049 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11050
11051         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11052         generic methods.
11053
11054 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * dominators.c (check_dominance_frontier): Fix a warning.
11057
11058         * mini.h: Add some missing prototypes.
11059
11060         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11061
11062         * driver.c (mono_jit_init_version): Correct the comments since the first
11063         argument should be the name of the root domain, not a filename.
11064
11065         * aot-runtime.c (make_writable): Error out if this is called while running
11066         with --aot-only.
11067         (load_aot_module): Ditto.
11068
11069         * aot-compiler.c: Really fix the computation of method indexes.
11070
11071         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11072         optimizations as this is no longer called frequently.
11073
11074         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11075         method and the invoke impl code and pass it to the delegate trampoline instead of
11076         just the delegate class.
11077
11078 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * aot-compiler.c: Fixup the computation of method indexes.
11081         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11082         the method builder infrastructure.
11083
11084         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11085         has no header.
11086
11087         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11088         mode, load the method right away instead of creating a trampoline.
11089
11090         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11091
11092         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11093         some checks a bit.
11094
11095 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11098         (mono_aot_load_method): Use method_index instead of method->token.
11099
11100         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11101         can handle icalls etc. properly.
11102
11103         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11104
11105         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11106
11107         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11108         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11109         JIT_ICALL_ADDR patch type.
11110
11111         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11112
11113         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11114         request flag.
11115         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11116
11117         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11118
11119 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11120
11121         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11122         domain->jit_code_hash.
11123
11124 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11127
11128 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11129
11130         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11131         get_this_arg_from_call, let it compute it when needed.
11132
11133         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11134         gsctx from code only when needed.
11135
11136         * mini-trampolines.c (get_generic_context): Rename this to 
11137         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11138         it can be called by the arch backends.
11139
11140         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11141
11142 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * driver.c (mono_main): Add experimental --aot-only command line option.
11145
11146         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11147         set.
11148
11149 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11150
11151         * driver.c (DllMain): Remove mono_module_handle.
11152
11153         Contributed under MIT/X11 license.
11154
11155 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11158         for emitting methods which are not in the source assembly. Detect and report
11159         failure of assembling+linking.
11160         
11161         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11162
11163         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11164
11165 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11166
11167         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11168
11169 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini.h: Remove some obsolete prototypes.
11172
11173         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11174
11175 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11176
11177         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11178         supported by Visual Studio, so use alloca().
11179
11180 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11181
11182         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11183         Fixes #402585.
11184
11185 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11186
11187         * mini.c: Fail sharing of a generic method if it contains an open
11188         catch clause (because we don't pass MRGCTXs yet).
11189
11190 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11191
11192         * mini.c: When compiling a method with generic sharing, insert the
11193         method instantiated with an all-Object generic context into the
11194         jit info table, instead of the context of the first instantiation
11195         of the method we happen to compile.
11196
11197 2008-06-18  Martin Baulig  <martin@ximian.com>
11198
11199         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11200         `major_version' and `minor_version'.
11201
11202 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11203
11204         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11205         mono_method_is_generic_sharable_impl() takes an additional
11206         argument specifying whether to treat type variables as reference
11207         types.
11208
11209 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11210
11211         * mini.h: Removed obsolete prototypes.
11212
11213 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11214
11215         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11216         already handle them.
11217
11218 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11219
11220         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11221         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11222         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11223         tramp-x86.c: Added a MonoGenericContext* argument to
11224         mono_arch_get_unbox_trampoline() so that it can call other
11225         functions which require it.
11226
11227 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11228
11229         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11230         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11231         mono_arch_get_this_arg_from_call() takes a
11232         MonoGenericSharingContext* as well.
11233
11234 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11235
11236         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11237         implement generic sharing of unbox.
11238
11239 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11240
11241         * mini.c: Don't compute the vtable to determine whether a field is
11242         special static, because it might not work for open types.
11243
11244 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11245
11246         * mini.c: Removed the unused token_type and token_source arguments
11247         from get_runtime_generic_context_ptr().
11248
11249 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11250
11251         * mini.c (ADD_BINOP): fix the build
11252
11253 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11256         a widening op.
11257
11258 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11259
11260         * mini.h: Removed class relations enum that's not used anymore.
11261
11262 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11263
11264         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11265
11266         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11267         the lazy fetch trampoline access code.
11268
11269 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11270
11271         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11272
11273 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11276
11277         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11278
11279         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11280
11281 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11284         intrinsics.
11285
11286         * mini-ops.h: Add MIN/MAX_UN opcodes.
11287
11288         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11289         intrinsics.
11290
11291         * basic-math.cs: Add more min/max tests.
11292
11293         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11294
11295 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11296
11297         * mini.c: Small fix in the prologue of emit_castclass.
11298
11299 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11302
11303         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11304         do not work even for unsigned types. Fixes #400014.
11305
11306         * basic-math.cs: Add regression tests for unsigned Min/Max.
11307
11308 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11309
11310         * mini.c: Added additional context_used argument to several
11311         functions, which will be needed for sharing generic methods.  Use
11312         GET_RGCTX macro wherever appropriate.  Declare only one
11313         context_used in mono_method_to_ir().
11314
11315 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11316
11317         * mini.c, generic-sharing.c: Removed generic class relations.
11318
11319         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11320         functions due to MRGCTX changes.
11321
11322 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11323
11324         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11325         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11326         with calculated IMT.
11327
11328         * mini.c: Generic sharing of calls via generic interfaces.
11329
11330         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11331         generic method with non-constant MonoGenericContext*.  Instead,
11332         the context is taken out of the method itself.
11333
11334 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11335
11336         * mini.c: Generic sharing of ldvirtftn.
11337
11338 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11339
11340         * mini.c: Generic sharing of ldftn.
11341
11342 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11343
11344         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11345
11346 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11347
11348         * mini.c: Generic sharing of the special case of ldtoken followed
11349         by a call to GetTypeFromHandle.
11350
11351 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11352
11353         * mini.c: Generic sharing of box for nullable types.
11354
11355 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11358         are passed on the stack. Fixes #324807.
11359
11360 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11361
11362         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11363         for the ArgValuetypeAddrInIReg case.
11364
11365         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11366         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11367
11368         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11369         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11370         local variable and pass the local variable by reference to the called method.
11371           
11372         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11373         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11374
11375         Contributed under MIT/X11 license.
11376
11377 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11378
11379         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11380
11381         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11382         everything.
11383
11384 2008-06-10  Martin Baulig  <martin@ximian.com>
11385
11386         * debug-mini.c
11387         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11388
11389 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11390
11391         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11392         possible error when no arguments are passed.
11393
11394         Contributed under MIT/X11 license.
11395
11396 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11397
11398         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11399         where the file name is NULL.
11400
11401 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini.c: Fix s390 build.
11404
11405 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * trace.c (mono_trace_parse_options): Fix warnings.
11408
11409         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11410
11411 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * mini.c (remove_block_if_useless): Avoid printing the method name.
11414         
11415         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11416         MONO_INST_NEW.
11417
11418         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11419         LMF. Not yet used.
11420
11421         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11422         translated code after it has been patched.
11423
11424 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11427         avoid problems during code patching on SMP systems.
11428         (emit_call): Avoid adding a patch info which is already added by 
11429         emit_call_body.
11430         (mono_arch_emit_exceptions): Ditto.
11431
11432 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11435         MONO_TYPE_ISSTRUCT already checks for it.
11436
11437 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11438
11439         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11440           structs with floats on Winx64 the float registers are not used.  
11441           The integer registers are always used..
11442         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11443           only one register will be used and only if the size of the struct 
11444           is 1,2,4, or 8 bytes.
11445
11446         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11447           to work for Winx64.
11448
11449         Contributed under MIT/X11 license.
11450
11451 2008-06-05  Martin Baulig  <martin@ximian.com>
11452
11453         * debug-debugger.c (debugger_lookup_class): Also call
11454         mono_class_setup_methods() here; we're only called from RTI.
11455
11456 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11457
11458         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11459         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11460         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11461         Post-process object files and add dtrace-generated object, if necessary.
11462
11463         Contributed under MIT/X11 license.
11464
11465 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11466
11467         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11468         element class.
11469
11470         * mini.c: Generic sharing for unbox.any and castclass.
11471
11472 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11473
11474         * mini.c: Ignore tailcall prefix in shared generic code and when
11475         doing calls which require a vtable/rgctx argument.
11476
11477 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11478
11479         * mini.c: Don't free the JIT info.
11480
11481         * driver.c: Changes in the JIT info table testing code.
11482
11483 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11486         interruption. Fix some warnings.
11487
11488         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11489         interruption_checkpoint.
11490
11491 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11492
11493         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11494         from embedding applications.
11495
11496 2008-06-02  William Holmes  <billholmes54@gmail.com>
11497
11498         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11499           reserving 32 bytes on the stack when making calls. 
11500
11501         Contributed under MIT/X11 license.
11502
11503 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11504
11505         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11506         the linear IL branch.
11507
11508         * driver.c: Print out more information for --version on arm.
11509
11510 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11511
11512         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11513         bb_exit instead, since out of line bblocks might not actually be emitted
11514         out-of-line.
11515         
11516         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11517         maximum epilog size for out of line bblocks if tracing is enabled.
11518
11519         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11520
11521 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11522
11523         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11524
11525 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11528         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11529         opcodes.
11530
11531 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11532
11533         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11534         the 'value' to store is a constant.
11535
11536         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11537
11538         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11539         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11540
11541 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11542
11543         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11544         for accessing method->generic_container.
11545
11546 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11547
11548         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11549         
11550         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11551
11552         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11553
11554         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11555         fails.
11556
11557 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11560
11561         * mini.c: Handle the case when mono_class_vtable () fails.
11562
11563 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11564         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11565         the stat profiler.
11566
11567 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11568
11569         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11570         together with domain sharing.
11571
11572 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11573
11574         * mini.c: Treat callvirts to final methods like non-virtual calls
11575         when doing generic sharing, i.e. look them up in the runtime
11576         generic context.
11577
11578 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11579
11580         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11581         with computed types (for generic sharing).
11582
11583         * mini.c: Generic sharing for mkrefany and refanyval.
11584
11585 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11586
11587         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11588         possible.
11589
11590         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11591         the generic sharing code.
11592         
11593         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11594         when needed.
11595
11596 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11599
11600 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11601
11602         * driver.c: updated copyright date
11603
11604 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11605
11606         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11607         needed.
11608
11609 2008-05-19  Martin Baulig  <martin@ximian.com>
11610
11611         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11612         pointing to the new `_mono_debug_using_mono_debugger' variable.
11613
11614         * driver.c
11615         (mono_main): Check mono_debug_using_mono_debugger() rather than
11616         the `MONO_INSIDE_MDB' environment variable to check whether we're
11617         inside the debugger.
11618
11619 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11620
11621         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11622         argument.
11623
11624 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11625
11626         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11627
11628         * mini.c: Added mini_assembly_can_skip_verification. This
11629         function checks if the assembly requested to skip verification. 
11630         Fixes part of #387274.
11631
11632 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * mini.c (mini_get_method): Disable the check for open generic classes when
11635         using generic sharing.
11636
11637         * generics.cs: Add a test for #387034.
11638
11639         * mini.c (mini_get_method): Check whenever the method class is an open generic
11640         type, and return NULL in that case, causing a verification error. Fixes
11641         #384123.
11642
11643 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * driver.c (mono_main): Revert r102623. The right
11646         thing to do is to enable the verifier under verifiable
11647         unless a --security flag was passed.
11648
11649         We need this non-trivial behavior for --verify-all otherwise
11650         mcs-compileall won't be able to use it. As it needs everything to
11651         be verified under validil.
11652
11653 2008-05-06  Martin Baulig  <martin@ximian.com>
11654
11655         Fix #383749.
11656
11657         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11658         (mono_debugger_thread_cleanup): Likewise.
11659         (mono_debugger_extended_notification): Likewise.
11660
11661 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11662
11663         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11664         against both inflated and non-inflated methods. We need to check against the
11665         generic definition for cases where the instantiated method is not visible.
11666         We need to check against the inflated types for cases where the instantiation
11667         changes any super type. This fixes #382986.
11668
11669         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11670         that check for visibiliy as generic params only appears as the type subject
11671         of tokens on call opcodes. Field manipulation and ldftn must always
11672         target an exact type.
11673
11674 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11675
11676         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11677         if no related --security flag is passed.
11678
11679 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11680
11681         * mini-arch.h: Prepare support for ppc64.
11682
11683         Contributed under MIT/X11 license.
11684
11685 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11686
11687         * aot-runtime.c: Prepare support for ppc64.
11688
11689         Contributed under MIT/X11 license.
11690
11691 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11692
11693         * mini-ops.h: Prepare support for ppc64.
11694
11695         Contributed under MIT/X11 license.
11696
11697 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11698
11699         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11700
11701         Contributed under MIT/X11 license.
11702
11703 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11706         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11707         assemblies on windows.
11708
11709 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11710
11711         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11712         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11713         * main.c: Use UTF-8 encoded command line instead of Windows default code
11714         page on Windows to support Unicode.
11715         * driver.c (DllMain): New function for mixed-mode assembly support.
11716         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11717         export __stdcall functions without decoration.
11718
11719         Contributed under MIT/X11 license.
11720
11721 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11722
11723         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11724         saving it very early.
11725
11726 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11727
11728         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11729         deleted.  The only way to access the new RGCTX is via the
11730         trampline.
11731
11732         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11733         vtable instead of the RGCTX to static methods.
11734
11735         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11736         accessing the new RGCTX.
11737
11738         * generic-sharing.c: There is no separation between self, type
11739         arguments and other types in the RGCTX anymore.
11740
11741 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11742
11743         * mini-amd64.c (add_general): Remove previous stack adjustment.
11744         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11745         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11746         for 32 bytes of stack space reserved for all calls.
11747         
11748         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11749         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11750         adjustment.
11751         
11752         Code contributed under MIT/X11 license.
11753
11754 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11755
11756         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11757         against the root definition, peeling out method and type instantiations.
11758         Cache verify success results, code that fails verification is still
11759         checked multiple times.
11760
11761 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11762
11763         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11764
11765 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11766
11767         * mini-amd64.c (add_general): Always increment stack on Win64.
11768         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11769         on Win64.
11770         
11771         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11772         stack based argument handling on Win64.
11773         
11774         Code contributed under MIT/X11 license.
11775
11776 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11777
11778         * Makefile.am (version.h): Add support for git-svn.
11779
11780 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11781
11782         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11783         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11784         avoiding allocations and libc functions which might deadlock.
11785         
11786         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11787         'no-gdb-backtrace' option is set.
11788
11789         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11790
11791         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11792
11793 2008-04-21  Martin Baulig  <martin@ximian.com>
11794
11795         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11796         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11797
11798 2008-04-21  Martin Baulig  <martin@ximian.com>
11799
11800         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11801         `thread_vtable', `event_handler_ptr' and `event_handler'.
11802
11803 2008-04-21  Martin Baulig  <martin@ximian.com>
11804
11805         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11806         allows delayed initialization of the `executable_code_buffer' when
11807         attaching.
11808
11809 2008-04-21  Martin Baulig  <martin@ximian.com>
11810
11811         * mini.h (mono_debugger_create_notification_function): Removed.
11812         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11813
11814         * mdb-debug-info64.s
11815         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11816
11817         * mdb-debug-info32.s
11818         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11819
11820         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11821         currently only works on x86 and x86_64, so don't create it on ppc.
11822
11823 2008-04-21  Martin Baulig  <martin@ximian.com>
11824
11825         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11826
11827         * mini.c
11828         (mini_method_compile): In the fp elimination check, check
11829         `debug_options.mdb_optimizations' in addition to
11830         mono_debug_using_mono_debugger().       
11831
11832         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11833         disable some JIT optimizations which are only disabled when
11834         running inside the debugger.
11835         Added `--help-debug' option to describe the debugging options.
11836         (parse_debug_options): New static function to parse the `--debug'
11837         options, so we can easily add more stuff in future.
11838
11839 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11842         the method has no body.
11843
11844 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11845
11846         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11847         assembly is not allowed in MSVC 64-bit compiler. 
11848         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11849         as we get floating point exceptions everywhere.
11850         
11851         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11852         correctly align arguments for call to throw_exception.
11853         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11854         
11855         Code contributed under MIT/X11 license.
11856
11857 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11858
11859         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11860
11861 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11862
11863         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11864
11865         * mini-amd64.c (NEW_INS): Set cil_code.
11866
11867         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11868         from mini-amd64.c so all debugger related logic is in one place.
11869
11870         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11871         later won't have a random ip assigned to them.
11872
11873 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11874
11875         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11876         the arch specific function initializes code_size.
11877         (mono_create_delegate_trampoline): Ditto.
11878
11879         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11880         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11881         platforms.
11882
11883         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11884         running under the debugger.
11885
11886         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11887         debugger.
11888
11889         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11890         debugger. Also move the disabling of optimizations here from driver.c.
11891         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11892         debugger.
11893
11894         * mini.h (MonoCompile): Add a few new flags.
11895
11896 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11897
11898         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11899         so the cil_code field of created MonoInst's is properly set.
11900         (mini_select_instructions): Ditto.
11901
11902         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11903         (MONO_INST_NEW_CALL): Ditto.
11904
11905         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11906         in many places so the ins->cil_code field is properly initialized.
11907
11908         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11909         place.
11910
11911 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * mini.c (mini_method_compile): Print a different message when compiling a 
11914         shared method.
11915         
11916         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11917         > 1.
11918
11919 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11922         SSE2 instructions.
11923
11924         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11925         
11926 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * mini.c (handle_stack_args): Make this return void since its return value was
11929         never used. Also set cfg->unverifiable for invalid IL instead of calling
11930         G_BREAKPOINT ().
11931
11932 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11933
11934         * mini.c: Make sure "this" is live in catch clauses with type
11935         variables in shared generic code.
11936
11937 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11938
11939         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11940         generic_class_is_reference_type() to ensure the proper behaviour
11941         when sharing generic code and the type in question is a type
11942         argument.
11943
11944 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11947         race conditions when printing thread dumps. Fixes #377738.
11948
11949 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11950         
11951         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11952         shows up when both MonoInst arguments can cause aliasig.
11953         There is likely no way in the current JIT to trigger this problem, but
11954         it showed up in the development of generics sharing, when in a new
11955         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11956         When the generics sharing code will be committed, its tests will be
11957         valid also for this bug.
11958
11959 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11962         PATCH_INFO_METHOD.
11963
11964         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11965         NULL.
11966
11967 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11968
11969         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11970         use a more detailed exception message for InvalidCastException.
11971
11972         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11973
11974         * driver.c (mono_main): Add --debug=casts option to turn on better 
11975         InvalidCastException message details.
11976
11977         * mini.c (mini_get_debug_options): New helper function to return the address of
11978         the debug_options variable.
11979
11980         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11981         the jit_tls TLS variable.
11982
11983         * mini.c (mono_jit_tls): New TLS variable.
11984
11985         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11986         option is used.
11987
11988 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11989
11990         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11991
11992         * mini.c: Removed verifer related stuff, code moved to verify.c.
11993
11994         * driver.c: Using code from verify.c instead of mini.c.
11995
11996 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11999         longer valid.
12000
12001 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12002
12003         * mini.c (check_for_method_verify): Enabling verification of
12004         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12005         have been fixed.
12006
12007 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12008
12009         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12010         caller saved registers as well.
12011         
12012         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12013         saved registers as well.
12014
12015 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12018
12019         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12020         code.
12021
12022 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12025         to get_call_info.
12026         (get_call_info): Take a gsctx argument instead of 'cfg'.
12027
12028 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12029
12030         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12031         mono_verify_all is set.
12032
12033         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12034
12035         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12036
12037 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12040         an exception.
12041
12042         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12043         verifier and the code generated by the compiler.
12044
12045 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12046
12047         * mini.c: Generic sharing of the non-nullable case of the box
12048         instruction.
12049
12050 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * inssel.brg: Fix the build.
12053
12054         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12055
12056 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12057
12058         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12059         Array:Address. Fixes #372410.
12060
12061         * iltests.il.in: New tests for readonly prefix.
12062
12063 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12064
12065         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12066         mini-trampolines.c.
12067
12068         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12069         mini-exceptions.c.
12070
12071         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12072         
12073         * mini.c (mono_decompose_op_imm): New helper function.
12074
12075         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12076         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12077         return value.
12078
12079         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12080         mono_arch_output_basic_block. Fix warnings.
12081
12082         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12083         for now.
12084
12085 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12088         since the extra frame is now detected automatically inside the loop.
12089
12090         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12091         opts which are now in mono_peephole_ins ().
12092         
12093         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12094
12095         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12096         frames and skip duplicate managed-to-native frames. Fixes #367665.
12097
12098         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12099         opts which are now in mono_peephole_ins ().
12100         (mono_arch_peephole_pass_2): Ditto.
12101
12102         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12103
12104         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12105         arch independent peephole optimizations.
12106
12107         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12108         opts which are now in mono_peephole_ins ().
12109
12110         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12111         
12112         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12113
12114         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12115         pattern.
12116
12117         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12118         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12119         opcode. 
12120
12121 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12124         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12125         return value.
12126
12127         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12128         mono_arch_output_basic_block. Fix warnings.
12129
12130 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12133         conv.ovf.u.un.
12134
12135 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12136
12137         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12138         conv.ovf.u.un.
12139
12140         * iltests.il: Add new tests.
12141
12142 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12143
12144         * mini.c: Removed Windows version macros.
12145
12146 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12147
12148         * generic-sharing.c: Put reflection types in the extensible part
12149         of the runtime generic context.
12150
12151         * mini.c: Generic sharing of the GetTypeHandle special case of the
12152         ldtoken instruction.
12153
12154 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12155
12156         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12157
12158         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12159         
12160         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12161         consistency with the other version on the linear IR branch.
12162
12163         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12164
12165         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12166
12167         * iltests.il.in: Add new tests.
12168
12169 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12170
12171         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12172
12173         * iltests.il.in: Add new tests.
12174
12175 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12176
12177         * mini.c: Two variables with the same name were declared in
12178         nesting contexts and one wasn't initialized.  Fixed.
12179
12180 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12181
12182         * mini.c: Generic sharing of the initobj instruction.
12183
12184 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12185
12186         * mini.c: make the test to optimize ldtoken from typeof() more
12187         precise.
12188
12189 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12190
12191         * mini.c: Generic sharing of the initobj instruction for reference
12192         types.
12193
12194 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12195
12196         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12197         the mono_breakpoint_clean_code() code to perform bound checks.
12198
12199 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12200
12201         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12202         mono_arch_patch_callsite() to include the start of the managed method
12203         to be able to perform bound checks.
12204
12205 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12206
12207         * mini.c: Generic sharing for the isinst instruction.
12208
12209 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12210
12211         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12212         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12213         with the runtime generic context argument.
12214
12215         * mini.c: Share calls to several types of unsharable methods by
12216         putting the address of the method code in the runtime generic
12217         context and doing an indirect call.
12218
12219         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12220         to switches.
12221
12222 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12223
12224         * generic-sharing.c: Change due to a change in the runtime genric
12225         context API.
12226
12227 2008-03-15  Martin Baulig  <martin@ximian.com>
12228
12229         * tramp-x86.c
12230         (mono_arch_nullify_class_init_trampoline): Add call to
12231         mono_breakpoint_clean_code() to make things work when running
12232         inside the debugger.
12233
12234         * tramp-amd64.c
12235         (mono_arch_nullify_class_init_trampoline): Add call to
12236         mono_breakpoint_clean_code() to make things work when running
12237         inside the debugger.
12238
12239 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * inssel-long.brg (reg): Fix 64 bit build.
12242
12243 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12244
12245         * mini.c, mini.h: Share static generic code by passing it an
12246         implicit argument pointing to the runtime generic context.
12247
12248         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12249         inssel-long32-mips.brg: New opcodes for calling shared static,
12250         which need to be passed the runtime generic context.
12251
12252         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12253         argument on the stack in the prologue if needed.  New function for
12254         finding the runtime generic context argument from the registers
12255         saved by the trampoline.
12256
12257         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12258         runtime generic context argument.
12259
12260         * tramp-amd64.c: Also restore the register used for the runtime
12261         generic context argument.
12262
12263         * mini-trampoline.c: Resolve shared static calls by consulting the
12264         runtime generic context via the new argument.
12265
12266         * generic-sharing.c: Add an argument to sharability-checking
12267         functions that specifies whether type variables should be treated
12268         as sharable type arguments.
12269
12270         * inssel-x86.brg: Removed a superfluous, buggy rule.
12271
12272         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12273         to switches.
12274
12275 2008-03-14  Martin Baulig  <martin@ximian.com>
12276
12277         * debug-debugger.c (main_thread_handler): Call
12278         mono_runtime_run_main() without sending any notifications.
12279
12280         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12281
12282 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12285
12286 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12287
12288         * tramp-x86.c: Fixed register restore offsets in the trampoline
12289         code for ECX and EDX.
12290
12291 2008-03-12  Geoff Norton  <gnorton@novell.com>
12292
12293         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12294         different ucontext_t implementations.
12295         * exceptions-arm.c: Use the above defines to get exceptions working on 
12296         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12297         * mini-arm.c: Implement iPhone icache support (based on a patch by
12298         Luke Howard lukeh@padl.com)
12299
12300 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12301
12302         * mini.c: Enable generic sharing of calls to non-static
12303         non-interface non-generic non-value-type methods.
12304
12305         * mini-trampolines.c: Resolve calls from shared generic code.
12306
12307 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12308
12309         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12310
12311         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12312
12313 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12314
12315         * mini.c: some fixes for the AOT compiler.
12316
12317 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * cpu-amd64.md: Add clob:1 to some float opcodes.
12320
12321 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12322
12323         * mini.h: Added MiniVerifierMode enumeration.
12324
12325         * mini.c: Added mini_verifier_set_mode to control
12326         the usage of the new verifier.
12327
12328         * mini.c (mono_method): Integrated the new verifier.
12329
12330         * driver.c: Extended --security option with validil and
12331         verifiable options to activate the new verifier.
12332
12333 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12336         optimization to ctors taking 0 or 2 arguments too.
12337
12338         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12339         a bit.
12340
12341         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12342
12343         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12344
12345 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12348         non-aot case as well.
12349
12350         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12351
12352         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12353         changes.
12354
12355         * aot-compiler.c (encode_patch): Ditto.
12356
12357         * mini.h (G_MININT32): Fix the definition of this.
12358
12359 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12360
12361         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12362
12363         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12364
12365 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12366
12367         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12368         methods returning vtypes in registers.
12369         (mono_arch_allocate_vars): Ditto.
12370
12371         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12372
12373         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12374
12375         * generics.cs: Add a test from the linear IR branch.
12376
12377         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12378
12379         * mini.c (inline_method): Cache failed inline attempts.
12380
12381 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12382
12383         * mini.c: For shared methods of generic classes put the location
12384         of "this" into the MonoGenericJitInfo.
12385
12386         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12387         register out of a MonoContext by register number.  Add the generic
12388         sharing context as an argument to mono_arch_find_this_argument().
12389
12390         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12391         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12392         for new arch function.
12393
12394         * mini-exception.c: Handle open exception clauses in shared
12395         generic code.
12396
12397         * mini-trampolines.c: Supply additional argument to
12398         mono_arch_find_this_argument().
12399
12400 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12401
12402         * Makefile.am (regtests): Run the bench.exe tests last.
12403
12404 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12405
12406         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12407         a bit.
12408
12409 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12412         with MS.
12413
12414         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12415         
12416         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12417
12418         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12419         whose class has no cctor.
12420
12421         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12422
12423 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12426         unverified.
12427
12428 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12431         to be in sync with the code on the linear IR branch.
12432
12433         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12434
12435         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12436
12437 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12440
12441         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12442
12443         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12444
12445         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12446
12447         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12448         
12449         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12450         body.
12451
12452 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12453
12454         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12455         OP_LOADR4_MEMBASE emission.
12456
12457         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12458         (mono_spillvar_offset_float): Ditto.
12459
12460         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12461
12462         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12463         emission.
12464
12465         * basic-long.cs: Add regression tests for them.
12466
12467         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12468         use.
12469         (mono_arch_allocate_vars): Fix representation of single-precision float
12470         argument.
12471         (mono_arch_output_basic_block): Ditto.
12472
12473         * inssel-mips.brg: Ditto, remove duplicate items.
12474
12475         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12476         arguments of tail calls as on other platforms.
12477         (mono_arch_output_basic_block): Handle tail calls.
12478
12479         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12480         register.
12481
12482         * objects.cs (test_5_pass_static_struct): Add test for it.
12483
12484         Contributed under MIT/X11 license.
12485
12486 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * Makefile.am: Use gmcs for compiling the regression tests.
12489
12490         * *.2.cs *.2.il: Rename to *.cs and *.il.
12491
12492 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12493
12494         * regalloc.h: Make the vassign array smaller.
12495
12496         * mini.c (mini_method_compile): Remove an unused field in cfg.
12497
12498         * mini-codegen.c: Add a bunch of micro optimizations.
12499
12500 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12501
12502         * regalloc.h: Remove some unused fields.
12503
12504 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12507
12508         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12509
12510 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12511
12512         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12513
12514         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12515         trampoline: Fetch an entry from the runtime generic context.  If
12516         it's NULL, jump to the actual trampoline to fill the runtime
12517         generic context.  Otherwise, return it.
12518
12519         * mini.c: Call the lazy fetch trampoline to get entries out of the
12520         runtime generic context.
12521
12522         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12523         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12524         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12525
12526 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12527
12528         * mini.c: Fetch data out of the extensible part of the runtime
12529         generic context instead of calling a helper function.
12530
12531         * generic-sharing.c: Some functions moved into
12532         metadata/generic-sharing.c.  Helper function for fetching other
12533         types now checks and asserts against extensible rgctx (just for
12534         debugging purposes - the helper function isn't called anymore
12535         unless for debugging).
12536
12537 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12540         for tail calls up to the point that the tests in iltests.exe run. Also add a
12541         dummy CKFINITE implementation.
12542         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12543         needed for trampoline LMF frames.
12544
12545         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12546         trampoline LMF frames.
12547
12548 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12549
12550         * mini.c (inline_method): clean any pending loader error when inlining fail.
12551         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12552
12553 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12556
12557         * aot-runtime.c (decode_patch_info): Ditto.
12558
12559         * mini.c (mono_resolve_patch_target): Ditto.
12560         
12561         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12562         icall wrappers.
12563
12564         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12565         
12566         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12567         if it references an icall address.
12568
12569 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * cpu-s390x.md: Remove some more unused opcodes.
12572         
12573         * cpu-s390x.md: Remove some unused opcodes.
12574
12575         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12576         mono_op_imm_to_op ().
12577
12578         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12579         instead of a switch statement.
12580         
12581         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12582         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12583
12584         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12585         
12586         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12587
12588         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12589         -1.
12590
12591 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12594         opened. Fixes #362607.
12595
12596         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12597
12598         * iltests.il.in: Add a test for static methods in interfaces.
12599
12600 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12601
12602         * genmdesc.c (build_table): Fix a crash on older glib versions.
12603
12604         * cpu-sparc.md: Remove some unused opcodes.
12605         
12606         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12607         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12608
12609         * cpu-amd64.md: Remove some unused opcodes.
12610
12611         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12612         like the other opcodes.
12613
12614 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12615
12616         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12617
12618         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12619
12620         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12621         variables 'cfg' instead of 'm' for consistency.
12622
12623         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12624
12625         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12626         argument holding the vtype return address, to avoid the ambigious use of
12627         cfg->ret for this purpose.
12628
12629         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12630
12631         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12632         
12633         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12634         new mono_print_ins () function which only takes one argument.
12635
12636 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12637
12638         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12639         macro arguments.
12640
12641 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12644
12645         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12646
12647         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12648         opcodes and other small changes.
12649
12650         * mini-ops.h: Add some new opcodes from the linear IR branch.
12651
12652         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12653
12654         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12655         opcodes, use the REG_MEMBASE opcodes instead.
12656         
12657         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12658         opcodes, use the REG_MEMBASE opcodes instead.
12659         
12660         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12661         linear IR branch.
12662
12663         * mini.c (mono_op_imm_to_op): New helper function.
12664
12665         * mini-ops.h: Add some opcodes from linear IR branch.
12666
12667 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12670         <tsv@solvo.ru>.
12671
12672 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12675         OP_ICONV_TO_R4/R8.
12676
12677         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12678
12679 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * aot-compiler.c (emit_method_code): Add an assert.
12682
12683         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12684         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12685         methods.
12686
12687 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12688
12689         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12690         some load/store opcodes so they are consistent. 
12691         (mono_arch_emit_prolog): Simplify some code.
12692
12693         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12694
12695         * objects.cs: Add tests for large argument offsets on ARM.
12696
12697         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12698         stack offsets. Fixes #359651.
12699
12700         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12701
12702         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12703
12704         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12705
12706         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12707
12708         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12709
12710         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12711         rid of CEE_CONV_R_UN.
12712
12713         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12714
12715 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12718
12719         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12720
12721         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12722
12723         * cpu-amd64.md: Remove some unused opcodes.
12724
12725         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12726
12727         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12728
12729         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12730         arch specific functions for its parts. Call the peephole pass after local
12731         regalloc so the prolog can compute a more accurate max_offset.
12732         
12733         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12734         the corresponding OP_I/OP_L opcodes.
12735
12736         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12737
12738         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12739
12740 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12743         as they are handled in mini.c.
12744
12745         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12746         
12747         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12748         case since it is handled in mini.c.
12749
12750         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12751
12752         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12753
12754         * *.c: Use the new opcodes in the IR and back end code.
12755
12756         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12757
12758         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12759
12760 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12761
12762         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12763         an assert because it has a race condition.
12764
12765 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12766
12767         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12768
12769         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12770
12771         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12772
12773         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12774         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12775
12776 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12777
12778         * cpu-amd64.md (move): Correct the maximum size of move.
12779
12780 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12781
12782         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12783         the generic class init trampoline to return quickly if the class
12784         is already inited.
12785
12786 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12789         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12790
12791 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12794         branch.
12795
12796 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * objects.cs: Add some soft-float tests.
12799
12800         * mini.c: Fix a couple more soft-float issues.
12801
12802         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12803
12804         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12805         avoid a REX prefix.
12806
12807 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12808
12809         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12810         exception happens while compiling a virtual method.
12811
12812 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12815         
12816         * mini-sparc.c: Fix build.
12817
12818         * mini-sparc.c (get_call_info): Add support for generic sharing.
12819
12820         * mini-exceptions.c: Add a FIXME.
12821
12822 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12823
12824         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12825         altstack handling code.
12826
12827         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12828         
12829         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12830
12831         * mini-s390.c: Add support for generic sharing.
12832
12833         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12834         Fix CAS on s390.
12835         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12836
12837         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12838
12839         * mini-s390x.c: Add support for generic sharing.
12840         
12841         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12842         Fix CAS on ia64.
12843         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12844
12845         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12846         can be used since it takes a 16 bit signed immediate.
12847
12848         * inssel-s390x.brg: Fix OP_SETRET.
12849
12850         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12851
12852         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12853
12854         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12855
12856         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12857
12858         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12859         in one place.
12860
12861         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12862         stuff.
12863
12864         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12865         of the unused mono_arch_patch_delegate_trampoline stuff.
12866
12867 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * basic-long.cs: Move the fp related tests to basic-float.cs.
12870
12871         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12872
12873         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12874
12875         * basic-calls.cs: Add a test for proper float argument passing.
12876
12877         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12878         if the context corresponds to an exception received through a signal.
12879
12880         * exceptions.cs: Add a test for nullref handling at the start of a try
12881         clause.
12882
12883         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12884
12885         * jit-icalls.c (mono_break): New JIT icall.
12886
12887         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12888
12889         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12890
12891 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * cpu-*.md: Get rid of unused opcodes.
12894
12895         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12896
12897         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12898         by all platforms.
12899
12900         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12901         define.
12902
12903         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12904         the arch independent trampoline code in mini-trampolines.c.
12905
12906         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12907
12908         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12909
12910         * mini-s390.h: Remove an unused define.
12911         
12912         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12913         the arch independent trampoline code in mini-trampolines.c.
12914
12915         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12916
12917 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12920
12921         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12922
12923         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12924
12925         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12926
12927         * cpu-amd64.md: Use smaller sizes for int opcodes.
12928
12929         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12930
12931         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12932         objects.cs.
12933
12934         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12935         debugging.
12936
12937         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12938         instead of though a pointer to save an indirection when accessing elements of
12939         the array.
12940
12941         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12942         some typos.
12943         (NOT_IMPLEMENTED): New helper macro.
12944         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12945         of a bb.
12946
12947         * *.c: Use the new helper macro.
12948
12949 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12950
12951         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12952
12953 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12956         stack slots.
12957
12958 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12961         profiling is enabled.
12962         
12963         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12964         the end.
12965         (mono_arch_emit_prolog): Add more first bblock optimizations.
12966
12967         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12968         in order if possible.
12969         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12970         bblock, since the arguments are still in their original registers.
12971
12972         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12973
12974 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12977         as well.
12978
12979         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12980         offset 0.
12981
12982         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12983
12984         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12985         process async exceptions received while in unmanaged code.
12986
12987         * mini.c (mini_init): Install a callback with the runtime which will be called
12988         when a thread receives an async exception while in unmanaged code.
12989
12990         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12991
12992         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12993
12994 2008-01-16  Wade Berrier  <wberrier@novell.com>
12995
12996         * cpu-g4.md:
12997         * cpu-arm.md:
12998         * cpu-s390x.md:
12999         fix build
13000
13001 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13002
13003         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13004         compilation with sun cc.
13005
13006         * cpu-*.md: Fix the build.
13007
13008         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13009
13010         * mini-amd64.h: Add some comments to the MonoLMF structure.
13011
13012         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13013         
13014         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13015         in the LMF structure if possible. This saves two instructions in the
13016         managed->native wrappers.
13017
13018         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13019
13020 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13021
13022         * generic-sharing.c: New type argument lookup code which uses the
13023         runtime generic context template.
13024
13025 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13026
13027         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13028
13029         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13030         (mono_arch_output_basic_block): Fix localloc implementation.
13031
13032         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13033
13034         * mini-ia64.c (peephole_pass): Fix ia64 build.
13035
13036         * mini-amd64.c (peephole_pass): Fix a warning.
13037         
13038         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13039         at a constant offset from sp/fp.
13040
13041         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13042         instead of obtaining it from *lmf in the managed method case.
13043
13044 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13047
13048 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13049
13050         * mini.h (MonoInstList): New type.
13051         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13052         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13053         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13054         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13055         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13056         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13057         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13058         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13059         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13060         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13061         MONO_INST_LIST_FOR_EACH_ENTRY,
13062         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13063         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13064         mono_inst_list_first, mono_inst_list_last,
13065         mono_inst_list_next, mono_inst_list_prev): New instruction
13066         list handling interfaces.
13067         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13068         list head 'ins_list'.
13069         (MonoInst): Replace next pointer with list head 'node'.
13070         (MonoCallInst): Make 'out_args' a MonoInstList.
13071         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13072         (MonoCompile): Delete reverse_inst_list and
13073         reverse_inst_list_len.
13074         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13075         mono_arch_lowering_pass, mono_arch_local_regalloc,
13076         mono_arch_output_basic_block, mono_arch_emit_prolog):
13077         Convert to new instruction lists.
13078         (insert_after_ins): Delete.
13079         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13080         instruction lists.
13081         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13082         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13083         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13084         mono_emulate_opcode, mono_emit_load_got_addr,
13085         inline_method, mono_method_to_ir, mono_print_bb_code,
13086         print_dfn, decompose_pass, nullify_basic_block,
13087         replace_out_block_in_code, remove_block_if_useless,
13088         merge_basic_blocks, move_basic_block_to_end,
13089         try_unsigned_compare, optimize_branches, mono_print_code,
13090         mini_select_instructions, remove_critical_edges): Likewise.
13091         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13092         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13093         mono_arch_output_basic_block, mono_arch_emit_prolog):
13094         Likewise.
13095         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13096         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13097         mono_arch_output_basic_block): Likewise.
13098         (inst_list_prepend, insert_after_ins): Delete.
13099         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13100         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13101         instruction lists.
13102         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13103         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13104         mono_arch_emit_prolog): Likewise.
13105         * cfold.c (mono_constant_fold): Likewise.
13106         * liveness.c (visit_bb, mono_analyze_liveness,
13107         optimize_initlocals): Likewise.
13108         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13109         * graph.c (mono_draw_code_cfg): Likewise.
13110         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13111         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13112         mono_ssa_cprop): Likewise.
13113         * abcremoval (get_relations_from_previous_bb, process_block):
13114         Likewise.
13115         * local-propagation (mono_cprop_invalidate_values,
13116         mono_local_cprop_bb): Likewise.
13117         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13118         peephole_pass, mono_arch_output_basic_block,
13119         mono_arch_emit_prolog): Likewise.
13120         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13121         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13122         mono_arch_emit_prolog): Likewise.
13123         (insert_after_ins): Delete.
13124         * aliasing.c (print_code_with_aliasing_information,
13125         mono_build_aliasing_information, mono_aliasing_deadce):
13126         Convert to new instruction lists.
13127         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13128         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13129         mono_arch_local_regalloc, mono_arch_output_basic_block):
13130         Likewise.
13131         (insert_after_ins): Delete.
13132         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13133         peephole_pass, mono_arch_output_basic_block): Convert to
13134         new instruction lists.
13135         * mini-codegen (InstList, inst_list_prepend,
13136         insert_after_ins): Delete.
13137         (insert_before_ins, get_register_force_spilling,
13138         get_register_spilling, free_up_ireg, free_up_reg,
13139         create_copy_ins, create_spilled_store, alloc_int_reg,
13140         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13141         to new instruction lists.
13142         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13143         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13144         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13145         (insert_after_ins): Delete.
13146         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13147         mono_arch_local_regalloc, mono_arch_output_basic_block,
13148         mono_arch_call_opcode): Convert to new instruction lists.
13149         (insert_after_ins): Delete.
13150         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13151         peephole_pass, mono_arch_output_basic_block,
13152         mono_arch_emit_prolog): Convert to new instruction lists.
13153
13154 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13155
13156         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13157
13158         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13159         Fixes #353182.
13160
13161         * Makefile.am (version.h): Make this work with non-bash shells.
13162
13163 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13166
13167 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13168
13169         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13170         the InitializeArray optimization.
13171
13172 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13173
13174         * mini.c driver.c: Don't include os/gc_wrapper.h.
13175
13176 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13177
13178         * mini.c (print_jit_stats): Print GC statistics if available.
13179
13180 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13183
13184 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13185
13186         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13187
13188 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13189
13190         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13191         
13192         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13193
13194         * driver.c (mono_main): Ditto.
13195
13196 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13197
13198         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13199
13200         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13201         in the vtable can't be encoded.
13202         (compile_method): Ditto.
13203
13204 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13207         defined.
13208
13209         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13210         lmf->rbp.
13211
13212         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13213         the top LMF entry belongs to the current method.
13214
13215         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13216
13217 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13218
13219         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13220         
13221         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13222
13223         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13224
13225         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13226
13227         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13228
13229         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13230         implementation.
13231
13232         * basic-float.cs: Add an ulong->double cast test.
13233
13234 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * mini.c (mono_method_to_ir): Fix a warning.
13237
13238 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * mini-ops.h: Add OP_SWITCH.
13241
13242         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13243         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13244
13245 2007-12-11  Geoff Norton  <gnorton@novell.com>
13246
13247         * mini-s390x.c: Minor change to the MAX() define to allow
13248         it to compile with other gcc versions.
13249
13250 2007-12-11  Geoff Norton  <gnorton@novell.com>
13251
13252         * cpu-s390x.md:
13253         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13254
13255 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13256
13257         exceptions-arm.c (mono_arch_get_restore_context): Restore
13258         the frame pointer.
13259
13260         exceptions-arm.c (throw_exception): Save the frame pointer.
13261         This is a partial fix for #323747. Only the client side is
13262         fixed.
13263
13264 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13265
13266         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13267         was using an unrelated variable to log the class which
13268         needed the cctor to be called. This was crashing on arm.
13269
13270 2007-12-09  Robert Jordan  <robertj@gmx.net>
13271
13272         * mini-x86.c (mono_arch_emit_epilog):
13273         Consider all kinds of 64-bit types. Fixes #323114.
13274
13275 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13276
13277         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13278
13279 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13280
13281         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13282
13283 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13284
13285         * mini.c: run type ctor before allocating an object, not only
13286         when running it's constructor method (fixes at least part of bug #342507).
13287
13288 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13289         
13290         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13291         
13292         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13293         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13294         function.
13295
13296         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13297         mono_generic_class_init_trampoline () the same as it is done with the other
13298         trampolines.
13299
13300         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13301         aot-runtime.c aot-compiler.c: Implement AOT support.    
13302
13303 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13304
13305         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13306         build for archs which don't have the vtable trampoline defined
13307         yet.
13308
13309 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13310
13311         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13312
13313         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13314
13315         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13316
13317         * tramp-<ARCH>.c: Use the new helper function.
13318
13319 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13320
13321         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13322         trampoline call, which takes a vtable argument.
13323
13324         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13325         OP_TRAMPCALL_VTABLEs like other calls.
13326
13327         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13328         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13329         call.  Implemented a support function which fetches the vtable
13330         from a register set.
13331
13332         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13333         Implemented a generic class init trampoline, using the
13334         OP_TRAMPCALL_VTABLE opcode.
13335
13336         * mini.c: Implemented static field access when sharing generic
13337         code.  This implies initing the class using the new
13338         OP_TRAMPCALL_VTABLE call.
13339
13340 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13341
13342         * mini.c: Don't compile methods with sharing enabled if their
13343         classes are disabled for sharing.
13344
13345 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13348         opcodes. Fixes #346563.
13349
13350         * objects.cs: Add a new test.
13351
13352         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13353
13354         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13355         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13356
13357 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13360
13361 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13364         code stream.
13365
13366 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13369
13370         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13371         optimization in the AOT case.
13372         
13373 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13376         
13377         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13378
13379         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13380
13381         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13382
13383         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13384         is created by the inlined delegate ctor.
13385
13386         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13387
13388         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13389
13390 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13391
13392         * cpu-x86.md: Fix the length of ckfinite.
13393
13394 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13397         
13398         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13399         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13400
13401         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13402
13403         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13404         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13405
13406 2007-11-28  Martin Baulig  <martin@ximian.com>
13407
13408         * mini-x86.c
13409         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13410         after creating the trampoline.
13411
13412 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13415
13416         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13417         the same version.
13418
13419         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13420         instead of the calling method to help AOT.
13421
13422         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13423
13424 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13427         is defined.
13428
13429 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13430
13431         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13432         
13433         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13434         (encode_method_ref): No need to handle generic method definitions specially.
13435
13436         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13437
13438         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13439         decode_klass_info.
13440
13441         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13442         encode_klass_info.
13443         (compile_method): Enable generic sharing.
13444
13445 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13446
13447         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13448         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13449
13450         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13451         generic code.
13452
13453         * mini-trampolines.c: Fix a warning.
13454
13455         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13456         NEW_PCONST.
13457         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13458         (generic_class_is_reference_type): Remove unused function.
13459
13460         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13461         in the generic vtable trampoline case.
13462
13463         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13464         
13465         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13466         return an AOT method based on a vtable slot.
13467
13468         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13469
13470         * mini.c (mini_get_vtable_trampoline): Export this.
13471
13472 2007-11-22  Martin Baulig  <martin@ximian.com>
13473
13474         * debug-debugger.h
13475         (MonoDebuggerInfo): Move `debugger_version' up.
13476
13477 2007-11-22  Martin Baulig  <martin@ximian.com>
13478
13479         * mini-amd64.c
13480         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13481
13482         * mini-trampolines.c
13483         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13484         after compiling the method.
13485
13486 2007-11-20  Martin Baulig  <martin@ximian.com>
13487
13488         * debug-mini.c
13489         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13490         (mono_debugger_remove_breakpoint): Likewise.
13491         (mono_debugger_check_breakpoints): Likewise.
13492
13493         * debug-debugger.c: Implement the new breakpoint interface here.
13494
13495 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13496
13497         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13498         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13499
13500         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13501
13502 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13505
13506         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13507         mini.c.
13508
13509         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13510         mini.c.
13511
13512         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13513         returning a vtype in a register.
13514
13515         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13516         here from the arch specific code.
13517
13518         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13519         mini.c.
13520
13521         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13522         (mono_arch_emit_prolog): Increment maximum prolog size.
13523
13524         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13525         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13526
13527         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13528         MonoGenericSharingContext.
13529
13530         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13531         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13532
13533 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13534
13535         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13536         which extract fields out of the runtime generic context.  Full
13537         sharing of the NEWARR opcode.
13538
13539 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13540
13541         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13542         --enable-minimal=ssa.
13543
13544 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13547         mono_marshal_get_delegate_invoke () signature change.
13548
13549 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13550
13551         * mini.c: Removed the shared context in favor of the generic
13552         sharing context.  Allocate the MonoJitInfo structure with room for
13553         the generic sharing context if it's needed.
13554
13555         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13556         domain-internals.h now.
13557
13558         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13559
13560         * generic-sharing.c: Several changes for working without a shared
13561         context and instead operating on open types instead.
13562
13563 2007-11-12  David S. Miller  <davem@davemloft.net>
13564
13565        * inssel-sparc.brg: Fix double instruction emit.
13566
13567 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13568
13569         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13570         Get/Set/Address methods.
13571         
13572         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13573         mono_marshal_get_delegate_invoke signature change.
13574
13575 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13576
13577         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13578         This can happens with dynamic methods. Fixes the other bug in #322722.
13579
13580 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13581
13582         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13583         BX call sequence.
13584
13585         * mini-arm.c (arm_patch): Implement patching of BX call
13586         sequence. Fixes one of the bugs in #322722.
13587
13588 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13589
13590        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13591        under Linux.  We only need to flush every 32-byte cache line.    
13592
13593 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13594
13595         * mini.c:
13596         move_basic_block_to_end: Add branches when needed, eventually creating
13597         a new BB.
13598         optimize_branches: added a parameter that tells if it's ok to create
13599         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13600         and avoid calling move_basic_block_to_end when it's not ok.
13601         Fixes bug 318677.
13602
13603 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13604
13605         * mini.c: Abort inlining call to InitializeArray if something
13606         looks wrong.  Let the icall handle it, which now has proper safety
13607         checks.
13608
13609 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13610
13611         * mini.c (mono_spill_call): add support for soft-float.
13612
13613         * mini.c (mono_method_to_ir): add support for soft-float
13614         to inlined functions that return float.
13615
13616         * mini.c (mono_method_to_ir): add support for soft-float
13617         to cee_stsfld opcode on float fields.
13618
13619 2007-11-05  Geoff Norton  <gnorton@novell.com>
13620
13621         * mini-x86.h: Fix the structure access for X86 Leopard.
13622
13623
13624 2007-11-05  Martin Baulig  <martin@ximian.com>
13625
13626         * mini-trampolines.c
13627         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13628         after compiling the method to notify the debugger.
13629
13630 2007-11-05  Martin Baulig  <martin@ximian.com>
13631
13632         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13633
13634 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13635
13636         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13637         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13638
13639 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13640
13641         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13642         native-to-managed wrappers.
13643         
13644 2007-11-01  Geoff Norton  <gnorton@novell.com>
13645
13646         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13647         members.
13648
13649 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13650
13651         * mini.c, mini-x86.c: when getting back from unmanaged code
13652         to managed via a marshaled delegate we also need to set the
13653         right domain.
13654
13655 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13656
13657         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13658         for amd64.
13659
13660 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13661
13662         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13663         let the debugger or other external agents to tell the JIT when
13664         a sw breakpoint has been inserted in the code that the JIT needs
13665         to be able to inspect.
13666
13667 2007-10-31  Martin Baulig  <martin@ximian.com>
13668
13669         * debug-debugger.h
13670         (MonoDebuggerInfo): Remove `runtime_class_init'.
13671
13672 2007-10-30  Martin Baulig  <martin@ximian.com>
13673
13674         * debug-mini.h
13675         (mono_debugger_thread_created): Added `MonoThread *' argument.
13676         (mono_debugger_extended_notification): New public method.
13677         (mono_debugger_trampoline_compiled): New public method.
13678
13679         * debug-mini.c
13680         (MonoDebuggerThreadInfo): Added `thread' and
13681         `extended_notifications' fields.
13682
13683         * debug-debugger.c
13684         (debugger_executable_code_buffer): New static variable.
13685
13686         * debug-debugger.h
13687         (MonoDebuggerInfo): Added `executable_code_buffer',
13688         `executable_code_buffer_size', `breakpoint_info_area',
13689         `breakpoint_table' and `breakpoint_table_size'.
13690
13691 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13692
13693         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13694         that IP  either is an unused value or the vtable pointer. IMT 
13695         calls use vtable + offset now. Reduced by almost half the size
13696         of IMT entries.
13697
13698 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13699
13700         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13701         defines to access param registers. Replace long usage with
13702         gsize as sizeof(long) != sizeof(void*) on Win64.
13703
13704         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13705         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13706         instead of non-existant _GetAddressOfReturnAddress.
13707
13708         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13709         param registers. Save/restore %rdi and %rsi in MonoLMF.
13710
13711         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13712         param registers. Modify (throw_exception) signature to take 
13713         %rdi and %rsi on Win64. 
13714
13715         Code is contributed under MIT/X11 license.
13716
13717 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13718
13719         * helpers.c: unlink debugging output files.
13720
13721 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13722
13723         * mini.c: Move mono_create_ftnptr () to object.c.
13724
13725 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13726
13727         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13728         optional. This function can now be used to disassemble code generated
13729         outside the JIT such as trampolines and IMT thunks.
13730
13731         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13732
13733         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13734         vtable pointer from a ldr instruction.
13735
13736         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13737         new IMT call sequence.
13738
13739         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13740         call sequence for interface invocations.
13741
13742         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13743         for imt support. This function is empty since IMT on ARM requires no
13744         special handling on the IR side.
13745
13746         * mini-arm.c (mono_arch_find_imt_method): added, required for
13747         imt support.
13748
13749         * mini-arm.c (mono_arch_find_this_argument): added, required
13750         for imt support.
13751
13752         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13753         a ldr instruction to load a value stored in the code stream.
13754
13755         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13756         for imt support.
13757
13758
13759 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13760
13761         * mini.c (mini_init): Install the jump trampoline callback.
13762
13763 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13764
13765         * mini-trampolines.c: handle synchronized methods with the common
13766         vtable trampoline (bug #335601).
13767
13768 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13771
13772         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13773         64 bit platforms.
13774
13775         * mini-ia64.h mini-ia64.c: Add support for IMT.
13776
13777         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13778         prolog. Fixes #331958.
13779
13780 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13781
13782         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13783
13784 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13785
13786         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13787         trampoline.
13788
13789 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13790
13791         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13792         trampoline.
13793
13794 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13795
13796         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13797         trampoline.
13798
13799 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13800
13801         * mini-trampolines.c: changed the magic rampoline to understand
13802         the common vtable trampoline method: the method to invoke is
13803         determined by the vtable displacement of the call.
13804
13805 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13806
13807         * mini.c, mini.h: register the common vtable trampoline if the
13808         architecture supports it.
13809
13810 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13811
13812         * cpu-amd64.md: use the correct max length for tls_get.
13813
13814 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13817         CEE_STELEM_ANY. Fixes #333696.
13818
13819 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13820
13821         * exceptions-x86.c: provide more graceful handling of the case where
13822         we followed a bogus function pointer from managed code (bug #332866).
13823
13824 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13825
13826         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13827         replaces the generic_shared flag and will carry more information
13828         in the future.
13829
13830         * generic-sharing.c: Added mini_type_stack_size() which allows
13831         allows open types if given a generic sharing context.
13832         mini_get_basic_type_from_generic() takes a
13833         MonoGenericSharingContext* instead of a MonoCompile* now.
13834
13835         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13836         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13837         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13838         changes above.  Just passing arguments through to the right
13839         places.
13840
13841 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13842
13843         * mini-arm.c: unify the call emission to emit_code_seq().
13844
13845 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13846
13847         * tramp-arm.c: reduced the trampoline size.
13848
13849 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13850
13851         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13852         variable handling out of arch-specific code.
13853
13854 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13855
13856         * mini-arm.c: implemented fast delegate dispatch.
13857
13858 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13861         that fp elimination is turned off if the space required by locals is too
13862         big. Fixes #331958.
13863
13864 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13865
13866         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13867         ARM to the new style trampoline.
13868
13869 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13872
13873         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13874
13875 2007-10-09  Martin Baulig  <martin@ximian.com>
13876
13877         * debug-debugger.h
13878         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13879         `field_info_offset_offset'.     
13880
13881 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13882
13883         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13884         removed more internal usage of the r11 register and made it available
13885         to the register allocator.
13886
13887 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13888
13889         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13890         when sharing generics and treat type variables as references.
13891
13892 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13893
13894         * mini-ppc.c: started removing the internal uses of register r11
13895         to eventually allow the register allocator to manage it as an
13896         additional available register.
13897
13898 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13899
13900         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13901
13902 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13903
13904         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13905         specific trampolines as they are not performance critical as a jump
13906         target (maybe align as before only for AOT code?). This saves about
13907         200 KB of native code on x86 for monodevelop startup.
13908
13909 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13910
13911         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13912         monodevelop startup.
13913
13914 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13915
13916         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13917
13918         * mini-sparc.h mini-sparc.c: Implement IMT support.
13919
13920         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13921         its smaller and doesn't clobber sparc_g1.
13922
13923         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13924
13925 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13926
13927         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13928
13929 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13930
13931         * mini-ppc.c: implemented fast delegate invocation.
13932
13933 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13934
13935         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13936
13937 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13938
13939         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13940         code to the new style trampoline in preparation for IMT support.
13941
13942 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13943
13944         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13945         systems already. This also reduces the specific trampiline sizes and
13946         prepares for the use of r12 as the IMT identifier register.
13947
13948 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13949
13950         * mini-mips.h: endianess fix (simplified from a patch by
13951         Thomas Kunze <thommy@tabao.de>, bug #323737).
13952
13953 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13954
13955         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13956         to access ucontext fields and enable netbsd support
13957         (partially from Magnus Henoch <mange@freemail.hu>).
13958
13959 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13960
13961         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13962         use the preprocessor from the CPP env var if it is set.
13963
13964 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13965
13966         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13967         code, before interface_offset gets used.
13968
13969 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13970
13971         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13972         mono_class_setup_vtable () before accessing klass->vtable.
13973
13974 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13977         hackish.
13978
13979 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13980
13981         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13982         IMT slots (this saves hundreds of KB of memory in programs like
13983         IronPython and Monodevelop).
13984
13985 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13986
13987         * mini.c: print the delegate counter.
13988
13989 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13990
13991         * mini-x86.c: make it easier to enable the debugging code for IMT
13992         slots.
13993
13994 2007-09-28  Martin Baulig  <martin@ximian.com>
13995
13996         * debug-debugger.h
13997         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13998         `mono_method_klass_offset' and `mono_method_token_offset'.
13999
14000 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14001
14002         * mini.c: First generics sharing implementation.  Can only share
14003         in very simple cases.  If sharing doesn't work it falls back to
14004         dedicated compilation.
14005
14006         * mini.h: Flag in MonoCompile to specify whether generic
14007         compilation is shared.  Flags enum for marking which generic inst
14008         of a context is used.  Prototypes for helper functions.
14009
14010         * generic-sharing.c: Helper functions for generic method sharing.
14011
14012         * optflags-def.h: Optimization flag (gshared) for enabling generic
14013         method sharing added.
14014
14015         * Makefile.am: generic-sharing.c added.
14016
14017 2007-09-19 Daniel Nauck <dna@mono-project.de>
14018
14019         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14020
14021 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14022         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14023         fixes bug 325507.
14024
14025 2007-09-19  Martin Baulig  <martin@ximian.com>
14026
14027         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14028         mono_debug_cleanup() is now part of mono_cleanup().
14029
14030 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * driver.c (mono_main): Fix a warning.
14033
14034 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14035
14036         * aot-compiler.c: Optimize various parts when processing large assemblies.
14037         Fixes ##325568.
14038
14039         * mini.c (mono_patch_info_hash): Improve hash function.
14040
14041 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14042
14043         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14044         
14045         Code is contributed under MIT/X11 license.
14046
14047 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14048
14049         * mini.c (mini_init): Fix a leak.
14050
14051         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14052
14053 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14054
14055         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14056
14057 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14060
14061 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14062
14063         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14064         variance tests.
14065
14066         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14067
14068         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14069
14070         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14071
14072         * aot-runtime.c (decode_patch_info): Ditto.
14073
14074 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14075
14076         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14077         static case. Cache delegates in architecture specific code, 
14078         based on number of parameters.
14079         
14080         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14081         in architecture specific code, based on number of parameters.
14082         
14083         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14084         caching happen in architecture specific code now.
14085         
14086         Code is contributed under MIT/X11 license.
14087
14088 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14089
14090         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14091         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14092         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14093
14094         Code is contributed under MIT/X11 license.
14095
14096 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14097         * mini.c: (mono_thread_abort) Fixed bug #82416.
14098
14099 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14100
14101         * mini.: hook the new managed GC allocation feature into the JIT.
14102
14103 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14104
14105         * mini.c: implementation for the new runtime tls opcode.
14106
14107 2007-09-11  Martin Baulig  <martin@ximian.com>
14108
14109         * debug-debugger.h
14110         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14111         `mono_method_inflated_offset'.
14112
14113 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14114
14115         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14116         async exceptions into a method.
14117
14118         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14119         purpose of testing whenever the unwinder works at every instruction.
14120
14121 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14122
14123         * mini.c: check accessibility of method used in ldftn (fixes
14124         bug #82635).
14125
14126 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14127
14128         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14129
14130         * inssel.brg: Fix a warning.
14131
14132 2007-09-03  Martin Baulig  <martin@ximian.com>
14133
14134         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14135         now takes the `main_method' as argument.
14136
14137 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14138
14139         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14140
14141 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14142
14143         * driver.c: include the cil-coff.h header on Windows.
14144         
14145         Code is contributed under MIT/X11 license.
14146
14147 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14148
14149         * mini.c, driver.c: don't include the cil-coff.h header.
14150
14151 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14152
14153         * mini.c: flag places that needs fixes fo soft-float support.
14154
14155 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14156
14157         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14158         endian systems (partially from Dean Jenkins, bug #81924).
14159
14160 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14161
14162         * mini.c (check_linkdemand): Remove embedded reference object in
14163         call to LinkDemandSecurityException.
14164         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14165         with an IntPtr instead of a reference object.
14166
14167 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14168
14169         * mini.c (handle_initobj): Handle alignment properly.
14170
14171         * inssel.brg (mini_emit_memset): Ditto. 
14172
14173         * inssel.brg (mini_emit_memcpy): Ditto. 
14174
14175         * inssel-sparc.brg: Ditto.              
14176
14177         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14178
14179 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14182         exceptions raised in unmanaged code. Fixes part of #82594.
14183
14184 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14185
14186         * mini.c (mono_method_to_ir), declsec.c
14187         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14188
14189 2007-08-22  Martin Baulig  <martin@ximian.com>
14190
14191         * debug-mini.h
14192         (MonoDebuggerThreadInfo): New typedef.
14193         (mono_debugger_thread_table): New global variable.
14194         (mono_debugger_thread_created): New public function.
14195         (mono_debugger_thread_cleanup): New public function.
14196
14197         * debug-debugger.h
14198         (MonoDebuggerInfo):
14199         - removed `get_current_thread' and `lookup_assembly'.
14200         - removed `data_table'.
14201         - added `thread_table'.
14202
14203         * mini.c
14204         (mono_thread_start_cb): Call mono_debugger_thread_created().
14205         (mono_thread_attach_cb): Likewise.
14206         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14207         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14208         initial domain.
14209
14210         * driver.c (mono_main): Move mono_debug_init() up, before calling
14211         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14212
14213 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14214
14215         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14216         together when passing several arguments of type double (gives a small
14217         speedup and saves a few bytes of generated code).
14218
14219 2007-08-20  Jb Evain  <jbevain@novell.com>
14220
14221         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14222
14223 2007-08-20  Jb Evain  <jbevain@novell.com>
14224
14225         * mini.c (mono_method_to_ir): throw MethodAccessException
14226         and FieldAccessException instead of InvalidProgramException.
14227
14228 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14229
14230         * mini.c: CoreCLR security checks.
14231
14232         * mini.h: Removed MonoSecurityMode (moved to
14233         metadata/security-manager.h) and mono_security_mode global var
14234         (replaced by set/get functions in security-manager.h).
14235
14236         * driver.c: Added "core-clr-test" security mode for testing.  Used
14237         set-function for setting security mode.
14238
14239 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14240
14241         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14242         the new jit_info_table.
14243
14244         * driver.c: Test code for the new jit_info_table (enabled by the
14245         define MONO_JIT_INFO_TABLE_TEST).
14246
14247 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14248
14249         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14250         detection of call <REG> instruction sequence. Fixes build on freebsd.
14251
14252 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * mini-exceptions.c: Fix a warning.
14255
14256 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14259         stack overflow handling code on amd64 too.
14260
14261         * mini-exceptions.c (mono_setup_altstack): Make this use 
14262         mono_thread_get_stack_bounds ().
14263
14264         * mini-x86.h: Disable sigaltstack on solaris x86.
14265
14266 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14267
14268         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14269
14270 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14271
14272         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14273
14274 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14275
14276         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14277
14278         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14279
14280 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14281
14282         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14283         due to alignment.
14284
14285 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14286
14287         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14288         to be emitted (bug #82281).
14289
14290 2007-08-01  Martin Baulig  <martin@ximian.com>
14291
14292         Merged the `debugger-dublin' branch.
14293
14294         * debug-debugger.h (MonoDebuggerInfo):
14295         Removed the `old_*' compatibility entries.
14296         Added `debugger_version' and `data_table'.
14297         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14298         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14299
14300         * debug-mini.c
14301         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14302         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14303         instead of a `gconstpointer'.
14304         (mono_debugger_insert_method_breakpoint): Return a
14305         `MonoDebugMethodAddressList *'.
14306
14307 2007-06-28  Martin Baulig  <martin@ximian.com>
14308
14309         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14310
14311 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14314         __builtin_frame_address () since it is broken on older gcc versions.
14315
14316 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14317
14318         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14319         on the stack overflow handling and made the managed stack overflows
14320         catchable in most cases using soft guard pages.
14321         * exceptions-x86.c: added code to restore the protection in the soft
14322         guard pages at the end of exception handling.
14323
14324 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14327
14328 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14329
14330         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14331         exception handling.
14332
14333 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14334
14335         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14336         signal handling support until it has been ported to the new mechanism.
14337         * mini.c: fixed stack overflow detection and use the new
14338         architecture code  to handle signals on the altstack.
14339
14340 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14341
14342         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14343         stack overflows on the alt stack.
14344
14345 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14346
14347         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14348         stack overflows on the alt stack.
14349
14350 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14351
14352         * exceptions-ppc.c: cleanup preparing for altstack support.
14353
14354 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14355
14356         * exceptions-arm.c: cleanup preparing for altstack support.
14357
14358 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14359
14360         * mini.c (print_jit_stats): Output hazard pointer stats.
14361
14362 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14363
14364         * driver.c, mini.c: Replaced security mode flags with a single
14365         enum variable.
14366
14367 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14368
14369         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14370
14371 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14372
14373         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14374         (which doesn't do anything yet) for activating Core CLR
14375         (Silverlight) security.
14376
14377 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini-codegen.c: work around a possible gcc bug on arm.
14380
14381 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14382
14383         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14384         message for platforms that don't support AOT compilation.
14385
14386 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14387
14388         * mini.h, mini.c, driver.c: temporary smcs hack.
14389
14390 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14391
14392         * mini-arm.h, mini-arm.c: arm EABI fixes.
14393
14394 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14397         case.
14398
14399         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14400         trampolines taking a method argument.
14401
14402         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14403
14404         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14405         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14406
14407         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14408         JIT compilation throws an exception. Fixes #82050.
14409
14410 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14411
14412         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14413         with the MONO_EXCEPTION_ defines.
14414
14415 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14418         #82117.
14419         
14420         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14421         the cause of an assertion.
14422
14423 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14424
14425         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14426         removed.
14427
14428 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14429
14430         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14431         assert. Should fix #82103.
14432
14433 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14434
14435         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14436         here too. Fixes #82095.
14437
14438         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14439         addresses.
14440
14441         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14442
14443         * mini-amd64.h: Enable IMT for amd64.
14444         
14445         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14446
14447 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14448
14449         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14450
14451 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14452
14453         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14454         as soon as check_linkdemand sets an exception_type.
14455
14456 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14457
14458         * mini-x86.c: fixed offsets for IMT call sequence.
14459         * mini-x86.h: enable IMT again.
14460
14461 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14462
14463         * trace.c (mono_trace_enter_method): Decode MonoType too.
14464
14465         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14466
14467         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14468
14469         * mini-amd64.c: Add preliminary IMT implementation.
14470         
14471 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14474         understand the new IMT-base interface invocation (thanks to
14475         Daniel Nauck for the report and the remote debugging session).
14476
14477 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14478
14479         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14480
14481 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14484
14485 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14486
14487         * mini-trampolines.c: implement AOT IMT support.
14488         * mini-x86.h: enable IMT support for wider testing.
14489
14490 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14491
14492         * inssel.brg (emit_imt_argument): Add aot support here.
14493
14494         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14495
14496 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14497
14498         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14499         of the IMT implementation, partially from massi, with my
14500         implementation of the bsearch sequence. Disabled by default until
14501         the AOT code is implemented.
14502
14503 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14504
14505         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14506
14507         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14508
14509 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14510
14511         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14512         arch-independent IMT JIT code from Massimiliano
14513         Mantione (massi@ximian.com) with small cleanups from me.
14514
14515 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14516
14517         * Makefile.am: fix svn invocation to get the svn revision to be
14518         independent of the local language (build fix).
14519
14520 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14521
14522         * mini.c (inline_method): Reset cfg->exception_type if the
14523         inlining is aborted.  Fixes: 82049.
14524
14525 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14526
14527         * mini.c: remove assert from exception handling code when exception_ptr
14528         is not set.
14529
14530 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14531
14532         * mini.c (mono_codegen): Add an assert.
14533
14534         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14535         enter and leave code.
14536         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14537
14538 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini-ppc.c: fixed memory corruption for localloc(0)
14541         (bug #81852).
14542
14543 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14544         
14545         * mini.c: Fix warnings.
14546
14547 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14548
14549         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14550         to emit better double->int conversions.
14551
14552 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini.c: the provided Min/Max optimizations are valid for unisgned
14555         ints.
14556
14557 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14558
14559         * 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
14560
14561 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14562
14563         * mini.c (mono_running_on_valgrind): Add support for reporting the
14564         method and  its boundaries to valgrind.
14565
14566 2007-06-28  Martin Baulig  <martin@ximian.com>
14567
14568         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14569
14570 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14573
14574         * generic.2.cs: Add new test case.
14575
14576 2007-06-25  Martin Baulig  <martin@ximian.com>
14577
14578         Merged the `debugger-dublin' branch.
14579
14580         * debug-mini.c
14581         (mono_debugger_insert_method_breakpoint): New public method.
14582         (mono_debugger_remove_method_breakpoint): Likewise.
14583         (mono_debugger_check_breakpoints): New static method.
14584         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14585
14586         * debug-debugger.h (MonoDebuggerInfo):
14587         Renamed (to keep backward compatibility in the vtable):
14588         `insert_breakpoint' -> `old_insert_breakpoint'.
14589         `remove_breakpoint' -> `old_remove_breakpoint'.
14590         `create_string' -> `old_create_string'.
14591         `lookup_class' -> `old_lookup_class'.
14592         `lookup_type' -> removed; changed into a dummy field.
14593         `lookup_assembly' -> `old_lookup_assembly'.
14594         Added (same functionality, but different signature):
14595         `create_string', `lookup_class', `lookup_assembly'
14596         Added new:
14597         `get_method_addr_or_bpt', `remove_method_breakpoint',
14598         `runtime_class_init'.
14599
14600         * debug-debugger.c: Merged the `debugger-dublin' branch.
14601
14602 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14603
14604         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14605         well.
14606         (peephole_pass): Likewise.
14607
14608 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14609
14610         * driver.c: hopefully make setaffinity work also for ancient
14611         versions of linux.
14612
14613 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14614
14615         * driver.c : win32 build fix.
14616
14617 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14618
14619         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14620         processor if it is set.
14621
14622 2007-06-21  Martin Baulig  <martin@ximian.com>
14623
14624         * debug-mini.h: New file.
14625
14626         * debug-mini.c
14627         (mono_debugger_insert_breakpoint_full): Moved here from
14628         ../metadata/mono-debug-debugger.c.
14629         (mono_debugger_remove_breakpoint): Likewise.
14630         (mono_debugger_breakpoint_callback): Likewise.
14631
14632 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14633
14634         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14635         changes in MonoGenericClass.
14636
14637 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14638
14639         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14640
14641 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14642
14643         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14644         removal of MonoGenericMethod.
14645
14646 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-exceptions.c: hooks for the exception events profiling API.
14649
14650 2007-06-14  Randolph Chung  <tausq@debian.org>
14651
14652         * Makefile.ma: Add hppa target.
14653         * mini-arch.h: Include mini-hppa.h
14654         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14655         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14656         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14657
14658 2007-06-14  Randolph Chung  <tausq@debian.org>
14659
14660         * inssel.brg: Add rules for "chained" compare-branch operations so that
14661         a single compare op can affect multiple branches.  Adjust cost for
14662         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14663         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14664         cost for some rules so that they can more easily be overridden by
14665         per-arch rules (with fixes from lupus).
14666         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14667
14668 2007-06-13  Randolph Chung  <tausq@debian.org>
14669
14670         * mini-ops.h: Reorder branch ops so that they match the order of the
14671         corresponding CEE_* ops.  The code expects them this way.
14672         Add new ops for HPPA target.
14673         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14674
14675 2007-06-13  Randolph Chung  <tausq@debian.org>
14676
14677         * mini-exceptions.c: Handle cases where the stack grows towards
14678         larger addresses.
14679         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14680
14681 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14682
14683         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14684         counter.
14685         * driver.c: explain where a non-matching corlib is found.
14686
14687 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14688
14689         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14690
14691 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14692
14693         * mini-exceptions.c: Generate a method profile leave event during
14694         an exception to ensure that the profiler gets notified.
14695
14696 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14697
14698         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14699         branch.
14700
14701         * cpu-amd64.md: Add long_and/or/xor opcodes.
14702
14703 2007-06-06  Wade Berrier  <wberrier@novell.com>
14704
14705         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14706         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14707         length of instruction shr_imm (expected 8, got 10)
14708
14709 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14710
14711         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14712
14713 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14714
14715         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14716         MonoInternalHashTable again (fixed bug in the internal hash table
14717         code).
14718
14719 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14720
14721         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14722         Have to figure out what makes it crash the SWF regression.
14723
14724 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14725
14726         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14727
14728 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14729
14730         * mini.c: optimize out the type check when storing null in a
14731         reference array.
14732
14733 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14734
14735         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14736         MonoInternalHashTable.
14737
14738 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14739
14740         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14741         signed integer methods.
14742
14743 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14744
14745         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14746         permanently since the current approach doesn't work.
14747
14748 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14749
14750         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14751         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14752
14753 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14754
14755         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14756         the sreg2==rdx case.
14757         
14758         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14759         account if it contains a rex prefix.
14760         (peephole_pass): Handle OP_FMOVE as well.
14761
14762 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14763
14764         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14765         as it causes regressions.
14766
14767 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14770         static case as well.
14771
14772         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14773
14774         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14775         (mono_arch_get_this_arg_from_call): Ditto.
14776
14777         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14778
14779         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14780         invoke_impl field.
14781
14782         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14783         (mono_arch_get_this_arg_from_call): Ditto.
14784
14785         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14786         
14787         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14788         try to create optimized invoke code and use that for further invocations. 
14789         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14790
14791         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14792
14793 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14794
14795         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14796         sealed classes or methods.
14797         *devirtualization.cs: tests for the new optimization
14798
14799 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14800
14801         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14802         by the update_volatile () function.
14803
14804 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14805
14806         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14807         require it.
14808
14809         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14810
14811 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14812
14813         * mini.c: Add configure checks for header files.
14814         * mini-x86.c: Add configure checks for header files.
14815         * trace.c: Add configure checks for header files.
14816         * aot-runtime.c: Add configure checks for header files.
14817         * aot-compiler.c: Add configure checks for header files.
14818         * driver.c: Add configure checks for header files.
14819         * mini-codegen.c: Add configure checks for header files.
14820         
14821         Code is contributed under MIT/X11 license.
14822
14823 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14824
14825         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14826         icompare_imm -128 + op_iclt. Fixes #81703.
14827
14828 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14829
14830         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14831
14832 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14833
14834         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14835         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14836         so that all isinst checks now use "interface_bitmap".
14837
14838 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14839
14840         * cpu-amd64.md (jmp): Fix a warning.
14841
14842         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14843
14844         * basic.cs: Add new regression test.
14845
14846         * basic.cs: Remove test which is now in basic-long.cs.
14847
14848         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14849
14850         * basic-long.cs: Add new test.
14851         
14852 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14855
14856 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14859
14860         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14861         places.
14862         
14863         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14864         throwing code a bit.
14865
14866         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14867         the exception throwing code a bit.
14868
14869         * mini-x86.c (get_call_info): Allocate result from a mempool.
14870
14871 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14872
14873         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14874
14875         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14876
14877         * mini.h (MonoCompile): Add 'token_info_hash' field.
14878
14879         * mini.c: Save token->method associations during compilation so the AOT 
14880         compiler can use it.
14881         
14882         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14883         which reference generic classes and methods.
14884
14885 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14886
14887         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14888
14889         * aot-compiler.c (compile_method): Fix a typo in a comment.
14890
14891         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14892
14893         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14894         everything generic.
14895
14896         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14897
14898 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14899
14900         * mini.h (MonoCompile): Add 'args' field.
14901
14902         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14903         into cfg->args.
14904
14905         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14906
14907 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14908
14909         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14910
14911         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14912
14913         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14914         opcodes for some opcodes.
14915
14916         * mini.h *.brg *.c: Use the new opcodes.
14917
14918 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14919
14920         * mini.h: Bumped aot revision.
14921
14922         * inssel.brg: modified code generation of type checks for interfaces
14923         to use the new "MonoClass.interface_bitmap" instead of the old
14924         "MonoClass.interface_offsets".
14925
14926 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14927
14928         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14929
14930 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14933         64 bit platforms.
14934
14935 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14936
14937         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14938
14939 2007-04-27  Wade Berrier  <wberrier@novell.com>
14940
14941         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14942         mini.h) to fix build.
14943
14944 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14947         
14948         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14949         causes the corlib unit tests to fail.
14950
14951 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14952
14953         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14954
14955         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14956
14957         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14958         opcodes to the comparison relations.
14959
14960         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14961         opcodes to their types.
14962         
14963         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14964
14965         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14966         it in cfg->arch.cinfo.
14967
14968         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14969
14970         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14971         cfg->cil_offset_to_bb.
14972
14973 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14974
14975         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14976         created becase of initlocals.
14977
14978 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14979
14980         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14981         Sergey Tikhonov <tsv@solvo.ru>.
14982
14983 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14984
14985         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14986
14987 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * cpu-s390.md (break): Correct the length of break instruction.
14990
14991 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14992
14993         * mini.c: fix a couple of soft-float issues and comments.
14994
14995 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14996
14997         * trace.c (is_filenamechar): - is also a filename char.
14998
14999 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15000
15001         * mini-s390.c: Correct checking for enum type in return value processing.
15002
15003 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15004
15005         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15006         (version.h): Makefile is in the build directory.
15007
15008 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15009
15010         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15011
15012 2007-04-11  Martin Baulig  <martin@ximian.com>
15013
15014         * mini.c (can_access_member): Fix handling of generic classes;
15015         fixes #81259.
15016
15017 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15020
15021 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15022
15023         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15024
15025 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15026
15027         * mini-codegen.c: make sure the right spill amount is
15028         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15029
15030 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15031
15032         * mini-ppc.c: fixes for the fp_branch_nan test.
15033
15034 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15035
15036         * basic.cs: Comment out new test which still fails on ia64.
15037
15038 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15039
15040         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15041
15042 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15043
15044         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15045
15046 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15047
15048         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15049         on 64 bit machines. Fixes part of #80738.
15050
15051         * basic.cs: Add regression test.
15052
15053 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15054
15055         * inssel.brg basic.cs: Revert previous change to fix build.
15056
15057         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15058         platforms.
15059         
15060         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15061
15062         * basic.cs: Add new regression test.
15063
15064 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15065
15066         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15067         many arguments.
15068
15069 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15070
15071         * cpu-s390x.md: Correct length of break instruction.
15072
15073 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15074
15075         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15076         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15077
15078 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15079
15080         * *.c: Begin WIN64 port.
15081         * mini.c:  Use correct register in profiler.
15082         * mini-amd64.c: No inline assembly on Win64.
15083         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15084         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15085         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15086         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15087         mono_arch_ip_from_context for Win64.
15088         
15089         Contributed under MIT/X11 license.
15090
15091 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15092
15093         * exceptions-amd64.c (seh_handler): Ditto.
15094
15095         * exceptions-x86.c (seh_handler): Fix a memory leak.
15096
15097 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15098
15099         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15100         mini-s390x.c: fixed peephole optimizations to deal
15101         correctly with 1 and 2 byte reload avoidance.
15102
15103 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15104
15105         * cpu-s390.md, cpu-s390x.md: update localloc length.
15106
15107 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15108
15109         * cpu-g4.md: added missing descriptions.
15110
15111 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15112
15113         *  Makefile.am: Add support so the tail tests are not executed on
15114         PowerPC as that is a known limitation of the PowerPC port.
15115
15116 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15117
15118         * runmdesc.bat:  Move to msvc directory.
15119         
15120 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15121
15122         * runmdesc.bat:  Run executable that was produced by the current
15123         target and sent via an argument.
15124         
15125 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15126
15127         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15128         #81102.
15129
15130         * generics.2.cs: Add regression test.
15131
15132 2007-03-09  Wade berrier  <wberrier@novell.com>
15133
15134         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15135
15136 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15137
15138         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15139         AOT code depends on this.
15140
15141 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15142
15143         * mini.c: more precise tracking of types in the eval stack
15144         (part of fix for bug #81044).
15145
15146 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15149
15150         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15151
15152 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15155
15156         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15157
15158 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15159
15160         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15161         a pointer on 64 bit systems. Fixes #80190.
15162
15163         * iltests.il: Add new regression test.
15164
15165 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15168
15169 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15170
15171         * trace.c: Remove an erroneous alignemnt check when tracing.
15172           Fixes --trace on OSX86.
15173
15174 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15175
15176         * mini-$(arch).h: initialize SP in context for all the archs.
15177
15178 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15179
15180         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15181         regressions in the thread tests.
15182
15183 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15186         - fixed implementation of LOCALLOC opcode
15187         - implemented non-un compare for floats
15188         - code cleanup
15189         - implementation of FDIV and CKFINITE opcodes
15190         - fixes for latest mono updates
15191         - additional arch opcodes
15192
15193 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15194
15195         * Makefile.am: simplify and merge rules for cross-compilation.
15196
15197 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15198
15199         * local-propagation.c: Actually *apply* the fix for bug 80591...
15200
15201 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15202
15203         * mini-exceptions.c: backuot part of the last change
15204         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15205
15206 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15207         * inssel.brg: Fix bug 59286.
15208
15209
15210 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15211
15212         * mini-exceptions.c: patch from Zoltan to correctly check for
15213         stack boundaries (using the stack register, not the frame register),
15214         fixes bugs #80724, #79717.
15215
15216 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15219         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15220
15221         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15222         presence of frame pointer elimination.
15223
15224 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15225         
15226         * mini-x86.h: NetBSD UCONTEX_REG defines.
15227
15228 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15229
15230         * inssel-amd64.brg: Fix amd64 build.
15231
15232 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15233
15234         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15235         on amd64.
15236
15237 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15238
15239         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15240         ends.
15241
15242         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15243
15244 2007-01-30 Mark Mason <mason@broadcom.com>
15245
15246            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15247            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15248            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15249            beginning support for CEE_JMP [not quite working yet]
15250            * tramp-mips.c: LMF handling now works
15251         
15252 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15253
15254         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15255
15256         * mini.h (NULLIFY_INS): New macro.
15257
15258 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15259
15260         * mini.c: statistical profiler fix for windows, patch
15261         from Tor Lillqvist (tml@novell.com).
15262
15263 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15264         * local-propagation.c: Fix bug 80591.
15265
15266 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15267
15268         * Makefile.am: put back the --export-dynamic option as with
15269         the previous gmodule flags (thanks to Robert Jordan).
15270
15271 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15274
15275         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15276         simplify and speed up the local register allocator. Also rename some fields
15277         like iassign->vassign.
15278         
15279         * regalloc.c: Remove some functions which are no longer used since their
15280         inlined version is in mini-codegen.c.
15281         
15282         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15283
15284         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15285
15286 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15287
15288         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15289         narrowing. Fixes #80622.
15290
15291         * iltests.il: Add new regresssion test. 
15292
15293 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15294
15295         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15296         debug-debugger.c, debug-debugger.h: warning fixes.
15297         * driver.c: updated copyright year and made it fit in one line.
15298
15299 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15300
15301         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15302
15303 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15304
15305         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15306
15307         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15308
15309         * iltests.il: Add new test for bug #80507.
15310
15311 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15312
15313         * mini-arm.h: use soft-float also on vfp for now.
15314
15315 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15316
15317         * mini.c: fix some more soft-float issues.
15318
15319 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15322
15323 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15324         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15325         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15326         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15327
15328 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * mini-arm.c: typo fix.
15331
15332 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15333
15334         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15335
15336 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15337
15338         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15339         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15340
15341         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15342
15343         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15344
15345         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15346         
15347         * inssel.brg: Fix a warning.
15348
15349         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15350
15351         * abcremoval.c ssa.c ssapre.c: Update after this change.
15352         
15353         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15354
15355         * dominators.c (df_set): Use mono_bitset_union_fast.    
15356
15357 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15358
15359         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15360         mini-codegen.c: reduce relocations and memory usage for the cpu
15361         description.
15362
15363 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15364
15365         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15366
15367         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15368         to reduce their size.
15369
15370 2007-01-19 Mark Mason <mason@broadcom.com>
15371
15372         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15373         * mini-mips.c: more configuration macros, support long conditional branches, additional
15374         asserts, fix epilog instrumentation.
15375         * mini-mips.h: use standard stack walk
15376         * cpu-mips.md: increase size of div, rem and conditional branches
15377         
15378 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15379
15380         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15381         to cpu spec data.
15382
15383 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15384
15385         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15386         (compile_method): Ditto.
15387
15388         * aot-runtime.c (decode_klass_info): Ditto.
15389
15390         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15391         needed by the code generated by inssel.brg. Also fix a warning.
15392
15393 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * mini.c: deal with enums that become genericinsts by
15396         being nested in a generic class (bug #79956).
15397
15398 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15399
15400         * mini.c: match the generic definition to check for
15401         private access with generic types (bug #78431).
15402
15403 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15404
15405         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15406         to make life easier for people cross-compiling that insist on not
15407         using scratchbox.
15408
15409 2007-01-17 Mark Mason <mason@broadcom.com>
15410
15411         * inssel-long.brg: patch to deal with mips missing flags
15412         * inssel-long32-mips.brg: implement overflow checks
15413         * insset-mips.brg: implement overflow checks
15414         * mini-mips.h: implement conditional exception handling
15415         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15416           Remove unused code, minor cleanups.
15417         * exceptions-mips.c: minor cleanups
15418         * mini-ops.h: add mips conditional exception ops
15419         * cpu-mips.md: add mips conditional exception ops
15420
15421         
15422 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15423
15424         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15425         to deal with mips missing of flags.
15426
15427 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15428
15429         * exceptions-ppc.c: execute fault handlers.
15430
15431 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15432
15433         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15434
15435 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15436
15437         * mini.c: handle also floating point values in initialize_array.
15438
15439 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15440
15441         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15442         array initialization and make it conditional on the intrins option.
15443
15444 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15445
15446         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15447         relocations and put the patch info names close to the enum definition.
15448
15449 2007-01-15 Mark Mason <mason@broadcom.com>
15450
15451         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15452
15453 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15454
15455         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15456
15457 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15458
15459         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15460
15461 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15462
15463         * Makefile.am: distribute the mips sources.
15464
15465 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15466
15467         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15468         directly.
15469
15470 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15471
15472         * cpu-x86.md: back out for now as this triggers other regressions.
15473
15474 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15475
15476         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15477         to eax:edx, so ecx can't get allocated to them (bug #80489).
15478
15479 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15480
15481         * mini.c, mini-exceptions.c: enabled running fault handlers
15482         (bug #80469).
15483
15484 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15485
15486         * driver.c: If nothing fail, do not use the string "failed",
15487         because it makes it very annoying to view test result logs on the
15488         web. 
15489
15490 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15491
15492         * debug-debugger.c (mono_debugger_main): Rename "main" to
15493         "main_method" to prevent a warning.
15494
15495         Remove a warning for unused field.
15496
15497 2006-12-28  Martin Baulig  <martin@ximian.com>
15498
15499         * debug-debugger.c
15500         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15501
15502 2006-12-22  Martin Baulig  <martin@ximian.com>
15503
15504         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15505         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15506         seperate `.mdb_debug_info' section, so we can access it from the
15507         debugger even if the binary is stripped.
15508
15509         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15510         from the `.mdb_debug_info' here to prevent the linker from
15511         removing that section.
15512
15513         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15514         mdb-debug-info64.s.
15515
15516 2006-12-19  Robert Jordan  <robertj@gmx.net>
15517
15518         * mini-x86: enable the code to return small structures in
15519         registers for FreeBSD as well. Fixes bug #80278.
15520         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15521
15522 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15523
15524         * mini-x86.c: align the stack when calling the profiler
15525         function instrumenting the prolog (on OSX).
15526
15527 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15528
15529         * mini.c: emit a break opcode where Debugger.Break () is called.
15530
15531 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15532
15533         * mini.c (mono_method_to_ir): Provide useful information on this
15534         assert, to prevent others from debugging like I did.
15535
15536 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15537
15538         * mini.c: enable code which was incorrectly commented
15539         (bug #80235).
15540
15541 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15542
15543         * mini-x86.c: enable on OSX, too, the code to return small
15544         structures in registers.
15545
15546 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15547
15548         * mini-x86.c: remove the use of the dynamic code manager here, too.
15549
15550 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15551
15552         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15553         mono_debugger_create_notification_function() to use
15554         mono_global_codeman_reserve () instead of a dynamic code manager.
15555
15556 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15557
15558         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15559         ves_array_element_address() jit icall and use a generated
15560         managed method instead (which is about 4 times faster for a rank 3
15561         array access).
15562
15563 2006-11-29  Mark Mason  <mason@broadcom.com>
15564
15565         * basic-calls.cs: additional tests for passing
15566         structures as function arguments.
15567
15568 2006-11-29  Mark Mason  <mason@broadcom.com>
15569
15570         * mini-mips.h: disable custom exception handling
15571         * mini-mips.c: throw/rethrow should use jalr to call
15572         exception stubs.  Fixed bug with passing structures
15573         by value. More support for tracing floating point
15574         functions.
15575
15576 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15577
15578         * mini.c: fixed typo in the soft-float ldind.r4 handling
15579         (bug #80086).
15580
15581 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15582
15583         * mini.c, mini.h, driver.c: added --runtime command line
15584         option to select a different runtime than the autodetected one.
15585         * jit.h: added API for embedders to initialize with a specific
15586         runtime version.
15587
15588 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15589
15590         * mini.c: handle also boxing of r4 values (bug #80024).
15591
15592 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15593
15594         * mini-ppc.c: force indirect calls until we reserve
15595         enough address space for all the generated code.
15596
15597 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15598
15599         * exceptions-arm.c: workaround bugs in the libc definition
15600         of struct ucontext.
15601
15602 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15603
15604         * inssel.brg: fixes from me and Mark Mason.
15605
15606 2006-11-23  Dick Porter  <dick@ximian.com>
15607
15608         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15609         semaphore display now we've fixed the initial value
15610
15611 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15612
15613         * inssel.brg: partially revert the last change to fix the build.
15614
15615 2006-11-21  Mark Mason  <mason@broadcom.com>
15616
15617         * inssel.brg: Add and use compare-and-branch macros to support
15618         architectures that do not have condition code registers (ie. MIPS).
15619         * *-mips.{c,brg,md}: Fix copyright statements
15620
15621 2006-11-20  Mark Mason  <mason@broadcom.com>
15622
15623         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15624         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15625         * mini.h: Added declaration for mono_print_ins()
15626         * mini-codegen.c: added ins_spec initializer for MIPS
15627         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15628         vreg to be virtual and hreg to be non-virtual.
15629         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15630         is not yet working/implemented correctly.
15631         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15632         non-static, fixup calls to print_ins() from other parts in the file.
15633
15634 2006-11-20  Mark Mason  <mason@broadcom.com>
15635
15636         * basic-calls.cs: added tests for passing structures as arguments
15637         to calls.
15638
15639 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15640
15641         * inssel-long32.brg: optimize signed division by power of two.
15642
15643 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15644
15645         * mini-arm.c: added support for interworking with thumb code
15646         (mono must be still be built using the ARM instruction encoding).
15647
15648 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15649
15650         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15651         verifier has different rules for it.   Fixes a few verifier issues
15652         in the test suite.
15653
15654         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15655         at the end, so people know what happened.
15656
15657 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15658
15659         * brach-opts.c: in optimize_exception_target() make sure we
15660         are in a catch clause (fixes bug #79871).
15661
15662 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15663
15664         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15665         more soft-float support fixes.
15666
15667 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15668
15669         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15670         that are passed half on the stack and half in registers.
15671
15672 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15673
15674         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15675         more mips integration work from Mark E Mason 
15676         <mark.e.mason@broadcom.com>.
15677
15678 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15679
15680         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15681         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15682         tramp-mips.c: added sources for the mips port, not
15683         integrated in the build yet. Contributed by
15684         Mark E Mason <mark.e.mason@broadcom.com>.
15685
15686 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15687
15688         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15689
15690 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15691
15692         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15693         put the soft-float rules in its own file since it seems to
15694         break s390 compilation.
15695
15696 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15697
15698         * mini-arm.c: fixed wrnings.
15699
15700 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15701
15702         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15703         inssel-arm.brg: ARM support for soft-float.
15704
15705 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15706
15707         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15708         loads and stores of 32 bit fp values.
15709
15710 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15711
15712         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15713
15714         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15715         works. Fixes #79852 and #79463.
15716
15717 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15718
15719         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15720         more soft-float support WIP and fixes.
15721
15722 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15723
15724         * mini-arm.c: some VFP updates.
15725
15726 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15727
15728         * mini-exceptions.c: 0 is a valid local var offset in some
15729         architectures, don't assert (bug #78508).
15730
15731 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15732
15733         * exceptions-arm.c: fixed off by one error in stack walk code.
15734
15735 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15736
15737         * mini.h, mini.c: more precise tracking of type load exceptions.
15738
15739 2006-11-03  Robert Jordan  <robertj@gmx.net>
15740
15741         * Makefile.am: [WIN32] Add monow.exe target.
15742         * driver.c: [WIN32] Don't detach the console when debugging.
15743         Fixes bug #79797.
15744         
15745 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15746
15747         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15748
15749 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15750
15751         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15752
15753         * driver.c (mini_regression): Fix --regression with AOT.
15754
15755         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15756
15757 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15758
15759         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15760
15761         * mini-sparc.h: Don't use sigaction on sparc/linux.
15762
15763         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15764
15765         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15766
15767         * mini-exceptions.c: Add proper include files for getpid ().
15768
15769 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15772         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15773         method.
15774
15775         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15776         name cache to reduce its size.
15777
15778         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15779
15780 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15783         the mono_lmf TLS variable.
15784
15785         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15786         trampoline lmf frames.  
15787
15788         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15789
15790 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15793         the mono_lmf TLS variable.
15794
15795         * mini-exceptions.c: Access the LMF structure through accessors.
15796
15797         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15798         variable instead of in jit_tls->lmf.
15799
15800         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15801         
15802         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15803         trampoline lmf frames.
15804
15805         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15806
15807 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15808
15809        * mini.c trace.c mini-x86.c: Revert these too.
15810         
15811        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15812        signature change.
15813
15814 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15815
15816         * genmdesc.c: removed now dead code.
15817
15818 2006-10-09  Robert Jordan <robertj@gmx.net>
15819
15820         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15821
15822 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15823
15824         * mini.h: do not leave gaps in the opcode values.
15825
15826 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15827
15828         * jit-icalls.h: flag functions as internal here, too.
15829
15830 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15831
15832         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15833         functions with the internal attribute.
15834
15835 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15836
15837         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15838
15839 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15840
15841         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15842         for soft-float.
15843
15844 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15847         tail calls as on other platforms.
15848
15849         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15850
15851         * iltests.il: Add a few tailcall tests.
15852
15853 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15854
15855         * driver.c: fix loop for old compilers (bug #79521).
15856
15857 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15858
15859         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15860
15861         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15862
15863         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15864         metadata without any code.
15865
15866         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15867         more precise debugging information using gdb.
15868
15869 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * inssel-ia64.brg: Make the helper methods static.
15872
15873 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15874
15875         * inssel-x86.brg: make the helper methods static.
15876
15877 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15878
15879         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15880
15881 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15882
15883         * mini.c: updates for monoburg changes.
15884         * inssel.brg: make a few helper functions static as they should.
15885
15886 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15887
15888         * Makefile.am: Move mini-codegen.c to common_sources.
15889
15890 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15891
15892         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15893         instructions.
15894         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15895         mini-ppc.h: port to use the common local register allocator.
15896
15897 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15898
15899         * mini.h: Remove the comment too then.
15900
15901 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15902
15903         * mini.h: put back backend.data which is to be used shortly and
15904         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15905         pointers on 4 byte boundaries it'd have much bigger issues running
15906         and you can ifdef it out anyway.
15907
15908 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15909
15910         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15911         MonoInst size by 4 bytes on 64 bit machines.
15912
15913 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15914
15915         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15916         replacement with more meaningful field names. Arch maintainers, please
15917         check the assigned names are good enough for your arch.
15918
15919 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15920
15921         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15922         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15923
15924 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15925
15926         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15927         relocations and memory requirements, put the optimization flags
15928         definitions in their own file.
15929
15930 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15931
15932         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15933
15934         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15935
15936 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15937
15938         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15939
15940 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15941
15942         * inssel.brg: use the correct function to get the size of an item
15943         in an array, given an element class.
15944         * aot-compiler.c: do not access class->class_size directly.
15945
15946 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15947
15948         * mini.h, debug-mini.c: added a debugging function to print
15949         info about local variables and arguments in a jitted method.
15950
15951 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15954
15955         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15956
15957 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15958
15959         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15960         inner and outer loops when passing vtypes.
15961
15962 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15963
15964         * mini-ppc.c: take into account the cpu errata for cache flushing
15965         which caused some random errors (bug #79381).
15966
15967 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15968
15969         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15970         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15971
15972 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15975         loaded.
15976
15977         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15978         freebsd ports tree.
15979
15980         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15981         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15982
15983         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15984         displacement.
15985
15986 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15987
15988         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15989
15990 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15991
15992         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15993         macro does not have to be changed during debugging.
15994
15995         * 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>.
15996
15997         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15998
15999         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16000         
16001         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16002         MONO_ARCH_NO_EMULATE_MUL is defined.
16003
16004         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16005
16006         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16007
16008         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16009
16010         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16011         
16012 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16013
16014         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16015         stuff to mini-exceptions.c where it is used.
16016
16017         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16018         setup code, the real one is in mini-exceptions.c.
16019
16020         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16021         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16022         some changes from the freebsd ports tree.
16023
16024         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16025         constants.
16026         
16027         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16028
16029 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16030
16031         * mini.c: on Linux, check for /proc to be mounted
16032         (bug# 79351, novell bug#201204).
16033
16034 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16035
16036         * mini.c: handle cases where pthread_attr_getstack() behaves
16037         incorrectly (bug #78096).
16038
16039 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16040
16041         * mini-arm.c: support larger stack frames (bug #79272).
16042
16043 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16044
16045         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16046
16047         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16048         tokens.
16049
16050         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16051         mono_class_from_name () to find a class from its name.
16052
16053         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16054
16055 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16056
16057         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16058
16059 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16060
16061         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16062
16063 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16064
16065         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16066         callinfo->trampoline.
16067
16068         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16069         fixes #79271.
16070         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16071         future.
16072
16073 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16076
16077 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16078
16079         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16080         stats.method_trampolines, it is already done by the generic trampoline code.
16081
16082         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16083         
16084 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16085
16086         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16087
16088         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16089
16090         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16091
16092         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16093         
16094         * mini.c (print_jit_stats): Print new stats.
16095
16096         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16097
16098 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16101         Address on two dimensional arrays. Fixes #78729.
16102
16103         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16104
16105         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16106         a method.
16107
16108         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16109
16110         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16111         #79130.
16112         
16113         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16114         a race condition.
16115         (mini_get_ldelema_ins): Ditto.
16116
16117 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16118
16119         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16120         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16121         Fixes #79213.
16122
16123 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16124
16125         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16126         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16127
16128         * exceptions-s390x.c: Cosmetic change.
16129
16130         * tramp-s390.c: Fix warning.
16131
16132         * cpu-s390.md: Correct length of mul_imm.
16133
16134 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16135
16136         * aot-compiler.c: added binary writer with ELF backend
16137         implementation (only on Linux/x86 for now).
16138
16139 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16140
16141         * Makefile.am: Don't run net 2.0 AOT tests.
16142
16143         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16144         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16145
16146         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16147
16148 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16149
16150         * aot-compiler.c: simplified and refactored the asm-writing code
16151         to allow different backends.
16152
16153 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16156
16157         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16158         little. Share patches of type TYPE_FROM_HANDLE as well.
16159
16160         * mini.c (mono_patch_info_equal): New helper function.
16161         (mono_patch_info_hash): Ditto.
16162
16163         * aot-compiler.c (emit_method_code): Fix s390 build.
16164
16165         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16166         is not handled because it is stored as a flag and not as a type ctor. Fixes
16167         #79016.
16168
16169 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16170
16171         * aot-compiler.c: Fix computation of GOT slot statistics.
16172         
16173         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16174         Also remove support for not PIC AOT.
16175
16176         * mini.h: Bump AOT file format version.
16177
16178         * objects.cs: Add a test for #78990.
16179
16180         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16181         (peter.dettman@iinet.net.au). Fixes #79087.
16182
16183         * basic-long.cs: Add a test for the above.
16184
16185 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16188         
16189         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16190         code somewhat.
16191
16192 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16193
16194         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16195         exceptions.
16196
16197 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16198
16199         * mini.c: Don't verify COM proxy invoke calls
16200         
16201
16202 2006-08-10  Dick Porter  <dick@ximian.com>
16203
16204         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16205         which process is holding semaphores locked.
16206
16207 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16208
16209         * mini-ia64.c mini-amd64.c: Fix #79027.
16210
16211         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16212
16213         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16214
16215         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16216         implicit arguments in a vararg call. Fixes #79027.
16217
16218 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16219
16220         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16221         (mono_get_array_new_va_signature): Ditto.
16222
16223 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16224
16225         * aot-runtime.c: Call init_plt lazily.
16226
16227         * inssel-long.brg: Fix unsigned long->int conversion.
16228
16229         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16230
16231         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16232         that most data is now in the .rss/.data section.
16233
16234 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16235
16236         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16237
16238         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16239
16240         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16241
16242         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16243
16244         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16245         virtual call. Fixes #79010.
16246
16247         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16248         and use the result as the this argument in the real call.
16249
16250         * generics.2.cs: Add a new test for #79010.
16251         
16252 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16253
16254         * mini-x86.c: Fix a warning.
16255
16256         * aot-compiler.c: Add a bunch of statistics.
16257
16258         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16259
16260 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16261
16262         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16263
16264 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16265
16266         * 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>.
16267
16268 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16269
16270         * mini.c (mono_method_to_ir): Obtain the original method in the
16271         CIL stream and use this to perform validation.
16272
16273         Fixed: #78816
16274
16275 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16276
16277         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16278         (mono_arch_call_opcode): Ditto.
16279
16280         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16281         #78826.
16282
16283         * mini.c (mono_patch_info_dup_mp): New helper function.
16284         
16285         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16286         compilation. Fixes #78827.
16287
16288 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16289
16290         * declsec.c: Use original security informations for
16291           MONO_WRAPPER_MANAGED_TO_MANAGED.
16292
16293 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16294
16295         * mini.c: Allow Com Interop methods/classes and
16296         don't verify COM wrapper calls
16297         
16298
16299 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16300
16301         * inssel-long32.brg: Fix long->i4 checked conversion.
16302
16303         * exceptions.cs: Add a test for the above.
16304
16305 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16306
16307         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16308
16309         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16310         leaks.
16311
16312         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16313         #78775.
16314
16315 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16316
16317         * mini.c: Fix solaris/x86 exception handling.
16318
16319         * Makefile.am: Get rid of $(ICU_LIBS).
16320
16321 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16322
16323         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16324         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16325         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16326
16327         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16328
16329         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16330         this function causes a SIGSEGV.
16331
16332 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16333
16334         * mini.c: Remove unused solaris/x86 includes.
16335
16336 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16337
16338         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16339
16340 2006-06-20  Jb Evain  <jbevain@gmail.com>
16341
16342         * cpu-g4.md: fix max length of start_handler instruction.
16343
16344 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16345         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16346
16347 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16348         * ssa.c: Fixed bug 78653 for SSA based deadce.
16349         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16350         MonoInst.flags, used in SSA based deadce.
16351         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16352         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16353
16354 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16355
16356         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16357         it can end up using non executable memory on ppc64 systems
16358         running ppc32 userspace (fix from Johannes Berg).
16359
16360 2006-06-14  Dick Porter  <dick@ximian.com>
16361
16362         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16363         4.1.1
16364
16365 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16366         * mini.c: Made so that inline is locally disabled if it would
16367         trigger a .cctor, because too many apps depend on this behavior
16368         (which seems to be also the one of the MS CLR).
16369
16370 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16371
16372         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16373         No idea why this worked before.
16374
16375         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16376         which branch to outer exception clauses since they could skip the
16377         inner finally clauses. Fixes #78633.
16378
16379         * exceptions.cs: Add a test for the above.
16380
16381         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16382         Fixes #78629.
16383
16384         * iltests.il: Add a test for the above.
16385
16386 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16387
16388         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16389         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16390
16391         * iltests.il: Add a test for the above.
16392
16393 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16394
16395         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16396         
16397         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16398         methods as instrinsics.
16399
16400 2006-06-09  Wade Berrier <wberrier@novell.com>
16401
16402         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16403         (simple-cee-ops.h ssapre-mini-ops.h)
16404
16405 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16406
16407         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16408         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16409         instruction).
16410         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16411         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16412
16413 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16414
16415         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16416
16417 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16418
16419         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16420         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16421         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16422         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16423         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16424         of opcodes, so that bug 78549 should not happen again.
16425         * ssapre.c: Updated to use the renamed files.
16426
16427 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16428
16429         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16430         in OP_ATOMIC_EXCHANGE_I4.
16431
16432 2006-06-07  Wade Berrier <wberrier@novell.com>
16433
16434         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16435         in mono_debugger_create_notification_function)
16436
16437 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16438
16439         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16440         
16441         * mini.c (type_from_stack_type): Disable some changes which do not
16442         seem to work.
16443
16444         * driver.c: Reenable opts.
16445
16446         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16447         of the evaluation stack.
16448         
16449         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16450         evaluation stack trace at entry to the bblock.
16451
16452         * mini.c (merge_stacks): New function to perform verification of stack merges.
16453         Turned off by default.
16454
16455         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16456         STACK_MP.
16457         
16458 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16459
16460         * local-propagation.c: Fixed bug 78549.
16461
16462 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16463
16464         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16465
16466 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16467
16468         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16469         tramp-arm.c, tramp-ia64.c
16470         (mono_debugger_create_notification_function): Update signature to
16471         new signature and use new protocol for creating the notification
16472         function.  
16473
16474         Should fix the build.
16475
16476 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16477
16478         * exceptions-ppc.c (mono_jit_walk_stack)
16479         (ves_icall_get_frame_info): Fix the build
16480
16481 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16482
16483         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16484
16485 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16486
16487         * il2tests.2.il: New file for generics CIL tests.  Add test for
16488         #78019.
16489         * Makefile.am: Update.
16490
16491         Fix #78019
16492         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16493         to nullable types.
16494
16495 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16496
16497         * aliasing.c: Fixed bug 78311.
16498
16499 2006-05-29  Martin Baulig  <martin@ximian.com>
16500
16501         * mini-exceptions.c (mono_find_jit_info): When computing the
16502         native offset, check whether we're actually inside the method's
16503         code; call mono_debug_print_stack_frame() to format the frame.
16504         (ves_icall_System_Exception_get_trace): Call
16505         mono_debug_print_stack_frame() to format the stack frame.
16506         (ves_icall_get_trace): Update to the new debugging API.
16507         (mono_jit_walk_stack_from_ctx): Likewise.
16508         (ves_icall_get_frame_info): Likewise.
16509
16510         * mini.c (get_method_from_ip): Use the new debugging API.
16511         (mono_print_method_from_ip): Likewise.
16512
16513         * exceptions-ppc.c
16514         (mono_jit_walk_stack): Use the new debugging API.
16515         (ves_icall_get_frame_info): Likewise.   
16516
16517 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16518
16519         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16520
16521 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16522
16523         * mini.c: Added "limitator" to inline for debugging.
16524
16525 2006-05-24  Martin Baulig  <martin@ximian.com>
16526
16527         * debug-debugger.c (mono_debugger_init): Create a private,
16528         malloc()-based code manager for the notification function and
16529         intentionally leak it on exit.  This fixes the crash-on-exit race
16530         condition.
16531
16532         * tramp-amd64.c
16533         (mono_debugger_create_notification_function): Added
16534         `MonoCodeManager *' argument.
16535
16536         * tramp-x86.c
16537         (mono_debugger_create_notification_function): Added
16538         `MonoCodeManager *' argument.
16539
16540 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16541
16542         * aliasing.c: Fixed 64 bit issue.
16543         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16544         default since all known bugs are fixed (one more time!).
16545
16546 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16547
16548         * mini.c: write barrier support.
16549
16550 2006-05-23  Martin Baulig  <martin@ximian.com>
16551
16552         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16553         check at the top of the file.
16554
16555 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16556
16557         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16558         reverting changes without reason and without changelog entries.
16559
16560 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16561
16562         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16563         to a few opcodes. Fixes #78439.
16564
16565         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16566         consistency with other archs.
16567
16568         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16569
16570 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16571
16572         * debug-debugger.c: fix the build.
16573
16574 2006-05-17  Martin Baulig  <martin@ximian.com>
16575
16576         * debug-debugger.c
16577         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16578         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16579         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16580         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16581
16582 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16583
16584         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16585
16586 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16587
16588         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16589         MONO_TYPE_GENERICINST.
16590         
16591         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16592         MONO_TYPE_GENERICINST.
16593
16594 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16595
16596         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16597         #78325.
16598
16599 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16600
16601         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16602         mempool.
16603         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16604
16605 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16606
16607         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16608         mono_trace_cleanup ().
16609
16610         * iltests.il: Fix problem with the newly added test.
16611
16612         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16613         due to register constraints, free up the previous hreg. Fixes #78314.
16614
16615         * iltests.il: Add new test for #78314.  
16616
16617         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16618         Interlocked.Add. Fixes #78312.
16619
16620         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16621         
16622 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16623
16624         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16625
16626 2006-05-05  Martin Baulig  <martin@ximian.com>
16627
16628         * debug-mini.c (mono_debug_open_block): New method.
16629
16630         * mini-amd64.c
16631         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16632         the beginning of each basic block.
16633
16634         * mini-x86.c
16635         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16636         the beginning of each basic block.
16637
16638 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16639
16640         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16641         default until I understand why they break the build on amd64.
16642
16643 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16644
16645         * mini.c (mini_cleanup): Call mono_cleanup ().
16646
16647         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16648         errors.
16649
16650 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16651
16652         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16653         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16654         default since all known bugs are fixed, and I cannot reproduce bug
16655         77944... I'm asking Matt Hargett to test again after this commit.
16656
16657 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16658
16659         * mini-codegen.c: Fixed typo that thrashed inline.
16660
16661 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16662
16663         * dominators.c (compute_dominators): Avoid using a worklist since
16664         it is not correct in some cases. Instead, iterate over all bblocks as
16665         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16666
16667 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16668
16669         * mini.c (mono_jit_compile_method_inner): Use
16670         mono_prepare_exception_from_error that resets the value
16671         internally.
16672
16673 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16674
16675         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16676         
16677 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16678
16679         * aliasing.c: Fixed bug 78210.
16680
16681 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16682
16683         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16684         default until all their problems (or the ones they trigger) are fixed.
16685
16686 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16687
16688         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16689         
16690         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16691         as loaded only after resolving patches since that could invoke the same method.
16692
16693         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16694
16695         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16696         functions.
16697
16698         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16699         AOT loader.
16700
16701         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16702         stack.
16703
16704         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16705         made from AOT code through the PLT table.
16706
16707         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16708         holding the plt offset when a call is made to the aot plt trampoline.
16709         
16710 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16711
16712         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16713         amd64 AOT support.
16714
16715         * Makefile.am (common_sources): Fix build breakage.
16716
16717         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16718         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16719         intra-assembly calls if possible.
16720         
16721         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16722
16723         * mini-trampolines.c: Handle PLT entries.
16724
16725         * mini.c: Avoid creating a GOT var for calls.
16726
16727         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16728         from mscorlib code.
16729
16730         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16731         from mscorlib code.
16732
16733         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16734         AOT code.       
16735
16736         * mini.h: Bump AOT file format version.
16737         
16738         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16739         covers more cases.
16740
16741 2006-04-25  Martin Baulig  <martin@ximian.com>
16742
16743         * driver.c: Disable copyprop, consprop and inline when running
16744         inside the debugger.
16745
16746 2006-04-25  Martin Baulig  <martin@ximian.com>
16747
16748         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16749         with `get_current_thread' and added `detach'.
16750         (MonoDebuggerMetadataInfo): Added `thread_size',
16751         `thread_tid_offset', `thread_stack_ptr_offset' and
16752         `thread_end_stack_offset'.
16753
16754 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16755
16756         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16757         aot-runtime.c.
16758
16759         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16760         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16761
16762         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16763
16764         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16765
16766         * aot.c: Add support for ADJUSTED_IID.  
16767
16768 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16769
16770         * aot.c (emit_method_order): Don't align method_order_end.
16771
16772         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16773         the interface ID changes.
16774
16775 2006-04-21  Dick Porter  <dick@ximian.com>
16776
16777         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16778         cleaning up a thread.  Fixes the new part of bug 77470.
16779
16780 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16781
16782         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16783         to managed wrapper.
16784                      
16785 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16786
16787         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16788         
16789         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16790         SIGSEGV. Fixes #78072.
16791
16792         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16793         unregister our SIGABRT handler.
16794
16795 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16796
16797         * mini.c: Disabled inline where it can alter the call stack in a
16798         way visible from managed code.
16799         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16800         default.
16801
16802 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16805         on other platforms. Fixes #78089.
16806
16807 2006-04-13  Martin Baulig  <martin@ximian.com>
16808
16809         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16810         determine whether we're inside the debugger.
16811
16812         * debug-debugger.h
16813         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16814
16815 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16816
16817         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16818         handler clauses. Fixes #78024.
16819
16820         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16821         in the CALL_MEMBASE opcodes. Fixes #78088.
16822         (mono_arch_get_vcall_slot_addr): Ditto.
16823
16824 2006-04-10  Martin Baulig  <martin@ximian.com>
16825
16826         * debug-debugger.c: The thread handling code has now been moved
16827         into ../metadata/threads.c.
16828
16829 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * driver.c (mono_main): Fix --with-gc=none build.
16832
16833         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16834         (mono_spillvar_offset_float): Ditto.
16835         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16836         hreg, not when its !global, since on ia64, there is a third category: stacked
16837         registers.      
16838
16839 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16840
16841         * mini.c: set MonoInst->klass for load field address and a few other
16842         places.
16843
16844 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16845
16846         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16847
16848 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16849
16850         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16851         the branch opt changes.
16852
16853 2006-04-06  Dick Porter  <dick@ximian.com>
16854
16855         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16856         
16857         * wapihandles.c (mini_wapi_seminfo): 
16858         * driver.c (mono_main): Add semaphore info option
16859
16860 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16861
16862         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16863         branch optimization changes. Fixes #78009.
16864
16865 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16866
16867         * mini.c: ignore accessibility of methods in managed->native wrappers.
16868
16869 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16870
16871         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16872         
16873         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16874
16875 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16876
16877         * mini.c: Modify the branch optimizations to preserve the invariant that
16878         the entries inside the in_bb and out_bb arrays are unique.
16879         (mono_unlink_bblock): Avoid creation of new arrays.
16880
16881 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16882
16883         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16884         change (#77992).
16885
16886 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16887
16888         * mini.c (optimize_branches): Remove the "optimizations" in
16889         the cbranch1/cbranch2 -> branch cases which were causing several
16890         problems in the past. Fixes #77986.
16891
16892 2006-03-31  Chris Toshok  <toshok@ximian.com>
16893
16894         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16895         default optimizations :(
16896
16897 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16898
16899         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16900         branch.
16901
16902 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16903
16904         * local-propagation.c: Added comments to structs and removed
16905         "Mono" prefixes from local tree mover types.
16906
16907 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16908
16909         * Makefile.am (arch_sources): Define this for each architecture so 
16910         libmono_la_SOURCES is defined in one place.
16911
16912 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16913
16914         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16915         from handles/.
16916
16917 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16918
16919         * driver.c: print the GC name supplied by configure.
16920
16921 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16922
16923         * local-propagation.c: Added tree mover, and moved here all the
16924         local propagation code from mini.c
16925         * mini.c: Added support for treeprop, and moved all the local
16926         propagation code to local-propagation.c
16927         * mini.h: Added support for treeprop
16928         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16929         treeprop, inline and deadce by default
16930         * Makefile.am: Added local-propagation.c
16931
16932 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16933
16934         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16935
16936 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16937
16938         * debug-debugger.c: make it compile without the Boehm GC.
16939
16940 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16941
16942         * mini.c: fixed issue with mismatch when an icall is registered
16943         with multiple names but same address.
16944
16945 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16946
16947         * declsec.c, mini-exceptions.c: use write barrier to set reference
16948         fields of managed objects.
16949
16950 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16951
16952         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16953         (can_access_internals): Fix a warning.
16954
16955         * mini.c (print_method_from_ip): Rename this to 
16956         mono_print_method_from_ip so it gets exported.
16957
16958         * trace.c: Deal with strings inside StringBuilder's containing garbage
16959         and fix memory leaks. Fixes #77848.
16960
16961 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16962
16963         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16964         fixes #77787.
16965
16966 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16967         
16968         * mini-s390.c: Remove OP_X86_TEST_NULL.
16969
16970 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16971
16972         * mini.c: use the correct GetHashCode() for the moving collector.
16973
16974 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16975
16976         * liveness.c: Regalloc spill cost tuning.
16977
16978 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16979         
16980         * mini-s390x.h: Correct S390_LONG macro.
16981
16982         * mini-s390x.c: Cleanup unused code.
16983
16984 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16985
16986         * jit-icalls.h: New file.
16987
16988         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16989         icalls and include that instead of including jit-icalls.c.
16990
16991         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16992         OP_X86 opcodes.
16993
16994 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16995
16996         * mini.c: when checking for member accessibility, also check for
16997         friend assemblies and for explicit interface implementations.
16998
16999 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17002
17003         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17004
17005         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17006         common cases are done first.    
17007
17008         * mini-ops.h: Only define platform specific opcodes on the given platform.
17009
17010         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17011         branch.
17012         
17013 2006-03-14  Martin Baulig  <martin@ximian.com>
17014
17015         Revert Paolo's change from r57348:
17016
17017         * mini.h: don't use gboolean for bitfields.
17018         * mini.c: verifier changes for fields and methods accessibility.
17019
17020 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17021
17022         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17023
17024         * mini-s390x.c: Fix conv_r_un.
17025
17026         * cpu-s390, cpu-s390x.md: Fix lengths.
17027
17028 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17029
17030         * mini.c: nested types have access to all the nesting
17031         levels, not just the enclosing types.
17032
17033 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17034
17035         * mini.c: added a few more verification checks.
17036
17037 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17038
17039         * liveness.c: Merge optimizations from the linear-il branch.
17040
17041 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17042
17043         * mini-ia64.c (emit_call): Add a comment.
17044
17045         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17046
17047         * tramp-ia64.c: Fix some warnings.
17048
17049 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17050
17051         * mini.h: don't use gboolean for bitfields.
17052         * mini.c: verifier changes for fields and methods accessibility.
17053
17054 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17057         lazy icall wrapper changes.
17058
17059         * dominators.c: Replace all the dominator algorithms with faster
17060         ones from the linear-il branch.
17061
17062         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17063         the mempool.
17064
17065         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17066         common cases are done first.
17067
17068         * mini-amd64.c: Fix some warnings.
17069
17070         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17071         from the mempool.
17072
17073         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17074         added code.
17075
17076         * mini.h: Add a missing prototype.
17077
17078 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17079
17080         * mini.c: Compile icall wrappers lazily.
17081
17082         * mini-codegen.c: Use printf instead of g_print since its much faster.
17083
17084         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17085         function.
17086
17087         * mini.c (optimize_branches): Cache the negative result from 
17088         remove_block_if_useless ().
17089
17090         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17091         Also fix some bblock linking issues.
17092
17093         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17094         assembly files.
17095
17096         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17097
17098         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17099         accessed fields first, for better cache behavior.
17100         
17101 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17102
17103         * mini.c: speedup IList<T> array accesses.
17104
17105 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17108         inline_costs counter. Fixes #77190.
17109
17110 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17111
17112         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17113         trace messages. Fixes #77706.
17114
17115 2006-03-04  Martin Baulig  <martin@ximian.com>
17116
17117         * tramp-amd64.c, tramp-x86.c
17118         (mono_debugger_create_notification_function): Use
17119         mono_global_codeman_reserve() to allocate a buffer at runtime and
17120         return it.
17121
17122         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17123
17124         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17125         notification function at runtime and then call `initialize' in the
17126         `MONO_DEBUGGER__debugger_info' vtable.
17127
17128 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * iltests.il: Fix a visibility problem.
17131
17132 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17133
17134         * driver.c, mini.c: add hooks for the counters API.
17135
17136 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17137
17138         * driver.c: show disabled options.
17139
17140 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17141
17142         * linear-scan.c: always use cost-driven selection.
17143
17144 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17145
17146         * jit-icalls.c (helper_compile_generic_method): Revert change from
17147         2006-02-24.
17148
17149 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17150
17151         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17152
17153 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17154
17155         * inssel.brg: style fixes, mostly to force the updated monoburg
17156         to run for people using svn.
17157
17158 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17159
17160         * mini.c: match monoburg changes.
17161
17162 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17163
17164         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17165         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17166         declaration in the header file.
17167
17168 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17169
17170         * helpers.c: reduce relocations and mem usage.
17171
17172 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17173
17174         * mini.h, mini-codegen.c: disable logging features if
17175         requested by configure.
17176
17177 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17178
17179         * mini.c: tiny verifier changes.
17180
17181 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17182
17183         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17184         cpu-pentium.md: stack alignment changes for osx/x86,
17185         partially from Geoff Norton <gnorton@customerdna.com>.
17186
17187 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17188
17189         * jit-icalls.c (helper_compile_generic_method): Update to changes
17190         in metadata/class.c.
17191
17192 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17193         
17194         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17195         
17196         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17197         interface calls with large offsets.
17198
17199 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17200
17201         * jit-icalls.c (helper_compile_generic_method): Document the
17202         special-case we depend on so that we can inflate the method twice
17203         with the same context with no bad side-effects.
17204
17205 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17206
17207         * mini-x86.c, mini-amd64.c: fix for case when xen support
17208         is disabled.
17209
17210 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17211
17212         * mini-x86.c, mini-amd64.c: generate code to access tls items
17213         in a faster way for Xen systems.
17214
17215 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17216
17217         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17218         updates and compilation fixes for the OSX/x86 port, mostly from
17219         Geoff Norton <gnorton@customerdna.com>.
17220
17221 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17222
17223         * inssel.brg: faster interface call implementation
17224         to sync with the interface_offsets MonoVTable changes.
17225
17226 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17227
17228         * mini.c: more verification checks.
17229
17230 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini.c: added a few more verification checks.
17233
17234 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17235
17236         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17237         facility on the processor and use it if available.
17238
17239 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17240
17241         * driver.c, aot.c, mini.c: throw exception if the IL code is
17242         invalid or unverifiable.
17243
17244 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17245
17246         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17247         m.StructField.
17248
17249 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17250
17251         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17252
17253 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17254
17255         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17256         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17257         handling of instantiated generic valuetypes.
17258
17259 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17260
17261         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17262         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17263         instead.
17264
17265         * generics.2.cs: Revert the nullable reftypes tests.
17266
17267 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17268
17269         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17270         using __builtin_frame_address (1) as it doesn't work in the presence
17271         of optimizations. Hopefully fixes #77273.
17272
17273         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17274         -> generics.cs change as it doesn't work with some automake versions.
17275
17276 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17277
17278         * mini.c: handle systems that sue a different way to
17279         retrieve the stack address of the current thread.
17280
17281 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17284         it specially in the makefile.
17285
17286         * generics.2.cs: Add tests for nullable reference types.
17287
17288 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17289
17290         * mini.c: always handle the case when mono_jit_init()
17291         is called in a thread different from the main thread,
17292         confusing libgc (bug #77309).
17293
17294 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17295
17296         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17297
17298 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17299
17300         * mini.c: change optimize_branches () to use a single loop
17301         and introduce a new optimization to simplify some range checks.
17302
17303 2006-02-03  Martin Baulig  <martin@ximian.com>
17304
17305         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17306         and merged with debugger_thread_manager_add_thread().
17307         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17308         inform the debugger about the main thread.
17309
17310 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17311
17312         * basic.cs: Add test for div.un/rem.un constant folding.
17313
17314 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17315
17316         * cpu-s390x.md: correct int_xor_imm length
17317
17318 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17319
17320         * generics.2.cs: New test for #77442.
17321
17322         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17323         #77442.
17324
17325 2006-02-02  Martin Baulig  <martin@ximian.com>
17326
17327         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17328         <mono/metadata/mono-debug-debugger.h>   
17329
17330         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17331
17332 2006-02-02  Martin Baulig  <martin@ximian.com>
17333
17334         * debug-debugger.h: New header file for debug-debugger.c.
17335
17336         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17337         function is a separate thread anymore; add support for attaching.
17338
17339 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17340
17341         * tramp-x86.c: Fix a warning.
17342
17343 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17346         on very large methods.
17347
17348         * aot.c (load_patch_info): Fix a warning.
17349
17350 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17351
17352         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17353         mini-ops.h: alu membase optimizations.
17354
17355 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17356
17357         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17358         to speedup StringBuilder.
17359
17360 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17361
17362         * dominators.c (mono_compute_natural_loops): Fix detection of
17363         loop body start blocks.
17364
17365         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17366
17367 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17368
17369         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17370         #75145.
17371
17372 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17373
17374         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17375
17376 2006-01-25  Martin Baulig  <martin@ximian.com>
17377
17378         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17379         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17380         started to cleanup this file a little bit.
17381
17382 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17383
17384         * mini.c: optimize a codepath frequently happening in generics code.
17385
17386 2006-01-23  Martin Baulig  <martin@ximian.com>
17387
17388         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17389
17390         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17391         functions directly.
17392
17393         * driver.c: debug-debugger.c is only available if
17394         `MONO_DEBUGGER_SUPPORTED' is defined.   
17395
17396 2006-01-23  Martin Baulig  <martin@ximian.com>
17397
17398         * debug-debugger.c: Only enable this on platforms where the Mono
17399         Debugger is working (x86 and x86_64).
17400
17401 2006-01-21  Martin Baulig  <martin@ximian.com>
17402
17403         The Mono Debugger is now using the normal `mono' instead of the
17404         `mono-debugger-mini-wrapper' when executing managed code.
17405
17406         * debug-debugger.c: New file; previously known as
17407         debugger/wrapper/wrapper.c.
17408
17409         * debug-mini.c (mono_init_debugger): Removed.
17410
17411         * driver.c (mono_main): Added new `--inside-mdb' command line
17412         argument which is used when running inside the debugger.
17413
17414 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17415
17416         * liveness.c (mono_analyze_liveness): Remove some unused data
17417         structures.
17418
17419 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17420
17421         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17422
17423 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17424
17425         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17426         depends on implementation details of monobitset.
17427
17428         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17429         Fixes #77271.
17430
17431 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17432
17433         * liveness.c: Update after monobitset changes.
17434
17435 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17436
17437         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17438
17439 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17440
17441         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17442
17443         * mini-s390x.c: Remove warning messages.
17444
17445 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17446
17447         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17448
17449 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17450
17451         * generics.2.cs: Add ldelem/stelem_any test.
17452
17453 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17454
17455         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17456
17457 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17458
17459         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17460         
17461 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17462
17463         * generics.2.cs: Reenable vtype tests.
17464
17465         * inssel-x86.brg: Remove an icorrect valuetype rule.
17466
17467 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17468
17469         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17470         initial support for OP_ABS.
17471
17472 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17473
17474         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17475
17476 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17477
17478         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17479         conversion and implement LADD/LSUB.
17480
17481         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17482         architectures.
17483
17484 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17485
17486         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17487
17488         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17489         architectures.
17490
17491 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17492
17493         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17494         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17495         (stack walk problem).
17496
17497 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17498
17499         * aot.c (mono_aot_load_method): Fix a warning.
17500
17501 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17502
17503         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17504
17505 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * iltests.il: Add test for #77148.
17508
17509         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17510         #77148.
17511
17512 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17513
17514         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17515
17516 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17517
17518         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17519         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17520
17521         * basic-long.cs: Add lconv-to-r4/r8 tests.
17522
17523 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17524
17525         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17526
17527         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17528         here as on other archs.
17529
17530 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17531
17532         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17533
17534 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17535
17536         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17537         
17538         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17539
17540         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17541         instrument_prolog; Add memory_barrier instruction.
17542
17543 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17546
17547 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17548
17549         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17550
17551         * aliasing.c inssel.brg: Fix warnings.
17552
17553         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17554         could skip initialization of some parts of memory.
17555
17556         * mini.c mini-ia64.c: Fix warnings.
17557
17558         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17559
17560 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17561
17562         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17563         a crash seen on sparc.
17564
17565         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17566         
17567         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17568
17569 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17570
17571         * mini-ops.h: Add s390_backchain instruction
17572
17573         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17574
17575         * cpu-s390.md: Add s390_backchain instruction
17576
17577         * mini-s390.c: Significant ABI changes
17578
17579         * mini-s390.h: Cater for zero length structures
17580
17581 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17582
17583         * mini-s390.c: ABI fixes
17584
17585         * inssel-s390.brg: Remove debug statements
17586
17587         * cpu-s390.md: Fix length of ATOMIC_xx operations
17588
17589 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17590
17591         * basic-float.cs: Add float<->long conversion tests.
17592
17593 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17594
17595         * mini-s390.c: Fix LOCALLOC processing.
17596
17597         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17598
17599 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17600
17601         * iltests.il: Add tests for some opcodes not covered by the other
17602         tests.
17603
17604 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17605
17606         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17607         register loading for Tail processing; Correct trace output.
17608
17609         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17610
17611         * cpu-s390.md: Correct size of jmp instruction. 
17612
17613 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17614
17615         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17616
17617 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17618
17619         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17620           Bring s390 up to current level.
17621
17622 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17623
17624         * generics.2.cs: Disable the newly added tests as they do not work yet.
17625         
17626         * generics.2.cs: Add valuetype tests.
17627
17628 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17629
17630         * basic-long.cs: Add i4->u8 test.
17631
17632         * objects.cs: Add tests for JIT intrinsic.
17633
17634         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17635         optimizations lost by a mistake.
17636
17637 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17638
17639         * basic-long.cs: Remove a test moved to objects.cs.
17640
17641         * arrays.cs: Add more array tests.
17642
17643 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17644
17645         * arrays.cs: Add new tests for multi-dimensional arrays.
17646
17647 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17648
17649         * Makefile.am (test_sources2): Add generics.2.cs.
17650         (EXTRA_DIST): Add test_sources2.
17651
17652 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17653
17654         Support for boxing and unboxing nullable types as well as the
17655         isinst operation on nullables, per the CLI ammendment.
17656
17657         * inssel.brg (CEE_ISINST): Special case for nullable
17658
17659         * mini.c (handle_unbox_nullable): new method
17660         (handle_box): Special case for nullable types
17661         (mono_method_to_ir): Call handle_unbox_nullable in correct
17662         places.
17663
17664         * generics.2.cs: New test suite
17665
17666         * Makefile.am: Support for regression tests with generics.
17667
17668 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17669
17670         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17671         allocated to registers. Fixes #76800.
17672
17673 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17674
17675         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17676
17677 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17678
17679         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17680         of platforms.
17681
17682 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17683
17684         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17685         objects.cs.
17686
17687         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17688         
17689         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17690 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17691
17692         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17693         single precision before storing to a single precision location.
17694
17695 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17696
17697         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17698
17699 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17700
17701         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17702         correct files.
17703
17704         * basic.cs: Remove test_0_byte_compares test which was moved to
17705         objects.cs a long time ago.
17706
17707 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17708
17709         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17710
17711 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17712
17713         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17714         handlers are called.
17715
17716         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17717         throwing code.
17718
17719          * mini-ia64.c: Add support for the throw->branch exception 
17720         optimization.   
17721
17722         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17723
17724 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17725
17726         * mini.c: Enabled "fastpath" deadce :-)
17727         
17728 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17729
17730         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17731         alias analysis pass to support it.
17732         * mini.h: Likewise.
17733         * ssa.c: Likewise.
17734         * liveness.c: Likewise (liveness computation can use aliasing
17735         information to be more accurate).
17736         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17737         moreover made so that "--compile-all" uses the given optimization
17738         flags and not the default ones.
17739         * aliasing.c: Alias analysis (new file).
17740         * aliasing.h: Likewise.
17741         * Makefile.am: added "aliasing.c" and "aliasing.h".
17742         
17743 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17744
17745         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17746         OP_L opcodes.
17747
17748 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17749
17750         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17751         fp >= end_of_stack exit condition, as it is not needed, and it might
17752         become true for fp eliminated frames.
17753
17754 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17755
17756         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17757         coded offsets.
17758
17759 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17760
17761         * mini-arm.c: fixed alignment of doubles/longs to match
17762         the C ABI (bug #76635).
17763
17764 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17765
17766         * aot.c: fix compilation with --enable-minimal=aot.
17767
17768 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17769
17770         * mini-arm.c: fixed compatibility with the new
17771         floating point emulator package for compares.
17772
17773 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17774
17775         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17776
17777 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17778
17779         * mini-exceptions.c (print_stack_frame): Output to stderr.
17780         (mono_handle_native_sigsegv): Ditto.
17781
17782 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17783
17784         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17785         OP_LCONV_TO_OVF_I implementation.
17786
17787         * mini-amd64.c: Add support for the throw->branch exception 
17788         optimization.
17789
17790         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17791         when the catch clause catches a more general exception, i.e. Object.
17792
17793 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17794
17795         * cpu-ia64.md: Remove unused opcodes.
17796
17797         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17798         specific defines for architectures defining USE_SIGACTION.
17799
17800         * mini-ia64.c: Fix some warnings.
17801
17802         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17803         version seemed to skip a frame.
17804
17805 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17806
17807         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17808         only calls which are made to native code use this flag.
17809
17810 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17811
17812         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17813         varargs methods as well.
17814         
17815         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17816         which have save_lmf set. Reorganize methods prologs a bit.
17817
17818         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17819         debugger to the proper place.
17820
17821 2005-10-29  Martin Baulig  <martin@ximian.com>
17822
17823         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17824         when running inside the debugger until the debugger has support
17825         for it.
17826
17827 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17828
17829         * mini.h: Fix a warning.
17830
17831 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17832
17833         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17834         we expose publicly, this returns the string.
17835
17836 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17837
17838         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17839         with fp elimination.
17840
17841 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17842
17843         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17844         native stacktrace using the glibc 'backtrace' function if available.
17845
17846 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17847
17848         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17849
17850         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17851         handle SIGSEGVs received while in native code.
17852
17853         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17854         code, call mono_handle_native_sigsegv which will abort the runtime
17855         after printing some diagnostics, instead of converting it into a
17856         confusing NullReferenceException.
17857
17858 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17859
17860         * cpu-pentium.md: Remove unused opcodes.
17861
17862 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * mini-amd64.h (MonoLMF): Add rsp field.
17865
17866         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17867         the lmf too.
17868
17869 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17870
17871         * mini-codegen.c (get_register_spilling): Fix some warnings.
17872
17873 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17876         elimination during exception handling. Enable fp elimination by
17877         default.
17878
17879         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17880         elimination.
17881
17882 2005-10-16  Martin Baulig  <martin@ximian.com>
17883
17884         * mini-exceptions.c
17885         (mono_debugger_run_finally): New public method for the debugger.
17886
17887 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17888
17889         * debug-mini.c (mono_debug_init_method): Fix warning.
17890
17891         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17892         the 'exname' parameter const to fix some warnings.
17893
17894 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17895
17896         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17897         introduced by the previous patch.
17898
17899 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17900
17901         * basic-float.cs: Add test for precision of float arithmetic.
17902
17903         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17904         when loading/storing single values from/to memory.
17905
17906         * mini.c (mono_jit_compile_method_with_opt): Create the function
17907         pointers in the correct domain.
17908
17909 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17912         introduced by previous patch.
17913         
17914         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17915         when out_filter_idx is NULL.
17916
17917         * mini-exceptions.c: Don't run filter clauses twice during exception
17918         handling. Fixes #75755.
17919
17920 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * aot.c: Add support for ldflda wrappers.
17923
17924         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17925         #75902.
17926
17927 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17928
17929         * mini.c, mini.h: do not consider exception handlers blocks when
17930         setting up interface variables.
17931
17932 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17935
17936 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17937
17938         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17939         causes a regression.
17940
17941         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17942
17943 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17946         of the OP_P definitions.
17947
17948         * TODO: Add a proposal for dealing with the CEE/OP mess.
17949
17950         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17951         optimizations from the x86 port.
17952
17953         * cpu-amd64.md: Ditto.
17954
17955         * basic.cs basic-long.cs: Add tests.
17956
17957 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17958
17959         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17960         Patrik Torstensson's implementation of my exception-handling
17961         optimization idea, when the exception object is not used
17962         (bug #62150).
17963
17964 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17965
17966         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17967         of the mul_imm optimizations from the old jit.
17968
17969 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17970
17971         * mini.c, liveness.c: patch by Patrik Torstensson and
17972         Zoltan Varga to improve performance in methods with
17973         exception clauses.
17974
17975 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17976
17977         * driver.c: Remove 'Globalization' entry from --version.
17978
17979 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17980
17981         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17982         there is a profiler interested in JIT events.
17983
17984         * aot.c: Load profile files produced by the AOT profiling module, and
17985         reorder methods based on the profiling info. Add a 'method_order' table
17986         to the AOT file to make mono_aot_find_jit_info work with the reordered
17987         methods.
17988
17989         * mini.h: Bump AOT file version info.
17990
17991 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17992
17993         * mini-arm.h: work around what looks like a gcc bug when optimizations
17994         are enabled.
17995
17996 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17997
17998         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17999         conditionals.  Use ...
18000         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18001
18002 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18005         to determine the amount of memory to copy when passing valuetypes.
18006
18007         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18008         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18009
18010 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18011
18012         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18013         information about aot.
18014
18015 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18016
18017         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18018         macros. This will allow a deadlock debugger to easily be plugged
18019         in.
18020
18021 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18024
18025 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18026
18027         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18028         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18029         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18030         ($(arch_built)) [CROSS_COMPILING]: Error out.
18031
18032 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18033
18034         * aot.c: Add support for the no_special_static flag for classes.
18035
18036 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18037
18038         * Reapply reverted patches.
18039
18040         * *: Revert r50174 as well.
18041
18042         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18043
18044 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18045
18046         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18047
18048 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18049
18050         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18051         part of the SIG_HANDLER_SIGNATURE.  
18052
18053 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18054
18055         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18056         statistics.
18057
18058         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18059         introduced by previous patch.
18060
18061 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18062
18063         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18064         saved registers too.
18065
18066         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18067         upon the information returned by get_call_info ().
18068         
18069         * mini-x86.c (add_float): Fix stack size calculation.
18070         (mono_arch_call_opcode): Rewrite this so it works based up the
18071         information returned by get_call_info ().
18072         (mono_arch_get_this_vret_args): Ditto.
18073
18074 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18075
18076         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18077         in cinfo to determine the registers which need to be used.
18078
18079 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18080
18081         * driver.c (mono_main): Add --server and --desktop flags. 
18082
18083 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18086         registers as global registers.
18087
18088         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18089         longer needed with the new register allocator.
18090
18091         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18092
18093         * cpu-ia64.md: Remove unused opcodes.
18094         
18095         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18096         
18097 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * cpu-amd64.md: Remove unused opcodes.
18100
18101         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18102         needed with the new register allocator.
18103
18104         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18105         reg-reg moves.
18106
18107 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18108
18109         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18110
18111 2005-09-16  Martin Baulig  <martin@ximian.com>
18112
18113         * exceptions-amd64.c
18114         (throw_exception): Don't call mono_debugger_throw_exception() if
18115         we're a rethrow - see the FIXME in the code.
18116
18117 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18118
18119         * mini.c (mono_init_exceptions): This only works on some architectures.
18120         
18121 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18122
18123         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18124         on ia64.
18125
18126         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18127
18128         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18129         now in mini-exceptions.c.
18130
18131 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18132
18133         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18134         now in mini-exceptions.c.
18135
18136 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18137
18138         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18139         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18140
18141         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18142         code into mini-exceptions.c. Add some assertions to it.
18143
18144 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18145
18146         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18147         (<software@solmersa.com>). Fix as errors on windows.
18148
18149 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18152         method info into the LMF.
18153
18154 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18155         
18156         * mini-ia64.c: Add proper unwind info for method epilogs.
18157
18158         * exceptions-ia64.c: Add some code to help debugging.
18159         
18160         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18161
18162         * mini-exceptions.c: Fix warning.
18163
18164 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * mini.c: Really fix build.
18167
18168         * mini-x86.c mini-amd64.c: Fix build.
18169
18170 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18171
18172         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18173
18174         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18175         some Interlocked methods as intrinsics.
18176
18177         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18178         for Thread methods as well.
18179
18180         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18181
18182         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18183
18184         * mini-ia64.c mini-x86.c mini-amd64.c 
18185         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18186         OP_MEMORY_BARRIER.
18187         
18188         * mini.c (mono_init_exceptions): Fix build breakage.
18189
18190 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18191
18192         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18193         of instructions. Use the new ia64_unw_op macros for emitting unwind
18194         info.
18195
18196         * mini.c (mono_init_exceptions): Initialize exception handling
18197         related trampolines at startup.
18198
18199 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18200
18201         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18202
18203 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18204
18205         * mini.c: Handle type loading errors gracefully during compilation and
18206         throw the appropriate exception.
18207
18208 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18209
18210         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18211         for the mono binary.
18212
18213 2005-09-09  Martin Baulig  <martin@ximian.com>
18214
18215         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18216         the release.
18217
18218 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18219
18220         * mini-arm.h: use emulation for conv.r.un for the release.
18221
18222 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18223
18224         * mini-arm.c, objects.cs: more fixes and tests for them.
18225
18226 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18227
18228         * mini-arm.c: align structures to at least 4 bytes to be able
18229         to keep our current optimized memcpy.
18230
18231 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18232
18233         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18234
18235 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18236
18237         * mini.c: ignore SIGPIPE.
18238
18239 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18240
18241         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18242
18243         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18244
18245 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18246
18247         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18248
18249 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18250
18251         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18252         exception handling support.
18253         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18254         patch by Brian Koropoff <briank@marakicorp.com>).
18255
18256 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18257
18258         * mini.c: revert another 'optimization' which breaks when
18259         items on the eval stack need to be saved at a basic block end
18260         (bug #75940).
18261
18262 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18263
18264         * jit-icalls.c: for arrays, ensure we always provide
18265         lower bounds.
18266
18267 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18268
18269         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18270         
18271         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18272
18273 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18274
18275         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18276         arguments in their original register.
18277
18278 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18279
18280         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18281         memset/memcpy.
18282
18283         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18284         when ssapre is enabled.
18285
18286         * inssel-long.brg: Fix bug in previous patch.
18287
18288         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18289         multiplication by a constant.
18290
18291 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18292
18293         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18294         icc.
18295
18296         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18297         saving registers.
18298
18299 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18300
18301         * inssel-arm.brg: apply changes tested by Brian Koropoff
18302         <briank@marakicorp.com>.
18303
18304 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18305
18306         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18307         
18308 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18309
18310         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18311         to the same register if dreg is just a base register.
18312         (print_ins): Improve printing of membase opcodes.
18313
18314         * inssel-x86.brg: Add optimized ldind(reg) rules.
18315
18316         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18317
18318 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18319
18320         * mini.c: when running under valgrind, set the stack bottom for
18321         the GC at the actual approximate stack for the app (fixes running
18322         mono with valgrind).
18323
18324 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18325
18326         * mini.c: do no break at the first valuetype to init found
18327         (fixes bug #75791).
18328
18329 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18330
18331         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18332
18333 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18334
18335         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18336
18337 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18338
18339         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18340
18341 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18342
18343         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18344
18345         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18346         code.
18347
18348         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18349         code.
18350
18351         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18352         methods.
18353
18354 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18355
18356         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18357
18358 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18359
18360         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18361         in the tail recursion optimization.
18362
18363         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18364         debug info into the assembly file.
18365
18366         * iltests.il: Add test for filter regions.
18367
18368         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18369         initial stack of filter regions. Fixes #75755.
18370
18371 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18372
18373         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18374         stack requirements.
18375
18376 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18377
18378         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18379         the check for an already compiled method on non-ia64 platforms.
18380         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18381         proper domain.
18382
18383         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18384
18385         * inssel-x86.brg: Add some optimized call rules.
18386
18387 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18390         method here.
18391
18392         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18393         mono_arch_patch_delegate_trampoline.
18394
18395         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18396
18397         * mini-trampolines.c: Fix build.
18398
18399         * mini-amd64.h: Add delegate trampolines.
18400
18401         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18402
18403         * inssel-amd64.brg: Add optimized call rules.
18404         
18405         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18406
18407         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18408
18409 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18412         change.
18413
18414         * mini-ia64.c: Remove LMF fixmes.
18415
18416         * mini-ia64.h: Remove most fields from LMF.
18417
18418         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18419
18420         * mini-trampolines.c: Add support for IA64 function descriptors.
18421
18422         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18423         for IA64 function descriptors.
18424
18425 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18426
18427         * tramp-arm.c: patch the vtable for virtual calls. Added
18428         support code to register/unregister the LMF.
18429         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18430         more LMF work.
18431
18432 2005-08-19  Dick Porter  <dick@ximian.com>
18433
18434         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18435         bit value if needed.
18436
18437 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18438
18439         * mini.c (mini_get_method): Move handling of wrapper data here.
18440
18441         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18442
18443         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18444         virtual.
18445
18446         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18447         bblock->code does not remain empty.
18448
18449 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18450
18451         * arrays.cs: Add regression test for #75832.
18452
18453         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18454         rules. Fixes #75832.
18455
18456         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18457         instruction scheduling.
18458
18459 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18460
18461         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18462
18463 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18464
18465         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18466
18467         * mini-codegen.c: Fix VC build.
18468
18469         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18470
18471 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18472
18473         * mini.h: fix signature for mono_register_opcode_emulation.
18474
18475 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18476
18477         * mini.c: Get rid of most of the helper_sig_... constants using
18478         mono_create_icall_signature ().
18479
18480 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18481
18482         * jit-icalls.c (helper_ldstr): New helper function.
18483
18484         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18485
18486         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18487         throw, load the string using a helper call instead of creating a string object.
18488
18489         * aot.c: Update after LDSTR changes.
18490
18491         * mini.h: Bump AOT file version.
18492         
18493         * aot.c: Save class size info into the AOT file. Print more statistics during
18494         compilation.
18495
18496         * mini.h: Bump AOT file version.
18497
18498         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18499         ordering of disasm cases. Fixes #74957.
18500
18501 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18502
18503         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18504         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18505         the generic code needed for the ARM port.
18506
18507 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18508
18509         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18510         inssel-arm.brg: more ARM features and fixes.
18511
18512 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18513
18514         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18515         ARM port work in progress.
18516
18517 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18520
18521         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18522
18523         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18524
18525         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18526
18527         * *-ia64.*: Ongoing IA64 work.
18528         
18529         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18530
18531 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * TODO: Remove out-of-data todo stuff.
18534
18535         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18536         dead code.
18537
18538         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18539
18540         * mini.h: Bump corlib version.
18541
18542 2005-07-27  Martin Baulig  <martin@ximian.com>
18543
18544         * mini-codegen.c
18545         (create_copy_ins): Added `const unsigned char *ip' argument; set
18546         `copy->cil_code' from it.
18547
18548 2005-07-27  Martin Baulig  <martin@ximian.com>
18549
18550         * mini-exceptions.c (mono_handle_exception): Don't call
18551         mono_debugger_handle_exception() for filters.
18552
18553 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18554
18555         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18556         as well.
18557
18558 2005-07-26  Martin Baulig  <martin@ximian.com>
18559
18560         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18561
18562         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18563         helper_compile_generic_method() if the method is actually virtual
18564         and non-final.
18565
18566 2005-07-26  Martin Baulig  <martin@ximian.com>
18567
18568         * mini.c
18569         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18570         public; this is now accessed directly by the debugger.
18571         (mono_generic_trampoline_code): Removed.
18572
18573         * debug-mini.c
18574         (mono_debug_init_method): Also add interncalls and wrappers.
18575
18576 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18577
18578         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18579
18580 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18581
18582         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18583
18584 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18587
18588 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18589
18590         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18591         getting TLS offsets on AMD64 too.
18592
18593 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18594
18595         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18596
18597 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18598
18599         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18600         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18601
18602 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18603
18604         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18605
18606         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18607         to mini.c.
18608
18609         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18610         mono_sparc_is_virtual_call ().
18611         
18612         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18613
18614         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18615         trampoline parameters.
18616
18617         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18618         
18619         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18620         to mono_arch_get_vcall_slot_addr.
18621
18622         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18623         trampoline code.
18624
18625         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18626
18627 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18630
18631 2005-07-19  Martin Baulig  <martin@ximian.com>
18632
18633         * exceptions-amd64.c (throw_exception): Call
18634         mono_debugger_throw_exception() here like we're doing it on i386.
18635
18636 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18637
18638         * mini-ia64.c: Add optimized TLS access support.
18639
18640 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18641
18642         * mini-exceptions.c: Ongoing IA64 work.
18643
18644         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18645
18646         * mini.c: Use the default optimization set when embedding. Fixes
18647         #75194.
18648
18649 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18650
18651         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18652         of trampolines to a separate file.
18653
18654         * mini-trampolines.c: New file.
18655
18656         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18657         separate file.
18658         
18659         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18660         amd64/ia64 code.
18661
18662         * mini-codegen.c: Fix cygwin build.
18663
18664 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * mini.c: Add some minor changes needed by the IA64 port.
18667
18668         * *-ia64.*: Ongoing IA64 work.
18669
18670 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18671
18672         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18673         trampolines into arch-independent and arch-dependent parts.
18674
18675         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18676
18677 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18678
18679         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18680
18681         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18682         the xp-regalloc-branch for amd64.
18683
18684         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18685         xp-regalloc-branch for x86.
18686
18687 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18688
18689         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18690
18691 2005-07-06  Martin Baulig  <martin@ximian.com>
18692
18693         * mini.c
18694         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18695         (mono_jit_runtime_invoke): Likewise.
18696
18697 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18700         on x86 too.
18701         
18702         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18703         without loading their metadata. Reorganize the file format so exception handling+
18704         debug info is kept separate from normal method info. Create MonoJitInfo 
18705         structures for methods lazily.
18706
18707         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18708         loading metadata.
18709         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18710
18711         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18712
18713         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18714         in AOT code.
18715
18716         * mini.h: Bump AOT file version.
18717
18718 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18721
18722 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18723
18724         * Makefile.am (check-local): Call semdel-wrapper.
18725
18726 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18727
18728         * mini-x86.c: Revert the last change as it seems to break the build..
18729
18730 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18731
18732         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18733         
18734         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18735
18736 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18737
18738         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18739         outside of the macro, so strange stuff doesn't happen with gcc4
18740         (NEW_AOTCONST_TOKEN): Likewise.
18741
18742 2005-06-28  Martin Baulig  <martin@ximian.com>
18743
18744         * mini.c (mini_class_is_system_array): New static method; use this
18745         instead of `klass->parent == mono_defaults.array_class' everywhere
18746         since this also works for the new generic array class.
18747
18748 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18749
18750         * inssel.brg: Remove warnings.
18751
18752 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini-ia64.c: Ongoing IA64 work.
18755
18756         * basic-float.cs: Add float->i1 conversion test.
18757
18758         * iltests.il: Add conv.u4 test.
18759
18760 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18761
18762         * inssel-long.brg: Fix bug caused by last change.
18763
18764 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18765
18766         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18767         BSDs.  Allows the x86 JIT to work on OSX86
18768
18769 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18770
18771         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18772         u4->i8 conversion.
18773
18774         * mini-ia64.c: Ongoing IA64 work.
18775
18776 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18777
18778         * mini-ia64.c: Ongoing IA64 work.
18779
18780         * driver.c: Clean up jit_code_hash as well when using --regression.
18781
18782         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18783
18784         * basic-long.cs: Add tests for long->u4 conversion.
18785
18786 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18787
18788         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18789         that we do not depend on undefined C behavior: the order stuff
18790         gets evaluated within an expression. Fixes mono when compiled on
18791         GCC 4.
18792
18793 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * *-ia64.*: Ongoing IA64 work.
18796
18797         * aot.c: Lower memory usage while loading AOT methods.
18798
18799         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18800
18801         * mini.h: Bump AOT file format version.
18802
18803 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18804
18805         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18806
18807 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18808
18809         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18810         not on callee assembly). Fixed some comments.
18811
18812 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18815         it gets proper disassembly.
18816         (emit_method_info): Remove some dead code.
18817
18818         * mini.c (mini_method_compile): Allways allocate the GOT var in
18819         mono_method_to_ir for emulating opcodes.
18820
18821 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18824         before freeing the code memory. Fixes #74990.
18825
18826         * objects.cs: Add regression test for #74992.
18827
18828         * liveness.c: Extend live ranges of arguments to the beginning of the
18829         method. Fixes #74992.
18830
18831         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18832         so it points into the faulting instruction.
18833
18834 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18835
18836         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18837
18838         * *-ia64.*: Ongoing IA64 work.
18839
18840         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18841
18842 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18845
18846         * *-ia64.*: Ongoing IA64 work.
18847
18848 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18849
18850         * basic-long.cs: Add tests for add/sub.ovf.
18851
18852         * basic.cs: Add tests for sub.ovf.
18853
18854         * *-ia64.*: Ongoing IA64 work.
18855
18856 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * *-ia64.*: Ongoing IA64 work.
18859
18860         * basic.cs: Add conv.ovf.i4.un test.
18861
18862 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18863
18864         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18865         
18866 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18867
18868         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18869
18870 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * *-ia64.*: Ongoing IA64 work.
18873
18874 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18875
18876         * trace.[ch]:
18877         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18878
18879 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18882
18883 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18884
18885         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18886
18887         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18888         of a call is callable by a near call.
18889
18890 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * mini-ia64.c: Ongoing IA64 work.
18893
18894 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * genmdesc.c: Make the generated array non-static.
18897
18898         * inssel-long.brg: Fix LSHR_IMM rule.
18899
18900         * *-ia64.*: Ongoing IA64 work.
18901
18902         * *-ia64.*: Ongoing IA64 work.
18903
18904 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18905
18906         * *-ia64.*: Ongoing IA64 work.
18907
18908         * *-ia64.*: Ongoing IA64 work.
18909         
18910         * mini-ia64.c: Ongoing IA64 work.
18911
18912         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18913
18914 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18917         
18918         * objects.cs basic-long.cs: Move some tests to objects.cs.
18919
18920 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * *-ia64.*: Ongoing IA64 work.
18923
18924         * iltests.il: Add a new test.
18925
18926         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18927         newobj. Fixes #75042.
18928
18929 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18930
18931         * *-ia64.*: Ongoing IA64 work.
18932         
18933         * *-ia64.*: Ongoing IA64 work.
18934         
18935         * *-ia64.*: Ongoing IA64 work.
18936
18937         * basic.cs objects.cs: Move tests accessing static variables as well.
18938
18939         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18940
18941 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18944
18945         * driver.c: Always print failed tests.
18946
18947         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18948         frame pointer.
18949
18950         * *ia64*: Ongoing IA64 work.
18951
18952 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18953
18954         * basic.cs: Add tests for add.ovf. Fix warnings.
18955
18956 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18957
18958         * driver.c (mono_main): Avoid crash if no argument is passed to
18959         --break;  Do not use g_error, but f_printf.   And fix all other
18960         ocurrences of the same crash.
18961
18962 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18963
18964         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18965         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18966         Fixes #74742.
18967
18968 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * *-ia64.*: Add beginnings of IA64 backend.
18971
18972         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18973
18974 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18975
18976         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18977         Fixes #74925.
18978
18979         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18980
18981         * mini-amd64.c: Fix a warning.
18982
18983 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18986         in float_neg. Fixes #74897.
18987
18988         * mini-amd64.c (emit_call): Fix another near call bug.
18989
18990 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18991
18992         * declsec.c: Keep the appdomain information in the structure. Added a 
18993         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18994         value gets overwritten).
18995         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18996         an MonoAppDomain member to MonoSecurityFrame.
18997         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18998         used in the stack walk. Now use a MonoArray which grow (double) when
18999         it gets full.
19000
19001 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19002
19003         * mini.c: Re-enabled runtime cleanup, since running threads should
19004         now properly stop when exiting.
19005
19006 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * mini-codegen.c: New file contaning the arch-independent local
19009         register allocator. Not used by any architectures yet.
19010
19011         * mini.h linear-scan.c: Merge some changes from the 
19012         mini-xp-local-regalloc branch.
19013
19014 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini-amd64.c (emit_call): Fix calls to native functions when the
19017         runtime is compiled as a shared library. Fixes #74756.
19018
19019         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19020         on a literal field. Fixes #74751.
19021
19022 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19023
19024         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19025
19026 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19027
19028         * objects.cs: Add missing null casting test.
19029
19030 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19033         in wrapper methods. Also rename 'address' variable to 'offset'.
19034
19035 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19038         warnings.
19039         
19040         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19041
19042         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19043         work on windows.
19044
19045 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19046
19047         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19048
19049 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19052         just the last bytes.
19053
19054 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19055
19056         * aot.c (mono_compile_assembly): Fix warning.
19057
19058         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19059         by the _MSC_VER stuff.
19060
19061 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19062
19063         * inssel-long.brg: Fix #74588.
19064
19065         * cpu-amd64.md: Fix #74591.
19066
19067         * iltests.il: Add new regression tests.
19068
19069 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19072         valuetype.
19073
19074 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19077
19078         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19079         from Bill Middleton <flashdict@gmail.com>.
19080
19081 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * arrays.cs: Add new regression test. Fix warnings.
19084
19085 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19086
19087         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19088         and leakage in CKFINITE.
19089
19090         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19091         this to a null op since it is called on amd64 too.
19092
19093         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19094
19095         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19096         body since this is not used on amd64.
19097         
19098         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19099
19100         * mini-amd64.c: Remove obsolete fixmes.
19101
19102         * mini.c (print_method_from_ip): Fix debugging support.
19103
19104 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19105
19106         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19107         so that expressions that don't give much gain are not reduced.
19108         * ssapre.h: Likewise.
19109
19110 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19113
19114         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19115
19116         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19117
19118 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19119
19120         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19121
19122         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19123
19124 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19125
19126         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19127         stack touching.
19128
19129         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19130
19131         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19132
19133         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19134
19135         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19136         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19137
19138         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19139
19140         * mini-x86.c: Fix up stack overflow handling.   
19141
19142         * exceptions.cs: Add new regression test.
19143
19144 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19145
19146         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19147         mono_jit_thread_attach.
19148
19149         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19150
19151 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19154         avoid calling constructors using callvirt.
19155
19156         * inssel.brg: Fix #74073.
19157
19158 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19159
19160         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19161         compilation with non-GCC compilers.
19162         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19163         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19164
19165 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19166
19167         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19168         klass->interface_offsets (will likely fix bug#74073).
19169
19170 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19171
19172         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19173
19174 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19177         to amd64_div_reg_size ().
19178         
19179         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19180
19181 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19182
19183         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19184
19185 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19186
19187         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19188
19189 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19190
19191         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19192         
19193         * mini.c (mono_precompile_assembly): Load and precompile referenced
19194         assemblies as well. Fixes #74015.
19195
19196 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19199
19200 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19201
19202         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19203         a lot of checks and (anyway) permissions cannot work until corlib is 
19204         loaded.
19205
19206 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19207
19208         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19209
19210 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19211
19212         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19213         calls (fixes bug#72824).
19214
19215 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19216
19217         * mini.c: fix tail recursion elimination (see test in bug#73936).
19218
19219 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19222         some fp functions in sse2 mode.
19223
19224 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19227
19228 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * mini.h mini.c: Add mono_get_jit_tls_key ().
19231
19232         * mini-x86.c: Enable fast TLS support on windows.
19233
19234 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19235
19236         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19237         * mini.c: Check for p/invoke method when generating code. If a
19238         p/invoke method, or it's class, isn't decorated with [Suppress
19239         UnmanagedCodeSecurity] then generate code to call System.Security.
19240         UnmanagedDemand (only if the security manager is active).
19241
19242 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19245         last change as it seems to cause strange crashes.
19246         
19247 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19248
19249         * *.c: handle unsafe function pointers where needed.
19250
19251 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * mini.c (mono_jit_free_method): Remove the fixme too.
19254
19255 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19256
19257         * mini.c: As discussed, make the code actually free the delegate
19258         thunk now, to enable the debugging of delegate problems, use
19259         MONO_DEBUG=1 when running Mono. 
19260
19261         This takes also care of parts of the leaks as seen by Joe.
19262
19263 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19266         thread_tls_offset calculation.
19267
19268 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19269
19270         * declsec.c: Reworked linkdemand checks for icall. The previous code
19271         was using the declaration code (untrusted) and didn't work as expected
19272         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19273         specific case.
19274
19275 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * iltests.il: Add new localloc test.
19278
19279         * mini-amd64.c: Handle large stack allocations the same way as on
19280         windows if stack overflow handling is working.
19281         
19282         * mini-amd64.c: Allocate the signal stack using mmap.
19283
19284         * mini.c (sigsegv_signal_handler): Fix reading of context.
19285
19286         * mini-exceptions.c: Fix up stack overflow handling.
19287
19288         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19289
19290         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19291
19292         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19293
19294         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19295
19296         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19297         tramp_init functions as they are no longer needed.
19298
19299 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19300
19301         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19302         
19303         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19304
19305         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19306         
19307         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19308         support that now.
19309
19310         * mini-ops.h: Add OP_LMUL_IMM.
19311
19312         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19313         long mul/div opcodes as intrinsic.
19314
19315         * mini-amd64.c (emit_call): Handle the case when the callee might be
19316         an AOT method.
19317
19318 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19319
19320         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19321         extra safe.
19322         
19323         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19324
19325         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19326
19327 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19328
19329         * mini.c (mono_codegen): Don't leak here, to help people running
19330         monogrind.
19331
19332 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19335         conversions in sse2 mode.
19336
19337         * basic-float.cs: Add regression test.
19338         
19339         * mini-amd64.c: Reenable sse2.
19340
19341 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19344
19345 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19346
19347         * driver.c: Copyright text should include 2005.
19348         
19349 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19350
19351         * cpu-amd64.md (load_membase): Fix more max lengths.
19352
19353 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * cpu-amd64.md (load_membase): Fix max length.
19356
19357         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19358
19359         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19360
19361         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19362         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19363
19364         * basic-float.cs: Add rounding regression test.
19365
19366         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19367
19368 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19369
19370         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19371         structures in registers for pinvoke wrappers.
19372
19373 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19376
19377 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19378
19379         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19380         wrapper to mono_jit_thread_attach.
19381
19382         * mini.c (mini_jit_thread_attach): New jit icall.
19383
19384         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19385         native->managed wrappers.
19386
19387         * exceptions.cs: Add new regression test.
19388
19389         * mini.c (optimize_branches): Check regions in the cbranch to throw
19390         block case as well. Fixes #73242.
19391
19392 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19393
19394         * mini.c: thread safety fixes.
19395
19396 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19399         patching stuff, since delegates use jump trampolines so there is
19400         no caller.
19401
19402         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19403         jump trampolines.
19404         
19405         * tramp-amd64.c: Fix build.
19406
19407         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19408         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19409
19410         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19411         Rename this to mono_arch....
19412         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19413
19414         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19415
19416         * mini-amd64.c (emit_call): If both the caller and the callee is
19417         guaranteed to have 32 bit addresses, emit a normal call.
19418
19419         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19420
19421         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19422         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19423         method_ptr inside delegates.
19424
19425 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19428         invalidated. Fixes #73001.
19429
19430         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19431
19432         * mini-x86.c: Only use stdcall for pinvokes on windows.
19433
19434 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19435
19436         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19437         * mini-x86.c: remove unreliable __thread var offset detection,
19438         use the correct accessors and enable by default.
19439
19440 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19441
19442         * mini.c (mono_jit_free_method): Fix memory leak.
19443
19444 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19445
19446         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19447
19448 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19449
19450         * cpu-amd64.md: Fix lengths of atomic opcodes.
19451
19452 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19453
19454         * driver.c: try to not imply using ICU is any good.
19455
19456 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19457
19458         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19459         functions as inline ops.
19460
19461         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19462         some Interlocked functions as inline ops.
19463
19464         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19465
19466         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19467
19468         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19469
19470         * mini.c: Add support for OP_NOT_TAKEN.
19471
19472         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19473         structures in registers for pinvoke wrappers.
19474
19475         * mini-amd64.c: Fix warnings.
19476
19477 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19480
19481         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19482
19483         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19484         address instead of loading the address from it.
19485
19486         * mini-x86.c: Add support for returning small structs in registers
19487         on Win32. Fixes part of #70864.
19488         
19489 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * trace.c (get_token): Improve error checking.
19492
19493 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19496
19497 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19498  
19499         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19500         it can be reused for MonoClass.
19501         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19502         _LINKDEMAND.
19503
19504 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19505
19506         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19507         instead of a MonoReflectionMethod. The method information wasn't used
19508         when displaying SecurityException details (but will be now).
19509
19510 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19511
19512         * Makefile.am : windows build fix.
19513
19514 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * iltests.il: Add new regression test.
19517
19518         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19519         #72522.
19520
19521 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19522  
19523         * mini.c: Moved linkdemand check into helper function check_linkdemand
19524         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19525         LDFTN, LDVIRTFTN).
19526
19527 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19528
19529         * declsec.c: Added statistics counter for different kinds of 
19530         LinkDemands.
19531         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19532         (and commented) declaration.
19533         * mini.c: Added statistics counter for security Demand code 
19534         generation. Added display of security statistics.
19535
19536 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19539         Fix compilation errors under gcc-2.95.
19540
19541 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19542
19543         * mini.c, driver.c: Use the new jit trampoline hashtable
19544
19545 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19546
19547         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19548
19549 2005-02-11  Martin Baulig  <martin@ximian.com>
19550
19551         * debug-mini.c (mono_debug_close_method): Free the line number array.
19552
19553 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19554
19555         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19556         icalls.
19557
19558         * mini.h: Bump AOT file format version. 
19559
19560 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19561
19562         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19563         APTC and P/Invoke.
19564         * declsec.h: Added macros to get/set lazyly initialized security 
19565         informations about assemblies. Added new enum for different type of
19566         possible LinkDemand violation. Added function to check LinkDemands.
19567         * mini.h: Added a field to MonoCompile to hold any security violation
19568         detected when JITting a method (so it can be thrown later).
19569         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19570         and CEE_CALLVIRT. Added code to throw exception at the end of
19571         mini_method_compile (note: the exception is unhandled right now).
19572
19573 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19574
19575         * mini.c, jit-icalls.c: use the managed implementation of
19576         memset for initobj and memset, to avoid managed <-> unmanaged
19577         transitions.
19578
19579 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19582         optimization if it would need a GOT var.
19583
19584         * basic.cs: Add tests for constant propagation and switch statements.
19585
19586         * ssa.c: Fix out-of-range constant propagation and switch statements.
19587
19588 2005-02-09    <vargaz@freemail.hu>
19589
19590         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19591
19592 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19595
19596 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19597
19598         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19599
19600 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19601
19602         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19603         arithmetic operations.
19604
19605 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19606
19607         * mini-ppc.c: add a workaround for broken user code that
19608         DllImports vararg functions with non-vararg signatures.
19609
19610 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19613         meaningfull error message for assemblies written in Managed C++.
19614
19615         * tramp-amd64.c mini-amd64.h: Add support for 
19616         create_trampoline_from_token ().
19617
19618         * aot.c mini-x86.c abcremoval.c: Applied patch from
19619         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19620
19621 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19622
19623         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19624         which takes a MonoImage/token as parameter instead of a MonoMethod.
19625
19626         * aot.c: Use the new trampoline for initializing vtables.
19627
19628         * aot.c: Add support for ldfld/stfld_remote wrappers.
19629
19630         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19631         rules for compare <MEM>, IMM.
19632
19633         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19634
19635         * aot.c: Handle inherited finalizers correctly.
19636
19637 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * inssel.brg (stmt): Add a missing _setup_... ().
19640
19641         * aot.c: Save some parts of the class state to the AOT file and use it
19642         to recompute that state when a class is initialized.
19643
19644         * mini.c: Install AOT hooks into the runtime.
19645
19646         * mini.h: Bump AOT file format version.
19647         
19648         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19649         Fixes #72148.
19650
19651         * iltests.il: Add new test.
19652
19653 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19654
19655         * mini.c: fix typo.
19656
19657 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19658
19659         * mini.c: setup the statistical profiler in the thread attach
19660         callback to cope with the new single thread code.
19661
19662 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19663
19664         * mini-ppc.c: ensure we have enough room for the profiler
19665         calls (fixed bug#72084).
19666
19667 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19670         it.
19671
19672 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19673
19674         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19675
19676 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19677
19678         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19679         to succesfully execute parrotbench).
19680         * ssapre.h: Likewise.
19681
19682 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19683
19684         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19685         variable for stores to method arguments (fixes a SSAPRE issue).
19686
19687 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini.c: handle value types in dup, fixes gen-112.cs.
19690
19691 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19692
19693         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19694         sequence for calls in dynamic methods to avoid thunks.
19695
19696 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19697
19698         * mini.c: correctly remove dynamic methods from the hashtable.
19699
19700 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19701
19702         * driver.c: Disabled SSAPRE until fix the bug that appears
19703         in IronPython's parrotbench.
19704
19705 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19708
19709         * mini.c (mono_method_to_ir): Revert the previous change.
19710         
19711         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19712         when AOT compiling.
19713
19714         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19715         mono_jit_info_table_find () etc. when running under valgrind.
19716
19717         * inssel.brg: Fix warnings.
19718
19719         * mini-exceptions.c: Fix warnings.
19720
19721 2005-01-31  Martin Baulig  <martin@ximian.com>
19722
19723         * driver.c (compile_all_methods_thread_main): Don't try to compile
19724         generic methods or anything which has type parameters.
19725
19726 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19729
19730         * TestDriver.cs: Add --verbose flags.
19731
19732         * graph.c ssa.c: Fix 64 bit warnings.
19733         
19734         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19735         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19736         Fix 64 bit warnings.
19737
19738         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19739         variable not spotted by gcc.
19740         
19741         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19742         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19743         X86_COMPARE_MEMBASE opcodes.
19744
19745         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19746
19747 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19748
19749         * *: MonoMethod->signature might be NULL now. You *MUST* use
19750         mono_method_signature.
19751
19752 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * driver.c (compile_all_methods_thread_main): Compile the methods
19755         without invoking cctors.
19756
19757 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19758
19759         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19760         * basic-calls.cs: test for the above.
19761
19762 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19765         MonoJitInfo changes.
19766
19767 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19770         eagerly if it contains dynamic methods.
19771         
19772         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19773
19774         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19775         trace, it is now computed by an icall from trace_ips.
19776         
19777         * mini-exceptions.c: Fix a warning.
19778
19779 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19780
19781         * mini-exceptions.c: don't bother getting stack trace info if
19782         it's not going to be used.
19783
19784 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19785
19786         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19787         ssapre-mini-ops.h.
19788
19789 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19792
19793         * aot.c: Avoid calling mono_method_get_header () if not needed.
19794
19795         * mini.h: Bump AOT file format version.
19796         
19797         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19798
19799         * mini.c (mono_print_tree): Print more info for calls.
19800
19801 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19802
19803         * declsec.h: Remove warning by adding missing include for marshal.h
19804
19805 2005-01-26  Martin Baulig  <martin@ximian.com>
19806
19807         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19808         `ip' twice.
19809
19810 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19813         flags.
19814
19815         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19816
19817         * aot.c (mono_compile_assembly): Fix a warning.
19818
19819 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19820
19821         * declsec.c: Look for security attributes on the original MonoMethod 
19822         (and not the wrapped one). This fix permissions on icalls.
19823
19824 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19827
19828         * mini.c (mono_allocate_stack_slots): Add a fixme.
19829
19830         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19831
19832 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19833
19834         * inssel.brg: optimize casts of sealed types (more
19835         optimizations waiting for fixes in remoting).
19836
19837 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * inssel.brg (stmt): Add another dummy rule.
19840
19841         * driver.c: Fix warnings.
19842
19843         * driver.c (mono_main): If running under valgrind, instruct glib to use
19844         the system allocation functions so valgrind can track the memory
19845         allocated by the g_... functions.
19846
19847         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19848
19849         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19850
19851         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19852
19853         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19854         variables in try regions.
19855
19856         * mini.c (mini_method_compile): Don't disable optimizations on large
19857         methods when AOT compiling.
19858
19859         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19860         allocate stack slots. Not yet used.
19861
19862 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19863
19864         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19865
19866 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19867
19868         * mini-ppc.c: make the branch info relative as the code
19869         buffer can be reallocated.
19870
19871 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19872
19873         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19874         * driver.c: Removed the AOT/security restriction. Now initialize the
19875         security manager (in metadata) if --security is used.
19876         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19877         rather than the pointer to declarative security, when AOT is used.
19878
19879 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19880
19881         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19882         basic blocks, reduced intrinsic exception throwing code size.
19883
19884 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19885
19886         * driver.c (mini_usage): Reorder the usage screen.
19887
19888 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * mini.c (mono_resolve_patch_target): Fix warning.
19891
19892 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19895         previous patch.
19896
19897         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19898
19899         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19900         breaks the amd64 build.
19901
19902         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19903         register allocation. Fixes #71454.
19904
19905         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19906
19907         * arrays.cs: Add new regression test.   
19908
19909 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19910
19911         * ssapre.c: Turned usage of snprintf to GString.
19912         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19913         (I left it on by mistake in my previous commit).
19914
19915 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19916
19917         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19918         on cond branch optimization (fixes bug# 71515).
19919
19920 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19921
19922         * abcremoval.c: Fixed bug 71062.
19923         * abcremoval.h: Likewise.
19924
19925 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19926
19927         * mini.c: Added a new functionality to optimize_branches, the removal
19928         of useless basic blocks, and fixed some problem in the removal of
19929         critical edges; some utility functions added for both purposes.
19930         * ssapre.c: Added complex expression support, and fixed bug 70637.
19931         * ssapre.h: Likewise.
19932         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19933         enabled in SSAPRE.
19934         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19935         * driver.c: Re-enabled SSAPRE.
19936
19937 2005-01-19  Martin Baulig  <martin@ximian.com>
19938
19939         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19940         the result of mono_get_method_constrained().
19941
19942 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19943
19944         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19945         manager.
19946
19947 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19948
19949         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19950         be detected.  Fixes #59296.
19951
19952 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19953
19954         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19955         which can happen. Fixes #71361.
19956
19957 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19958
19959         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19960         manager.
19961
19962 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19965         appdomain-unload.exe to fail.
19966         
19967         * mini.c: Fix some memory leaks.
19968
19969 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19970
19971         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19972         Fixed bug and sped up some codepaths.
19973
19974 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * mini.c: Fix some memory leaks.
19977
19978         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19979         conversion.
19980
19981         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19982
19983         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19984         #71320.
19985
19986         * iltests.il: Add regression test for #71320.
19987
19988 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19989
19990         * mini.c (mono_codegen): Fix installation of profiler hooks.
19991
19992         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19993
19994 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19995
19996         * mini.h, mini.c, cfold.c: optimize access to enum
19997         readonly fields, too. Eval conditional branches if possible
19998         to perform unreachable code removal in more cases.
19999
20000 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20003
20004         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20005         code manager.
20006
20007         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20008         WinXP DEP. Fixes #71244.
20009
20010 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20013
20014 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20017
20018 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20019
20020         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20021         changes.
20022
20023         * mini.h: Bump AOT version.
20024
20025         * mini.h (MonoCompile): Change exvar to a hash table.
20026
20027         * mini.c: Allocate a separate exvar for each handler block.
20028
20029         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20030
20031         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20032         ex var with the pending exception and only throw if the two are equal.
20033         Fixes #68552.
20034         
20035         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20036
20037         * mini-x86.c: Fix warnings.
20038
20039         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20040         used by all the ports now.
20041
20042         * aot.c: Add write-symbols and save-temps options.
20043
20044 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20047
20048 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20049
20050         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20051         operations.
20052
20053         * tramp-s390.c: Check vtable slot belongs to the domain.
20054
20055         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20056         as per other platforms.
20057
20058         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20059
20060 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20061
20062         * driver.c: we don't run the Main() code in a subthread anymore.
20063
20064 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20065
20066         * mini.c: added experimental rtc support in the statistical
20067         profiler: if the user has the permission, more accurate statistics
20068         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20069         The MONO_RTC value must be restricted to what the linux rtc allows:
20070         power of two from 64 to 8192 Hz.
20071
20072 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20073
20074         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20075
20076 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20077
20078         * mini-ppc.c: better icache flush for smp.
20079
20080 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20083
20084         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20085         amd64 port, not yet used.
20086
20087 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20090         a struct type.
20091
20092 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20093
20094         * driver.c: Added --security option to activate the security manager.
20095         Right now this will allow code generation for declarative demands and
20096         is disabled when AOT is specified.
20097         * mini.c: Add code generation for declarative security demands.
20098         * mini.h: Add mono_use_security_manager as an extern gboolean.
20099
20100 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20103         emitting more dense assembly code.
20104
20105         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20106         exception throwing stuff.
20107
20108 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20111         dead code.
20112
20113         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20114         left in by mistake.
20115
20116         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20117         fixed.
20118
20119         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20120
20121         * tramp-*.c: Only patch vtable slots if the object is in the current
20122         domain. Fixes appdomain-unload.exe.
20123
20124         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20125         
20126         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20127         x86 branch.
20128
20129 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * mini.c (reverse_branch_op): New helper function.
20132
20133         * mini.c (optimize_branches): Run the new optimization only on 
20134         platforms which support it. Also reverse all kinds of branches.
20135
20136         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20137
20138         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20139         a throw statement.
20140
20141         * mini.c (optimize_branches): Reverse not-equals branches if the false
20142         bblock is a throw. This happens a lot of time with argument checking in
20143         corlib.
20144
20145         * mini.c (mono_codegen): Add support for placing basic blocks after
20146         the function epilogue.
20147
20148         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20149         function epilogue.
20150         
20151 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20152
20153         * mini.c (setup_stat_profiler): Only set this up if the platform
20154         supports ITIMER_PROF.
20155
20156 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20159         previous patch.
20160
20161         * inssel.brg: Fix a warning.
20162
20163 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20164
20165         * mini.c: added support for statistical profiler 
20166         (run with: --profile=default:stat).
20167
20168 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20169
20170         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20171
20172         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20173
20174         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20175         related to global registers from the amd64 port.
20176
20177 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20178
20179         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20180
20181         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20182         with global registers.
20183         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20184
20185         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20186
20187 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * debug-mini.c (encode_value): Fix off-by-one.
20190
20191         * aot.c (encode_value): Likewise.
20192
20193         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20194
20195 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20198         AOT.
20199
20200         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20201         
20202         * aot.c (emit_method_info): Increase size of temp buffer.
20203
20204         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20205         the AOT case.
20206
20207 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * aot.c (emit_method_info): Fix build.
20210         
20211         * aot.c: Further rework of the AOT file format to reduce the size of
20212         the method info data.
20213
20214         * mini.h: Bump AOT file format version.
20215
20216 2004-12-27  Martin Baulig  <martin@ximian.com>
20217
20218         * mini.c (mini_get_method): New static method; call
20219         mono_get_method_full() and mono_get_inflated_method().
20220         (mono_method_to_ir): Use mini_get_method() instead of
20221         mono_get_method_full(). 
20222
20223 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20224
20225         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20226
20227 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20230
20231         * inssel-amd64.brg: Add some optimization rules.
20232
20233 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20234
20235         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20236         standard not GC'd stuff is fine.
20237
20238 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20239
20240         * aot.c: Rework the AOT file format to get rid of most of the global
20241         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20242
20243         * mini.h: Bump AOT file format version.
20244         
20245 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * mini.h: Bump AOT file format version.
20248
20249         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20250         address is inside a GOT.
20251
20252         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20253
20254         * cpu-pentium.md: Increase the maximum size of some instructions which
20255         might involve a got access.
20256         
20257         * mini.c (get_method_from_ip): Another debug helper function.
20258
20259         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20260         when got var accesses are created during the decompose phase.
20261
20262         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20263
20264         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20265         argument mini_compile_method and to MonoCompile, and use this to
20266         determine whenever a given method is compiled for AOT. This allows the
20267         other methods compiled during AOT compilation to be free of AOT stuff,
20268         so the backends does not need to add special support for them by
20269         creating a fake GOT etc.
20270
20271         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20272         longer needed.
20273
20274 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20275
20276         * mini.c (mono_method_to_ir): It turns out that some of the
20277         x-appdomain wrappers are lax with types, so just ignore this for
20278         all wrappers.
20279
20280         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20281         at the vtable->klass. If it is non-shared code we can just use the
20282         vtable.
20283
20284 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20285
20286         * mini-ppc.c: access MonoDomain from tls, too.
20287
20288 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20289
20290         * declsec.c: Removed unused variable (and related warning ;-)
20291
20292 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20293
20294         * iltests.il: New test for LDELEMA on an array of ref types.
20295
20296         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20297         all ldelema's on reftypes.
20298         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20299         it was the wrong place to put it.
20300
20301         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20302         register to pop to make this cleaner, at the request of Paolo.
20303
20304 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20305
20306         * mini-ops.h (OP_GETHASHCODE): New op.
20307
20308         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20309
20310         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20311         operation.
20312
20313         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20314         by 25%.
20315         
20316         * mini-x86.c (mono_arch_output_basic_block): Rather than
20317
20318         add ebp, 4
20319
20320         Emit
20321
20322         pop edx
20323
20324         The first is 3 bytes while the second is 1. This saves 36 kb on
20325         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20326         see a small boost because of icache locality.
20327
20328         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20329
20330 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20331
20332         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20333         started code sharing with the generic code.
20334
20335 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20336
20337         * mini-ppc.c, cpu-g4.md: added code for direct access to
20338         tls data slots.
20339
20340 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20341
20342         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20343          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20344         to OP_TLS_GET.
20345
20346 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20347
20348         * declsec.c|h: Added functions to cache the declarative stack modifiers
20349         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20350         structure.
20351         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20352         created. Register internal calls for System.Security.SecurityFrame::
20353         _GetSecurityFrame and _GetSecurityStack.
20354         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20355         the definitions for the new stack walk/callback mechanism.
20356         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20357         first security frame for LinkDemands and InheritanceDemands) and
20358         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20359         from lupus.
20360         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20361         walk initialization (lupus).
20362
20363 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20364
20365         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20366         idiom.
20367         (handle_loaded_temps): Do not create a temporary variable for
20368         things that we know are temps. They will never be modified.
20369         (mono_spill_call): Set MONO_INST_IS_TEMP
20370         (mono_emulate_opcode): ditto
20371         (emit_tree): ditto
20372         (mono_method_to_ir.CEE_DUP): ditto
20373
20374 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20375
20376         * mini.c (type_to_eval_stack_type): Make this handle the void type
20377         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20378         (emit_tree): use ip_in_bb to special case some common idioms
20379         Update all callers to pass in the IP.
20380         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20381
20382         This gives us a nice 2% speedup in mcs bootstrap.
20383
20384         * mini-x86.c (peephole_pass): Peephole pass to make
20385         mov  [foo], eax
20386         push [foo]
20387
20388         into
20389
20390         mov [foo], eax
20391         push eax
20392
20393         * mini.c (ip_in_bb): new method.
20394         (mono_method_to_ir): use this method rather than doing the hash
20395         lookup ourselves.
20396
20397         * linear-scan.c (mono_linear_scan): When expiring actives, you
20398         don't need to keep around variables that expire on this
20399         instruction. This makes it so that:
20400              a = b + 1
20401         will turn into:
20402              store (ebx add (ebx, 1))
20403         which will become
20404              add ebx, 1
20405
20406 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20407
20408         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20409         combination to avoid doing two copies. Fix up problems with previous
20410         patch.
20411
20412         * mini.c: Fix 64 bit warnings.
20413
20414         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20415
20416 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20417
20418         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20419         changes from the x86 code.
20420
20421         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20422
20423 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20426         throwing code to reduce its size, unify the AOT and non-aot code and 
20427         get rid of relocations in the AOT case.
20428
20429         * mini-x86.h mini.c exceptions-x86.c 
20430         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20431         raise corlib exceptions which doesn't require relocations in the 
20432         caller.
20433
20434         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20435
20436 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20437
20438         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20439         needed.
20440
20441         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20442         in the AOT case.
20443
20444 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20445
20446         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20447         with add function when used from Inc/dec atomic 
20448         functions. Re-enabled optimization on x86.
20449         * mini-ops.h: renamed atomic_add functions to
20450         allow _add to match the Interlocked::Add and
20451         _add_next to match Interlocked::Inc/Dec.
20452
20453 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20454
20455         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20456         linking of BBs to the end BB, and enabled SSAPRE also with
20457         consprop and copyprop (which was prevented by that bug).
20458
20459 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20460
20461         * mini-x86.c: disabling the Interlocked optimizing code. 
20462
20463 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20466         file version check.
20467         
20468 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20469
20470         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20471         interlocked optimization due lack of support on x86, rewrote 
20472         exchange to take into account that base may be in eax.
20473         
20474         xsp works again; activated Interlocked optimizing code.
20475         
20476 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20479
20480 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20481
20482         * mini-ops.h: Add new opcodes.
20483
20484         * mini.h: Add new patch types. Add got_var to MonoCompile.
20485
20486         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20487         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20488         make it work with all kinds of patchable code.
20489
20490         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20491         address of the GOT, and referencing entries in the GOT.
20492
20493         * mini.c: Add code to load the GOT address if needed by an opcode.
20494
20495         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20496         independent AOT code on the x86 using an elf-style Global Offset Table.
20497
20498 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20499
20500         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20501
20502 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20503
20504         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20505         when running xsp.
20506
20507 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20508
20509         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20510         of Interlocked:Increment/Decrement/Add as inline ops.
20511         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20512
20513 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20514
20515         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20516         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20517
20518 2004-12-12  Duncan Mak  <duncan@ximian.com>
20519
20520         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20521         again. `patch_info->table_size' is no longer valid after Zoltan's
20522         commit #37636.
20523
20524 2004-12-12  Martin Baulig  <martin@ximian.com>
20525
20526         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20527         if we are the "real" method, ie. not an inlined method inside it.
20528
20529 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20530
20531         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20532         before we look in the special fields table. This fixes
20533         ../tests/thread-static-init.cs.
20534
20535 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20536
20537         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20538         for Array get_Rank and get_Length. Fixes bug #70465.
20539
20540 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20543         separate structure to reduce the size of MonoJumpInfo.
20544
20545 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20546
20547         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20548
20549 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20550
20551         * mini.c (mini_get_inst_for_method): Changed to allow ports
20552         to return a MonoInst instead of opcode 
20553         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20554         
20555         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20556         Allow ports to return a created MonoInst instead of op-code, will enable
20557         new optimizations.
20558         (renamed mini_get_opcode_for_method to better reflected the functionality)
20559
20560 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20563
20564 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20565
20566         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20567         Fixes #69985.
20568
20569 2004-12-08  Martin Baulig  <martin@ximian.com>
20570
20571         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20572         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20573
20574 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20575
20576         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20577         correctly.
20578
20579         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20580         arithmetic.
20581
20582 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20583
20584         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20585
20586 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20589         bug introduced by the previous patch.
20590
20591 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20592
20593         * mini-ppc.c, objectc.cs: handle large structs passed by value
20594         (fixes bug #69972).
20595
20596 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20597
20598         * mini-ppc.c: OP_ARGLIST implementation from
20599         Geoff Norton  <gnorton@customerdna.com>.
20600
20601 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20602
20603         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20604         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20605
20606 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20607
20608         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20609
20610 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20611
20612         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20613         support.
20614
20615 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20616
20617         * mini-sparc.c: Zero out localled-ed memory.
20618
20619         * iltests.il: Add tests for zeroing out localloc-ed memory.
20620
20621 2004-12-04  Martin Baulig  <martin@ximian.com>
20622
20623         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20624         mono_method_get_signature_full().       
20625
20626 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20627
20628         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20629         and some utility functions (always for SSAPRE), integrated SSAPRE.
20630         * mini.h: Likewise.
20631         * driver.c: Added ssapre option.
20632         * ssa.c: Small fix on OP_ARG handling.
20633         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20634         * Makefile.am: Likewise.
20635
20636 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20637
20638         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20639         now in the xp code.
20640
20641         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20642         icall.
20643
20644 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20645
20646         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20647         
20648         * cpu-s390.md : Increase instruction length of oparglist.
20649
20650         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20651
20652 2004-11-30  Martin Baulig  <martin@ximian.com>
20653
20654         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20655         virtual generic methods.  We call a special helper_compile_generic_method()
20656         icall to retrieve the method from the vtable, inflate and compile
20657         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20658
20659         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20660
20661 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20664
20665 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20668         Fixes #69929.
20669
20670 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20671
20672         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20673         platforms with PIC aot.
20674
20675 2004-11-28  Martin Baulig  <martin@ximian.com>
20676
20677         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20678         Fixes gen-112.cs.
20679
20680 2004-11-28  Martin Baulig  <martin@ximian.com>
20681
20682         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20683         the result of mono_type_get_underlying_type() to check whether
20684         we're byref.
20685
20686 2004-11-26  Martin Baulig  <martin@ximian.com>
20687
20688         * mini.c
20689         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20690         in the g_assert().
20691
20692 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20695         the same way as the other arguments so they won't get clobbered.
20696
20697         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20698         calls through R11 since it is clobbered by the trampoline code.
20699
20700 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20701
20702         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20703         pick up in-tree mscorlib.dll.
20704
20705 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20708
20709         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20710         runtime data/code are now stored in a table similar to the GOT in ELF. 
20711         This allows the code itself to be position independent.
20712
20713         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20714         loading changes.
20715
20716         * aot.c: Attach ELF type (object/function) directives to all global
20717         symbols.
20718
20719         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20720
20721         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20722
20723         * mini-amd64.h: Turn on PIC AOT code.
20724
20725         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20726         returning the offset within an OP_AOTCONST instruction where the GOT
20727         offset needs to be added.
20728
20729         * mini.h: Bump AOT file format version.
20730
20731 2004-11-25  Martin Baulig  <martin@ximian.com>
20732
20733         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20734         uninflated generic methods.
20735
20736 2004-11-25  Martin Baulig  <martin@ximian.com>
20737
20738         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20739
20740 2004-11-24  Martin Baulig  <martin@ximian.com>
20741
20742         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20743         original klass (this only applies for generic instances).
20744
20745 2004-11-24  Martin Baulig  <martin@ximian.com>
20746
20747         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20748         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20749         that array).
20750
20751 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20752
20753         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20754         localloc. Fixes #69678.
20755
20756         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20757         
20758 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20759
20760         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20761         used SSE registers on pinvoke calls. Fixes #69774.
20762
20763 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20764
20765         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20766         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20767
20768 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20769
20770         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20771         Refer directly to the mcs/ tree.
20772
20773 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20774
20775         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20776         Check if a trampoline for a synchronized method is required. 
20777
20778 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20779
20780         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20781         with localloc if needed. Throe arithmetric exception in
20782         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20783         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20784
20785 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20786
20787         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20788         types before switching on type.  Fixes #69622.
20789
20790 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20791
20792         * Makefile.am (check-local): New.  Integrate into 'make check'.
20793         (MCS,RUNTIME): Define using in-tree mono and mcs.
20794         (ILASM): New.
20795         (%.exe): Use $(ILASM).
20796
20797 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20798
20799         * mini-ppc.c: adjust initial prolog size (bug #69691).
20800
20801 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20802
20803         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20804         #69664.
20805
20806 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20807
20808         * Makefile.am (clean-local): Rename from 'clean'.
20809
20810 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20811
20812         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20813         to mono_arch_is_int_overflow. 
20814         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20815         SIGFPE events.
20816
20817 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20818
20819         * declsec.c|h: New files to support declarative security attributes.
20820         Added function to check if a method has (applicable) security.
20821         * mini.c|h: Add check for declarative security attributes in
20822         mono_method_check_inlining.
20823         * Makefile.am: Added declsec.c and declsec.h to the build.
20824
20825 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20826
20827         * mini.c, mini.h: update to keep dynamic code info per-domain.
20828
20829 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20830
20831         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20832         (mini_init): Get rid of it from here too.
20833
20834 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20835
20836         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20837         implemented OP_RETHROW (patch by Geoff Norton
20838         <gnorton@customerdna.com>).
20839
20840 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20841
20842         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20843         between appdomains.  Fixes appdomain-unload on PPC.
20844
20845 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20846
20847         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20848         mini-exceptions.c: handle the new wrapper types.
20849         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20850         token value as a MonoClass* when compiling a wrapper.
20851         mono_jit_create_remoting_trampoline now takes an additional
20852         MonoRemotingTarget parameter.
20853         
20854 2004-11-10  Martin Baulig  <martin@localhost>
20855
20856         * mini.c (mono_method_to_ir): Use `generic_container->context'
20857         rather than creating a new one.
20858
20859 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20860
20861         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20862
20863         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20864
20865 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20866
20867         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20868         the experimental aot cache stuff.
20869
20870 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20871
20872         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20873         mini-exceptions.c: update to exception clause structure changes.
20874
20875 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * exceptions-x86.c (throw_exception): Fix warnings.
20878
20879         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20880         for OP_RETHROW.
20881
20882 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20883
20884         * exceptions-sparc.c (get_throw_exception): Really fix this.
20885
20886 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20887
20888         * tramp-*.c: we no longer support icalls without wrappers, so
20889         a bit of code can be removed here
20890
20891 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20894         patch.
20895
20896         * cpu-sparc.md: Add op_rethrow.
20897
20898         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20899
20900         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20901
20902         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20903         * mini-ops.h: Add OP_RETHROW.
20904
20905         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20906
20907         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20908
20909 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20910         
20911         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20912         Makes the output much easier to read
20913
20914 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20915
20916         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20917         prevents another huge leak when compiling with ssa. Secondly, the
20918         performance of doing this rather than freeing the lists is much
20919         better. GList does a lock every time you allocate a list link,
20920         so that it can use a memory pool. So, it is better to just use
20921         a memory pool of our own.
20922         
20923         * ssa.c, linear-scan.c: replace g_list_remove_link with
20924         g_list_delete.  The remove one does not free the GList, so we were
20925         leaking memory. On -O=all --compile-all with corlib, this cut down
20926         3 MB of allocations.
20927
20928 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20929
20930         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20931
20932         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20933
20934         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20935         into a new function mono_create_jit_trampoline ().
20936
20937 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20938
20939         * trace.c (get_spec): Allow tracing of classes without a namespace.
20940
20941 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20942
20943         * mini.c: Fix pointer overwrite in mini_method_compile.
20944
20945 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20946
20947         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20948         The darwin ABI needs some special handling for 1 and 2 byte structs
20949         Lets use lbz/lhz instead of lwz everywhere.
20950         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20951         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20952         Use stb/sth for the former, and put the latter always on stack instead of in
20953         argument registers.
20954
20955 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * trace.c (is_filenamechar): Add '_'.
20958
20959 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20960
20961         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20962
20963         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20964
20965 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20966
20967         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20968         depends on libmonogc. Fixes #68805.
20969
20970 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20971
20972         * mini.c (mono_jit_free_method): Provide extra information for
20973         this error.  Currently this leaks, but will be turned into a
20974         developer option in the future.
20975
20976 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20977
20978         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20979
20980 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20983         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20984         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20985
20986 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20989         trampolines for AOT code.
20990
20991 2004-10-22    <vargaz@freemail.hu>
20992
20993         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20994         constructed types. Fixes #68136.
20995
20996 2004-10-21  Martin Baulig  <martin@ximian.com>
20997
20998         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20999         if it returns true, unwind the stack to the call instruction.
21000
21001 2004-10-21    <vargaz@freemail.hu>
21002
21003         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21004
21005         * mini.h: Bump AOT version number.
21006
21007         * objects.cs: Add another test for unbox trampolines.
21008
21009         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21010         valuetype methods.
21011
21012 2004-10-20    <vargaz@freemail.hu>
21013
21014         * driver.c: Add SHARED to the set of optimizations tested.
21015
21016         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21017
21018         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21019         used by CEE_NEWARR.
21020
21021         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21022
21023 2004-10-20  Martin Baulig  <martin@ximian.com>
21024
21025         * mini-exceptions.c (mono_handle_exception): Call
21026         mono_debugger_handle_exception() to tell the debugger about
21027         catch/finally clauses.
21028
21029 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21030
21031         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21032
21033         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21034         #68447.
21035
21036 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21037
21038         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21039         methods as their native size, fixed bug #57543, #57545.
21040         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21041         This saves a temporary register and mullw call down into 1 (minor perf
21042         increase for cases like sum = sum * 5;  This use to translate into:
21043             li r11,5
21044             mullw r28,r28,r11
21045         It now translates to
21046             mulli r28,r28,5
21047
21048 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21049
21050         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21051         #68388.
21052
21053 2004-10-11  Martin Baulig  <martin@ximian.com>
21054
21055         * mini.c (mono_method_to_ir): If we're a generic method, get the
21056         MonoGenericContainer from our MonoMethodNormal and create a
21057         MonoGenericContext from it.
21058
21059 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21060
21061         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21062
21063         * basic-long.cs: Add test for checked i8->i2 cast.
21064
21065 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21066
21067         * inssel-ppc.brg: added a couple of speedup rules.
21068
21069 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21070
21071         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21072         to speed up rebuilds.
21073
21074 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21075
21076         * mini-s390.c: Minor fix to OP_OR_IMM.
21077
21078 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21079
21080         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21081         better. Fixes appdomain-unload.exe on sparc.
21082
21083 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21084
21085         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21086         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21087         see bug 67324.
21088
21089 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21090
21091         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21092
21093 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21094
21095         * mini.c: Always generate a field read/write wrapper for members
21096         of the class MarshalByRefObject since the actual instance could
21097         be a CBO.
21098
21099 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21100
21101         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21102
21103 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21104
21105         * driver.c mini.h trace.c: Move the setting of the main assembly into
21106         a separate function called mono_trace_set_assembly () and call it after
21107         actually loading the main assembly. Fixes #66872.
21108
21109 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21110
21111         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21112         using the code manager.
21113
21114 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21117
21118 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21119
21120         * cpu-amd64.md: Fix bug in previous patch.
21121         
21122         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21123         #66650.
21124
21125 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21126
21127         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21128         mini-exceptions.c: updates for changed stack walk interface.
21129
21130 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21131
21132         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21133
21134 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21135
21136         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21137
21138 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21139
21140         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21141         since assemblies can't be unloaded.
21142         
21143 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21144
21145         * cpu-amd64.md: Fix more instruction lengths.
21146
21147         * cpu-amd64.md: Fix lengths of some instructions.
21148
21149 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21150
21151         * inssel.brg: Make the array ldelema check aot friendly.
21152
21153 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21154
21155         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21156
21157         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21158
21159 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21160
21161         * mini-x86.c: Fix build.
21162
21163         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21164         mono_type_get_underlying_type () helper function to simplify code.
21165         
21166 2004-09-09  Martin Baulig  <martin@ximian.com>
21167
21168         * mini-amd64.c: Don't access `type->data.klass' directly, call
21169         mono_class_from_mono_type() instead since the type may be a
21170         generic instance.
21171
21172 2004-09-09  Martin Baulig  <martin@ximian.com>
21173
21174         * mini-amd64.c (get_call_info): Fix support for generic instances.
21175         (add_valuetype): Use mono_class_from_mono_type() to get the class
21176         since we can be a generic instance.
21177
21178 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21179
21180         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21181
21182 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21183
21184         * liveness.c: reset spill costs on each scan: bug 62107
21185
21186 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21187
21188         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21189         unnecessary line that doesn't compile
21190
21191 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21192
21193         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21194         trampolines, make them call an error function so people can fix their
21195         code.
21196
21197 2004-09-06  Martin Baulig  <martin@ximian.com>
21198
21199         * mini.c (mono_method_to_ir): When initializing locals, handle a
21200         generic instances like a valuetype if it's a valuetype and like a
21201         class if it's a class.
21202
21203 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21204
21205         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21206         stack. Fixes #64674.
21207
21208         * exceptions.cs: Add test for unwinding of call arguments.
21209
21210 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21211
21212         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21213         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21214         set the carry/borrow flag). The sparc and s390 implementations
21215         can now use optimized versions (and simplify the code). ppc bugfixes.
21216
21217 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21218
21219         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21220
21221 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * inssel-amd64.brg: Remove leftover 32 bit rule.
21224
21225         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21226
21227 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21230         mono_arch_find_jit_info functions into a new function. Fix a memory
21231         leak.
21232
21233         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21234         refactored code.
21235         
21236 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21237
21238         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21239         as well.
21240         
21241         * exceptions.cs: Add array size tests.
21242
21243         * mini.c: Allocate a separate icall wrapper for each arity of 
21244         mono_array_new_va. Fixes #59509.
21245
21246         * exceptions.cs: Add testcase for 64578.
21247
21248         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21249
21250         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21251         
21252 2004-09-02  Martin Baulig  <martin@ximian.com>
21253
21254         * mini.c (mono_method_to_ir): When initializing the locals, call
21255         handle_initobj() on the generic instance itself, not its
21256         underlying type.
21257
21258 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21261         MonoJitInfo for dynamic methods.
21262
21263         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21264
21265         * mini.c: Add support for freeing JIT data for dynamic methods.
21266         
21267 2004-09-01  Martin Baulig  <martin@ximian.com>
21268
21269         * mini-x86.c (is_regsize_var): Added support for generic
21270         instances.
21271         (mono_arch_emit_prolog): Make this compile again, use
21272         `x86_push_imm_template (code)'.
21273
21274 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21275
21276         * mini-x86.c: make all push_imm instructions that get
21277         patched always emit the long form
21278
21279 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21280
21281         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21282         in a per-domain hash.
21283
21284         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21285         types.
21286
21287 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21288
21289         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21290         work.
21291         
21292         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21293         work.
21294
21295         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21296         Beginnings of SSE2 support.
21297
21298         * exceptions.cs: Add more tests for checked int<->uint casts.
21299
21300 2004-08-28  Martin Baulig  <martin@ximian.com>
21301
21302         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21303         generic instances.
21304
21305         * mini.c
21306         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21307         Handle generic instances recursively.
21308
21309 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21310
21311         * iltests.il: test for conv.u8 on a constant
21312
21313 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21314
21315         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21316         LCONV_x4 (shrun_32 (membase)).
21317
21318 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21319
21320         * inssel-x86.brg: c&p rules for push/setret of long
21321
21322 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21323
21324         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21325         compare (regvar, base)
21326
21327         * inssel-x86.brg: more burg love
21328
21329         * inssel.brg: more cleanup
21330
21331         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21332
21333 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21334
21335         * basic-long.cs, basic-calls.cs: new tests for optimization.
21336
21337 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21340         patch.
21341
21342 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21343
21344         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21345         
21346 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21347
21348         * inssel.brg (mini_emit_memcpy): use 
21349         NO_UNALIGNED_ACCESS to disable memcpy optimization
21350
21351 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21352
21353         * mini-amd64.c: Handle generic types in various places.
21354
21355         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21356
21357 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21358
21359         * mini.c (handle_box): Fix warning.
21360
21361         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21362
21363         * mini-amd64.h: Enable the emit_state optimization.
21364
21365         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21366
21367         * mini-amd64.c: Add some new 64 bit peephole opts.
21368
21369         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21370
21371         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21372
21373         * mini-amd64.c: Register allocator fixes.
21374
21375         * mini.c: Add an optimization to emit_state to avoid allocation of new
21376         registers on some platforms.
21377
21378 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21379
21380         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21381
21382         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21383         allocation. Fixes #63085.
21384
21385         * basic-long.cs: Add new regression test.
21386
21387         * mini-amd64.c: Register allocator improvements.
21388
21389 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21390
21391         * mini-amd64.c (read_tls_offset_from_method): Add another code
21392         sequence.
21393
21394         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21395         instruction sequence for nullifying class init trampolines.
21396
21397         * objects.cs: Add new regalloc test.
21398
21399         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21400
21401 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21402
21403         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21404         
21405         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21406         arguments.
21407
21408         * driver.c: Fix profiling after TLS changes.
21409         
21410         * driver.c (mono_main): Set mono_stats.enabled if needed.
21411
21412         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21413         CEE_BOX.
21414
21415 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21416
21417         * mini-x86.c: use a 1 op rather than a 2 op tls access
21418         instruction -> faster.
21419
21420 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21421
21422         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21423         x86 backend.
21424
21425 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21426
21427         * exceptions-sparc.c (throw_exception): fix typo
21428
21429 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21430
21431         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21432         set tree->dreg correctly with tls. Allow any
21433         register to be used.
21434
21435         * mini-x86.c (read_tls_offset_from_method): add new code
21436         generation pattern seen with GCC.
21437
21438
21439 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21440
21441         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21442         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21443         exceptions-sparc.c: fix some performance issues in exception
21444         handling and setting of the stack trace for exceptions that were
21445         already thrown.
21446
21447 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21448
21449         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21450         x86 backend.
21451         
21452         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21453         registers.
21454
21455 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21456
21457         This patch inlines tls access, when possible.
21458         
21459         * mini.h: new arch functions for TLS intrinsics.
21460         All platforms updated with a stub.
21461
21462         * mini.c: use the new intrinsics
21463
21464         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21465         arch specific intrinsic for tls variables
21466
21467 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21468
21469         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21470         under windows.
21471
21472 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21473
21474         * mini.c: thread local allocation
21475
21476 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21477
21478         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21479
21480         * Makefile.am: Link against the static version of libmonogc.
21481         
21482         * Makefile.am: Link the static versions of the convenience libraries
21483         into the mono executable.
21484
21485         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21486
21487 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21488
21489         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21490         on integer overflow.
21491
21492         * mini-amd64.c: Reorganize function call code.
21493
21494         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21495
21496 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21497
21498         * inssel-x86.brg: use xor eax,eax.
21499         
21500         * basic.cs: new tests
21501
21502 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21503
21504         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21505         in exception throwing code.
21506         
21507 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21508
21509         * inssel-x86.brg: use xor esi,esi.
21510
21511 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21514         can trace methods compiled during mini_init () too.
21515
21516         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21517         CEE_CONV_U4.
21518
21519 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21520
21521         * Makefile.am: static link on x86 (r=zoltan)
21522
21523 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21524
21525         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21526         code since it causes some programs to fail.
21527
21528 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21529
21530         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21531
21532 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21533
21534         * mini.c: ovfops_op_map - add STACK_OBJ case for
21535         CONV_I 
21536         * basic.cs: add test_0_pin_string as test
21537         case for above.
21538
21539 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21540
21541         * Makefile.am: build C# if srcdir != builddir
21542
21543 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21544
21545         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21546         fall-through blocks.
21547
21548 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21549
21550         * driver.c: enable loop by default again and include abcrem in -O=all.
21551
21552 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21553
21554         * iltests.il: Add some localloc tests.
21555
21556         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21557
21558         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21559         Fixes #62574.
21560
21561         * inssel-amd64.brg: Add some optimizations.
21562
21563         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21564         for gcc-3.4.
21565
21566         * Makefile.am: Statically link mono against libmono on AMD64.
21567         
21568         * mini-amd64.c inssel-amd64.brg: Optimizations.
21569
21570 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21571
21572         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21573
21574         * tramp-amd64.c: Patch calling code in trampolines.
21575
21576 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21577
21578         * mini-amd64.c: pinvoke struct passing fixes.
21579
21580 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21581
21582         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21583         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21584
21585 2004-08-05  Duncan Mak  <duncan@ximian.com>
21586
21587         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21588         CEE_LDELEM_ANY.
21589
21590 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * mini-amd64.c (emit_move_return_value): Move return value for normal
21593         calls too.
21594
21595 2004-08-05  Martin Baulig  <martin@ximian.com>
21596
21597         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21598         `type->type'; just modify `type' itself when dealing with enums
21599         and generic instances.
21600         (check_call_signature): Make `simple_type' a `MonoType *'.
21601
21602 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * mini.c: Use OP_PADD to add offsets to addresses.
21605
21606         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21607
21608 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21609
21610         * mini-sparc.c (mono_arch_emit_epilog): fix check
21611         for folding last op into restore instruction
21612
21613 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21614
21615         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21616         helper methods using the code manager.
21617         
21618         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21619
21620         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21621
21622 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21623         
21624         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21625           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21626
21627         * mini-s390.c: fix tail processing
21628
21629 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21630
21631         * mini-ppc.c: mul.ovf.un exception name fix.
21632
21633 2004-08-03  Martin Baulig  <martin@ximian.com>
21634
21635         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21636         instances; before jumping to `handle_enum', also modify `ptype'.
21637
21638 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21639
21640         * cpu-sparc.md: fcall maximal length too small.
21641
21642 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21643
21644         * mini-amd64.c mini.h: Add initial support for passing/returning 
21645         structures to/from pinvoked methods.
21646
21647 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21648
21649         * mini-ppc.c: reg allocator fix.
21650
21651 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21652
21653         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21654
21655         * inssel.brg: Optimize memset on 64 bit machines.
21656
21657         * mini-amd64.c: Fix some vararg cases.
21658
21659 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21660
21661         * mini-s390.c: Corrected macro in emit_float_to_int
21662
21663         * s390-abi.cs: Tests to exercise the s390 ABI
21664
21665 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21666
21667         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21668         caller saved regs.
21669
21670         * basic.cs: Add a test for add.ovf.un.
21671
21672 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21673
21674         * mini-sparc.c: add case for OP_IDIV_UN
21675
21676 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21677
21678         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21679         
21680         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21681
21682 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21683
21684         * basic.cs: regression tests.
21685
21686         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21687         regressions.
21688
21689 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21690
21691         * basic.cs: Add a new test.
21692
21693         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21694         and AOT. Various fixes and optimizations.
21695
21696         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21697
21698 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21699
21700         * mini-ppc.c: make sure temp regs are not used for global reg
21701         allocation.
21702
21703 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21704
21705         * cpu-sparc.md: conv_i8 fix for 64bits
21706
21707         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21708
21709 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21710         
21711         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21712         add opcode for cmp BYTE PTR [eax], imm.
21713
21714         * inssel.brg: Make memcpy and memset takes bases.
21715
21716 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21717
21718         * *-amd64.*: More AMD64 work.
21719         
21720 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21721
21722         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21723         add a compare-not-equal opcode.
21724         
21725 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21726
21727         * mini.c: Use mono_init_from_assembly instead of mono_init.
21728         
21729 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21730
21731         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21732
21733         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21734
21735         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21736
21737         * inssel.brg: 64 bit fixes.
21738
21739         * mini.h (MonoCallInst): Add some AMD64 specific data.
21740
21741         * mini.h: Add some OP_P opcodes.
21742
21743 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21744
21745         * basic.cs: tests for 61797 and 61740
21746
21747 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21748
21749         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21750         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21751
21752 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21753
21754         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21755
21756         * *-amd64*.*: Ongoing AMD64 work.
21757
21758 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21759
21760         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21761
21762         * *-amd64*: Ongoing AMD64 work.
21763
21764         * mini-arch.h: Add AMD64 support.
21765
21766         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21767
21768         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21769
21770         * mini-ops.h: Add new opcodes.
21771
21772         * Makefile.am: Add AMD64 support.
21773
21774         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21775         rules into the inssel-long*.brg files.
21776
21777         * *-amd64.*: Add beginnings of AMD64 backend.
21778
21779 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21780
21781         * mini.c (print_dfn): commenting out the code that prints
21782         the cil. With -O=deadce, this makes -v -v crash.
21783         
21784         * cpu-pentium.md: make checkthis have a length of 2
21785
21786 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21787
21788         * mini-sparc.h: fix implementations of __builtin
21789         functions for Sun compiler for V9.
21790
21791 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21792
21793         * mini.c: use the new stelem.ref wrapper
21794         * exceptions.cs, arrays.cs: new stelem.ref tests
21795
21796 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21797
21798         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21799         new XSP should work with these changes).
21800
21801 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21802         
21803         * inssel-{long32,x86,}.brg: trivial optimizations.
21804         
21805 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21806
21807         * mini.c: load value when emitting box operation in
21808         constrained calls.
21809
21810 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21811
21812         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21813         is one byte shorter than cmp DWORD PTR [eax], 0.
21814
21815 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21816
21817         * inssel-ppc.brg: arguments on the stack are always
21818         relative to the stack pointer (spotted by Neale Ferguson).
21819
21820 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21821
21822         * exceptions-x86.c: delay appending the method name to the trace until
21823         after mono_jit_info_table_find is called, as this gets the real
21824         MonoMethod.
21825
21826 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21827
21828         * aot.c: register roots
21829
21830 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21831
21832         * aot.c : I could just use PLATFORM_WIN32 flag.
21833
21834 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21835
21836         * aot.c : Reverting the previous fix. This time it broke linux build.
21837
21838 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21839
21840         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21841
21842 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * mini.c (handle_stack_args): Remove some more debugging code.
21845         
21846         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21847
21848         * driver.c mini.h aot.c: Allow additional options to be specified with
21849         --aot and pass them to mono_compile_assembly.
21850
21851         * aot.c: Add experimental code to AOT compile all loaded assemblies
21852         on demand and save the code into a cache in the filesystem.
21853
21854         * aot.c: Add support for more wrapper methods.
21855         
21856         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21857         58863.
21858
21859         * cpu-*.md: Remove removed opcodes.
21860
21861         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21862         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21863         related icalls to marshal.c.
21864
21865 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21866
21867         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21868
21869         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21870
21871         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21872
21873 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21874         * liveness.c: If liveness is recomputated we need to reset the information
21875         for each variable. This way, if the liveness range has been narrowed
21876         by optimizations that happened after the last computation, we can return
21877         a smaller range.
21878         
21879         For example, if you have
21880         
21881         {
21882                 int i = 0;
21883                 
21884                 // Tons of code that does not affect i
21885                 
21886                 i = foo ();
21887                 ...
21888         }
21889         
21890         i = 0 is dead code and will be removed by SSA. However, when
21891         linear scan gets to the code, i will still appear to be live
21892         throughout the entire block. This prevents good register allocation.
21893
21894 2004-07-06  Martin Baulig  <martin@ximian.com>
21895
21896         * debug-mini.c (mono_debug_init_method): Allow
21897         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21898         (mono_debug_add_icall_wrapper): New method.
21899
21900         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21901
21902 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21903
21904         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21905         optimization.
21906
21907 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21908
21909         * aot.c (mono_aot_load_method): Fix loading of debug info.
21910
21911 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21912
21913         * aot.c: Add logging support.
21914
21915 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21916
21917         * mini.h: Add prototype for mono_print_method_from_ip.
21918
21919         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21920
21921         * inssel.brg: 64 bit fixes.
21922
21923         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21924         inssel-long32.brg.
21925
21926         * Makefile.am: Add SPARC64 support.
21927
21928 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21929
21930         * aot.c: Fix alignment problems on 32 bit platforms.
21931
21932 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21933
21934         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21935         SPARC64.
21936
21937         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21938         problems.
21939
21940         * mini.h: Bump AOT file version. Some 64 bit fixes.
21941
21942 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21943
21944         * inssel-sparc.brg: Add new rule to avoid register moves.
21945
21946         * inssel.brg: Add ldind_to_load_membase helper function.
21947
21948 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21949
21950         * mini.c: OffsetToStringData intrinsic.
21951         
21952 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21955
21956         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21957         regression tests.
21958
21959         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21960 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21961
21962         * mini.c: reinstated mono_compile_get_interface_var()
21963         on x86, too, since the change breaks the Gtk# build there as well.
21964
21965 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21966
21967         * driver.c: remove loop from the default optimizations: it seems to
21968         interact badly with some of the other options (see bug #60613).
21969
21970 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21971
21972         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21973         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21974
21975 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21976
21977         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21978         vararg-using methods.
21979
21980 2004-06-21  Martin Baulig  <martin@ximian.com>
21981
21982         * mini/mini-exceptions.c
21983         (mono_handle_exception): Added `gpointer original_ip' argument.
21984         After calling mono_unhandled_exception(), call
21985         mono_debugger_unhandled_exception() and if that returns true,
21986         restore the context and return.
21987
21988 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21989
21990         * mini-ppc.c: prefer the use of relative branches so
21991         they won't need to be patched in aot code (patch from Patrick Beard).
21992
21993 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21994
21995         * aot.c: patch from Patrick Beard to make the output assembly
21996         more correct for the MacOSX assembler. Small tweak to
21997         generate sane images on Linux/PPC, too.
21998
21999 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22000
22001         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22002         case until bug #59509 is fixed (shows up in #60332).
22003
22004 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22005
22006         * mini.c: make sure the needed wrappers are compiled, too, with
22007         precomp.
22008
22009 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22010
22011         * driver.c: remove NPTL reference in --version output.
22012
22013 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22014
22015         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22016         generate valid assembly for the Mach-O assembler.
22017
22018 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22019
22020         * driver.c: don't include abcrem in the all optimization specifier
22021         since it slows down jit compilation too much for now.
22022
22023 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22024
22025         * mini.c: use BIGMUL only if both operands have the same signage.
22026         * iltests.il: Test for bug 60056. (errors related to signage in
22027         BIGMUL).
22028
22029         r=lupus.
22030
22031 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22032
22033         * mini.c, aot.c: memory leak fixes.
22034
22035 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22036
22037         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22038
22039 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22040
22041         * Makefile.am: remove the -static hack completely, it links in
22042         statically glib as well.
22043
22044 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22045
22046         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22047         * exceptions.cs: make it compile with new mcs/csc.
22048
22049 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22050         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22051         and added relevant test case.
22052
22053 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22054
22055         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22056         regressions in gtk-sharp.
22057
22058 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * exceptions.cs: New regression tests.
22061
22062         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22063
22064 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22065
22066         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22067
22068 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22069
22070         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22071
22072         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22073
22074 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22075
22076         * mini.c (mono_jit_runtime_invoke): Init class in this
22077         method instead of trusting mono_jit_compile_method to
22078         do the work (because wrappers can be in object class)
22079
22080 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22081
22082         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22083
22084         * basic-long.cs: New regression test.
22085
22086 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22087
22088         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22089         and div/rem checks.
22090
22091 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22092
22093         * Makefile.am: fix miguel's change to build mono statically against
22094         libmono (track build dependencies).
22095
22096 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22097
22098         * cfold.c: Some glib versions do not have G_MININT32.
22099
22100 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22101
22102         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22103         with precision of tan, atan, sin and cos, and implemented related
22104         regressions tests (fixes bug 54467, but one new problem appeared and
22105         is not fixed yet).
22106
22107 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22108
22109         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22110
22111         * exceptions.cs: Add test for constant folding && division by zero.
22112
22113         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22114         since driver.c is in libmono too, so the optimization was useless.
22115
22116         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22117         variable to driver.c so the compiler can emit more efficient code to
22118         access them.
22119
22120 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22121
22122         * Makefile.am: don't distribute generated inssel.[ch] files.
22123
22124 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22125
22126         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22127         into the default appdomain. Fixes #58707.
22128
22129         * jit-icalls.c: Remove the broken approximation for truncl, doing
22130         no conversion is better.
22131
22132         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22133         Fixes #58863.
22134
22135 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22136
22137         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22138         of the mcrxr instruction which is not available on some processors
22139         even if it's documented to be. Implement add and sub overflow correctly
22140         (still not complete for long unsigned). Speed up icalls a bit.
22141
22142 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22143
22144         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22145         we run .cctor in the current domain instead of target_domain.
22146         
22147         Fixes bug #58558, .cctor not being called in -O=shared.
22148
22149 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22150
22151         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22152
22153 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22154
22155         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22156         which can be done with an imm8, do it that way.
22157         (mono_arch_output_basic_block): ditto for a jmp
22158         (mono_arch_emit_prolog): Computate maximum offset of a label.
22159
22160 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22161
22162         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22163         now tries to allocate prefered physical reg's for virtual
22164         regs. This reduces the number of emited spills/loads with
22165         20-30% on our core assemblies.
22166
22167 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22168
22169         * jit-icalls.c: truncl() is not needed and trunc() is
22170         the correct thing to do anyway (bug #58287).
22171
22172 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22173
22174         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22175         if available.
22176
22177 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22178
22179         * driver.c: enable loop optimizations by default.
22180
22181 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22182
22183         * mini-x86.c: fix calc of max loop size when aligning loops start.
22184
22185 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22186
22187         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22188         the stack.
22189
22190 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22191
22192         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22193         should set carry.
22194
22195         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22196
22197         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22198         
22199         * mini.c (inline_method): Allways inline some wrappers even if the cost
22200         is too large. Fixes #58785.
22201
22202         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22203         
22204 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22205
22206         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22207         (crichton@gimp.org). Beginning of support for sparc/linux.
22208
22209         * mini-sparc.c: Optimize retrieval of LMF address.
22210
22211 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22212
22213         * exceptions-ppc.c:  handle alloca in methods with clauses.
22214
22215 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22216
22217         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22218
22219 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22220
22221         * mini.c: Delegate most of the abort signal work to 
22222           mono_thread_request_interruption, which also handles Stop and Suspend
22223           states.
22224
22225 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22226
22227         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22228         supports the save/restore lmf opcodes.
22229
22230 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22231
22232         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22233         by gcc-3.4 as well.
22234
22235         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22236
22237 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22238
22239         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22240         methods which contain array accesses.
22241
22242         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22243         boundaries. Fixes #58537.
22244
22245         * iltests.il: Add regression test for #58537.
22246
22247 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22248
22249         * mini-x86.c (mono_arch_local_regalloc): Last part of
22250         fix for bug #58633 (releasing register to early).
22251
22252 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22253
22254         * basic-long.cs: Add new regression test.
22255
22256 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22257
22258         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22259         register too early on the chain.
22260
22261 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22262
22263         * mini.c (create_helper_signature): Use a helper function to reduce
22264         the code which needs to be written. Also set the calling convention of
22265         icalls on windows. Fixes #57840.
22266
22267 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22268
22269         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22270         exceptions-ppc.c: added helper function to get the instruction address
22271         from a signal handler context.
22272
22273 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22274
22275         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22276         from gonzalo.
22277
22278 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22279
22280         * helpers.c: Add new env variable to pass args to objdump.
22281         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22282
22283 2004-05-17  Radek Doulik  <rodo@ximian.com>
22284
22285         * Makefile.am (common_sources): added abcremoval.h so it get
22286         disted and daily mono packages on go-mono.com will build again
22287
22288 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22289
22290         * abcremoval.c: Fixed coding style, added copyright header.
22291
22292         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22293
22294         * mini.h: Added prototype for abc removal main function.
22295
22296         * build_relations_propagation_table.pl: Added copyright header.
22297
22298 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22299
22300         * basic-long.cs: reg test for complex ceq_long bug.
22301
22302 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22303
22304         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22305         reg in long and clob case (bug #58343). Fixed/added comments.
22306
22307 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22308
22309         * mini.c (mono_jit_runtime_invoke): Follow new convention
22310         of calling the invoke method with an function pointer.
22311
22312 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22313
22314         * ChangeLog: Fix author of memory leak patch.
22315
22316 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22317
22318         * Makefile.am: fix make dist as well...
22319
22320
22321 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22322
22323         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22324         on archs where pointers are 4 bytes long.
22325
22326         * Makefile.am: Added abcremoval.c source file.
22327
22328         * abcremoval.c: Added abcremoval.c.
22329
22330         * abcremoval.h: Added abcremoval.h.
22331
22332         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22333
22334         * inssel.brg: Enabled bounds check removal.
22335
22336         * mini.c: Added support for abcrem optimization.
22337
22338         * mini.h: Added abcrem optimization label.
22339
22340         * driver.c: Added support for abcrem optimization.
22341
22342         * propagated_relations_table.def: Added propagated_relations_table.def.
22343
22344 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22345
22346         * mini.c, cfold.c: fix style.
22347
22348 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22349
22350         * mini.c: handle issue with the low-level implementation of
22351         some long opcodes (bug #54209).
22352
22353 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22354
22355         * basic.cs: test for my new cmov stuff.
22356
22357 2004-05-13      Patrik Torstensson
22358
22359         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22360         opt and added peephole documentation.
22361
22362 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22363
22364         * tramp-ppc.c: rewrote the generic trampoline code.
22365
22366 2004-05-11      Patrik Torstensson
22367
22368         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22369
22370 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22371
22372         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22373
22374         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22375         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22376
22377         * mini.c: Add new icalls for AsAny marshalling.
22378
22379 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22380
22381         * tramp-ppc.c, mini-ppc.c: more cleanups.
22382
22383 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22384
22385         * mini.c: no warnings.
22386
22387 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22388
22389         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22390
22391 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22392
22393         * mini.c: In the thread abort signal handler, if the thread is in the
22394         process of being stoped, don't throw the Abort exception, just stop the
22395         thread.
22396
22397 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22398
22399         * tramp-ppc.c: removed old code.
22400
22401 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22402
22403         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22404         do some simple speed optimizations on ppc.
22405
22406 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22407
22408         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22409         and large offsets in load/store.
22410
22411 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22414         it causes regressions.
22415
22416 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22417
22418         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22419         support.
22420
22421 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22422
22423         * jit-icalls.c: remove warnings.
22424         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22425         speedups for unsafe code.
22426
22427 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22428
22429         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22430
22431 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22432
22433         * basic-calls.cs: Add new regression test.
22434
22435         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22436         more portable.
22437
22438         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22439
22440         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22441         is no longer used.
22442
22443 2004-05-06      Patrik Torstensson
22444
22445         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22446         long reg allocation in any reg (not only eax:edx) and implemented 
22447         long shl/shr ops in asm instead of helpers.
22448
22449 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22450
22451         * mini-sparc.h: Fix warnings.
22452
22453         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22454         stack.
22455
22456         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22457         separate statement for clarity.
22458
22459         * mini-sparc.c: Update status.
22460
22461 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22462
22463         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22464         here.
22465
22466 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22467
22468         * inssel-ppc.brg: another small pre-release workaround:
22469         we don't do overflow detection for long_sub_un.
22470
22471 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22472
22473         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22474         (also works around a weird ppc bug: 57957).
22475
22476 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22477
22478         * tramp-ppc.c: trampoline fixes.
22479
22480 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22481
22482         * mini-ppc.c: fixed typos.
22483
22484 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22485
22486         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22487         at the top of the stack. Fixed typos. Use a frame registers
22488         for all the methods with exception clauses.
22489
22490 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22491
22492         * exceptions-ppc.c: restore fp registers.
22493
22494 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22495
22496         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22497         order from the stack top (moved the stack room to save the
22498         return value for trace after the param area). Fixed corruption
22499         in restoring registers on unwind.
22500
22501 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22502
22503         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22504
22505 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22506
22507         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22508         and prolog/epilog for methods that use it. Allow
22509         enough param area room for varargs methods. Fix miguel's
22510         breakage in exception handling.
22511
22512 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22513
22514         * Makefile.am: run genmdesc only on current arch.
22515
22516 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22517
22518         * exceptions-x86.c:
22519         * mini-x86.h: fix the build on windows.
22520
22521 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * 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.
22524
22525         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22526
22527         * mini-exceptions.c: New file.
22528         
22529         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22530         Move some parts of the x86 exception handling code to an 
22531         arch-independent file so it can be shared with other ports.
22532
22533 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22534
22535         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22536
22537 2004-04-26  David Waite  <mass@akuma.org>
22538
22539         * driver.c: remove comma from end of enumeration declaration
22540
22541 2004-04-26  Jackson Harper  <jackson@ximian.com>
22542
22543         * driver.c: parse config file before loading first assembly. This
22544         allows the user gac to be enabled/disabled. 
22545         
22546 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22547
22548         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22549         simpler mechanism: we do not care what is encoded initially
22550         (branch absolute or relative), we care about the code and its
22551         target.  I kept the old code for reference for now.
22552
22553         The new code tries first to determine if the jump is anywhere in
22554         the -/+32 absolute meg range, if it succeeds, it encodes using the
22555         absolute branch;  If not, it tried to find something in the
22556         relative range, if not, it uses the handle_thunk code. 
22557
22558 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22559
22560         * exceptions-ppc.c: use the correct ip register on macosx.
22561
22562 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22563
22564         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22565
22566 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22567
22568         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22569         Raise exception on integer divide by zero by hand since the hw
22570         doesn't support it. Handle NaNs in FP compares.
22571
22572 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22573
22574         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22575         code reducing duplication between the platforms and enabled
22576         signal exception handling (on linux for now).
22577
22578 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22579
22580         * exceptions-ppc.c: more macosx support.
22581
22582 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22583
22584         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22585
22586 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22587
22588         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22589
22590 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22591
22592         * iltests.il: more tests.
22593
22594 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22595
22596         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22597         vars as well.
22598
22599 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22600
22601         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22602
22603 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22604
22605         * liveness.c: Mark variables as volatile in all basic blocks reachable
22606         from exception clauses.
22607
22608 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22609
22610         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22611         inlining.
22612
22613 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22614
22615         * iltests.il, basic.cs: more tests for regalloc.
22616
22617 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22618
22619         * iltests.il: Some tests for register allocation modifications
22620         I have locally.
22621
22622 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22623
22624         * exceptions.cs: Add regression test for bug #56782.
22625
22626         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22627         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22628         the beauty of fixing the same thing in 5 different files...
22629
22630 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22633         methods.
22634
22635 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22636
22637         * mini.c: Add support for STRWLPARRAY marshalling convention.
22638
22639 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22640
22641         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22642         to init the context to setup the regs pointer).
22643
22644 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22645
22646         * exceptions-ppc.c: more exceptions work.
22647
22648 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22649
22650         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22651         not allowed.
22652
22653 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22654
22655         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22656         can use the memory directly.
22657
22658         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22659
22660         add x86_add_membase, x86_sub_membase, x86_mul_membase
22661
22662 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22663
22664         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22665         GENERAL_REGS they were also hardcoded for all PPC ports.
22666
22667         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22668
22669         Remove hard-coded limit for floating point registers, use
22670         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22671
22672         Notice that in MacOS X calling conventions you can fit a lot more
22673         floating point values in registers, so I should update the PInvoke
22674         test to excercise the passing of floating point values on the
22675         stack (currently broken).
22676         
22677 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22678
22679         * tramp-ppc.c (create_trampoline_code): Added
22680         JUMP_TRAMPOLINE_SIZE. 
22681         (ppc_magic_trampoline): Follow the pattern from
22682         x86_magic_trampoline: if code is set to zero, return. 
22683         (create_trampoline_code): Always pass MonoMethod to the jump
22684         trampoline, before it was passing a null.
22685         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22686         share the code with mono_arch_create_jit_trampoline. 
22687
22688         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22689         implemented.
22690         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22691         implemented.  
22692
22693         * cpu-g4.md: Added length for jmp instruction, the worst case
22694         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22695         for save_lmf).
22696
22697 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22698
22699         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22700
22701 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22702
22703         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22704         before each IL instruction.
22705
22706         * mini.c (CEE_BOX): Fix warnings.
22707
22708 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22709
22710         * mini.c: removed a few unused vars and extra whitespace.
22711
22712 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22713
22714         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22715         checks.
22716         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22717         index.
22718         (OP_GETCHR): use the above
22719         (CEE_LDELEMA): use the above.
22720
22721         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22722         version of the generic impl.
22723         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22724         (CEE_LDELEMA): use the above.
22725
22726 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22727
22728         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22729         Fixes #56317.
22730
22731         * iltests.il: Added new regression test for #56317.
22732
22733 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22734
22735         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22736         under NetBSD. Fixes #56450.
22737
22738         * liveness.c (update_gen_kill_set): Fix previous patch.
22739
22740 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22741
22742         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22743
22744 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22747         ldsfld and ldsflda.
22748
22749         * inssel-sparc.brg: Add more optimizations.
22750
22751         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22752
22753 2004-04-01  Martin Baulig  <martin@ximian.com>
22754
22755         * mini.c (handle_box): New static function; moved the
22756         implementation of CEE_BOX here.
22757         (mono_method_to_ir): Added `constrained_call' variable.
22758         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22759         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22760         mono_method_get_constrained() to get the method.
22761
22762 2004-04-01  Martin Baulig  <martin@ximian.com>
22763
22764         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22765         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22766         (mono_method_to_ir): We don't need these macros anymore since
22767         mono_class_get_full() already takes care of it. 
22768
22769 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22770
22771         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22772         use @function (as doesn't accept #function here) and check the return
22773         value of system and stop if fails.
22774
22775 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22776
22777         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22778
22779 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22780
22781         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22782
22783         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22784
22785         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22786         #56223.
22787
22788         * basic-long.cs: Add test for negation of Int64.MinValue.
22789
22790 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22791
22792         * mini-sparc.c: Update status.
22793
22794         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22795
22796         * exceptions-sparc.c: Fix return value in filters.
22797
22798         * inssel-sparc.brg: Fix register allocation in some rules.
22799
22800 2004-03-28  Martin Baulig  <martin@ximian.com>
22801
22802         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22803         if neccessary.  
22804
22805 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22806
22807         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22808         
22809         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22810         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22811         remove unused conv_u4 opcode.
22812
22813         * mini-x86.c: Remove valgrind workaround since it slows down things
22814         even when mono is not run under valgrind.
22815
22816 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22817
22818         * mini-sparc.c: Update status.
22819
22820         * inssel-sparc.brg: Add some optimizations.
22821
22822         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22823         future delay slot filling. Add support for varargs, tail calls and JMP.
22824
22825         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22826         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22827
22828         * inssel.brg: Fix register allocation in OP_ARGLIST.
22829
22830         * inssel.brg: Fix warnings.
22831
22832 2004-03-25  Martin Baulig  <martin@ximian.com>
22833
22834         * mini.c (inflate_generic_field): Removed.
22835         (mini_get_method): Removed, use mono_get_method_full(),
22836         (mini_get_class): Removed, use mono_class_get_full().
22837         (mono_method_to_ir): Pass our generic context to
22838         mono_field_from_token().        
22839
22840 2004-03-25  Martin Baulig  <martin@ximian.com>
22841
22842         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22843         of a `MonoMethod *'.
22844         (mini_get_method): Take a `MonoGenericContext *' instead
22845         of a `MonoMethod *'.
22846         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22847         a new local variable called `generic_context' which holds the
22848         current `MonoGenericContext *'; use it to lookup things.
22849
22850 2004-03-24  Martin Baulig  <martin@ximian.com>
22851
22852         * mini.c (mini_get_class): New static method; if we're inside a
22853         generic instance, inflate the class if neccessary.
22854         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22855
22856 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22857
22858         * iltests.il: New regression test for #55976.
22859
22860         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22861         #55976.
22862
22863 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22864
22865         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22866         output.
22867
22868 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * liveness.c: Consider SSA stores as well as loads when making vars
22871         volatile.
22872
22873         * exceptions.cs: New regression tests for register allocation.
22874         
22875 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22876
22877         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22878         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22879           domain lock only to protect puntual access to data structures.
22880           Added access lock for sighash, jit_icall_hash_name, 
22881           jit_icall_hash_addr and domain->code_mp.
22882
22883 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22884
22885         * driver.c: Print SIGSEGV handling method.
22886
22887         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22888
22889         * mini.c (setup_jit_tls_data): Handle case when this is called
22890         multiple times for a thread.
22891
22892         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22893         is different from fbxx_un. Fixes #54303. Also use constants instead of
22894         magic numbers in a lot of places.
22895
22896 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22897
22898         * exceptions.cs: Fix cctor test when --regression is used.
22899
22900 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22901
22902         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22903         for Linux/ppc.
22904
22905 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22906
22907         * inssel-ppc.brg: fixed register assignments for some rules.
22908
22909 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22910
22911         * exceptions.cs: Add test for exceptions in static constructors.
22912
22913         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22914         static constructors outside the domain lock. Fixes #55720.
22915
22916 2004-03-17  Martin Baulig  <martin@ximian.com>
22917
22918         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22919         (inflate_generic_field): Take the `MonoMethod *' instead of the
22920         `MonoClass *' and added support for generic method.
22921         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22922         have a `field->parent->gen_params', only inflate the field if it's
22923         an open constructed type.
22924
22925 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22926
22927         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22928         exception object instead of the preconstructed ones.
22929
22930 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22931
22932         * mini.c: reverted changed to sigsegv_signal_handler commited
22933         accidentally in the previous patch.
22934
22935 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22936
22937         * mini.c:
22938         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22939         running --aot with an old assembly.
22940
22941 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22942
22943         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22944         point values.
22945
22946         * mini-sparc.c: Add support for v9 branches with prediction.
22947
22948 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22949
22950         * mini.c (mini_init): #warning is GNUC only
22951
22952         * mini-sparc.h: implement __builtin_frame_address
22953         and __builtin_return_address for Sun C compiler
22954
22955 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22958
22959 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * basic-calls.cs: Add test for unaligned byref long argument passing.
22962
22963         * mini-ops.h: Add sparcv9 compare and branch instructions.
22964
22965         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22966         v9 instructions if we have a v9 cpu.
22967
22968         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22969         registers for global allocation.
22970
22971         * exceptions-sparc.c: Fixes.
22972         
22973 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * liveness.c (mono_analyze_liveness): Optimized version.
22976
22977         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22978
22979         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22980         sparc work.
22981
22982         * basic-float.cs basic-calls.cs: New regression tests.
22983
22984 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22985
22986         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22987         sigaltstack implementation.
22988
22989         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22990         
22991         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22992         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22993
22994 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * mini.c: Fix warnings.
22997         
22998         * mini.c (mono_resolve_patch_target): New function which contains the
22999         arch independent part of the patching process.
23000
23001         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23002         patching code to a separate function.
23003
23004 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23005
23006         * mini.c (add_signal_handler): ifdef out on Windows
23007
23008 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23009
23010         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23011         cpu-sparc.md: Add exception handling support + other fixes.
23012
23013         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23014         typed GC detection in --version.
23015
23016         * basic.cs exceptions.cs: New regression tests.
23017
23018         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23019         the arch specific code can store data during a compilation.
23020
23021         * mini-ops.h: Add OP_SETFRET.
23022
23023         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23024         function, register a separate icall for each arity, so the icalls can
23025         get a wrapper.
23026         
23027         * mini.c (mono_print_tree): Print negative offsets in a more readable
23028         form.
23029         
23030         * mini.c: Make signal handling work on sparc.
23031         
23032         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23033
23034         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23035
23036         * jit-icalls.c: Emulate truncl by aintl on solaris.
23037
23038         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23039
23040 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23043
23044 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23045
23046         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23047         a MarshalByRef type, inline a method that performs the check, taking into
23048         account that the object can be a proxy. Also implemented tow new opcodes:
23049         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23050         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23051         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23052
23053 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23054
23055         * mini-ppc.c: if a relative branch displacement is too big
23056         but it points to and area reachable with an absolute branch, 
23057         avoid the thunks.
23058
23059 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23060
23061         * mini.c: optimize small copies in cpblk.
23062
23063 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23064
23065         * basic-calls.cs basic-float.cs: New regression tests.
23066
23067         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23068         negative offsets from %fp. Implement localloc. Fix local register 
23069         allocation. Fix the case when the this argument needs to be saved to
23070         the stack. Implement some missing opcodes.
23071
23072 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * mini.c (mini_method_compile): Reenable global regalloc in methods
23075         with exception handlers.
23076
23077         * linear-scan.c (mono_varlist_sort): Fix warning.
23078
23079         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23080
23081         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23082         regalloc costs.
23083
23084         * liveness.c: Make all variables uses in exception clauses volatile, to
23085         prevent them from being allocated to registers. Fixes #42136.
23086
23087 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23088
23089         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23090         causes regressions.
23091
23092         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23093         argument to mono_arch_regalloc_cost.
23094
23095         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23096         precisely.
23097
23098 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23099
23100         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23101         Make the cost of allocating a variable to a register arch dependent.
23102
23103         * basic-calls.cs: Fix compilation of tests.
23104         
23105         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23106         helper function to cut back on the number of #ifdefs needed.
23107
23108         * mini-ppc.c: Fix compilation.
23109
23110         * basic-calls.cs: New regression tests.
23111
23112         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23113
23114         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23115         of l0 since that is callee saved.
23116
23117         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23118         to virtual calls.
23119
23120         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23121         of delay instruction.
23122
23123         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23124
23125         * mini.h (MonoCallInst): Add 'virtual' flag.
23126
23127         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23128
23129 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23130
23131         * *.cs: New regression tests.
23132
23133         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23134         work.
23135
23136         * mini.c (mono_runtime_install_handlers): Fix build.
23137
23138         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23139         'signal_stack_size' members.
23140
23141         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23142         alternate signal stack.
23143
23144         * exceptions-x86.c: Add stack overflow handling.
23145
23146         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23147         functions to arch independent code.
23148
23149         * mini.c (mono_print_tree): Print more detailed info for load_membase
23150         opcodes.
23151         
23152 2004-02-23  Martin Baulig  <martin@ximian.com>
23153
23154         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23155
23156 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23157
23158         * mini-x86.c: fixed reg allocation for div/rem.
23159
23160 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23161
23162         * driver.c (mono_main): Report some configuratio options on --version.
23163
23164 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23165
23166         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23167         low in the address space. Correctly flush memory in thunks where we
23168         output native code.
23169
23170 2004-02-20  Martin Baulig  <martin@ximian.com>
23171
23172         * mini.c (mini_get_method): New static method; inflate all generic
23173         methods and methods in open generic instances.
23174         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23175         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23176
23177 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23178
23179         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23180
23181         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23182
23183 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23184
23185         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23186
23187         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23188         it compile using Sun's compiler.
23189
23190 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23191
23192         * 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.
23193
23194         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23195
23196 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23197
23198         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23199         code.
23200         * mini-ppc.c: handle calls outside of the allowed range with thunks
23201         allocated using the code manager.
23202         * tramp-ppc.c: use the code manager to hold generated native code.
23203         Fixed the magic trampoline to just patch vtable entries.
23204
23205 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23208         independent file.
23209
23210 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23213         PPC.
23214
23215         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23216         if we have a working __thread implementation.
23217
23218         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23219         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23220
23221 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23222
23223         * mini-x86.c: Fix compilation under gcc 2.
23224         
23225 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23226
23227         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23228         contains a call to the wrapped function.
23229
23230         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23231         OP_<CALL>_IMM opcodes, and use them under X86.
23232         
23233         * mini.c (mono_jit_find_compiled_method): Fix warning.
23234
23235         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23236
23237         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23238
23239         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23240         functionality to mini.c.
23241
23242         * mini.c (mono_create_jump_trampoline): New function to create a jump
23243         trampoline. Return a compiled method instead of a trampoline if it
23244         exists. Add a cache for jump trampolines.
23245
23246         * mini.c (mono_jit_find_compiled_method): New function to return a
23247         compiled method if it exists.
23248
23249         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23250         mono_arch_create_jit_trampoline.
23251
23252         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23253         a jump trampoline. Fixes #52092.
23254         
23255 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23256
23257         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23258         which is not up-to-date. Add check_corlib_version () instead.
23259
23260         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23261         have to call it.
23262         
23263         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23264         since newer valgrind versions do not need it.
23265
23266         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23267         compile a method with a given set of optimizations.
23268
23269         * mini.c: Compile icall wrappers on-demand instead of at startup.
23270
23271         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23272         wrapper for an icall.
23273
23274 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23275
23276         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23277         #54063.
23278
23279         * iltests.il: Add test for non-empty stack before switch instruction.
23280
23281 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23282
23283         * mini.c: Add support for new stringbuilder marshalling conventions.
23284
23285         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23286
23287 2004-02-01  Martin Baulig  <martin@ximian.com>
23288
23289         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23290         in `ginst->mtype_argv'.
23291
23292 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23293
23294         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23295         facilitate grepping.
23296
23297 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23298
23299         * mini.c: fixed buglet in initobj generic implementation for references.
23300
23301 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * Makefile.am: make the version script conditional.
23304         * jit-icalls.c: handle missing truncl().
23305
23306 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23307
23308         * exceptions.cs: Add more tests for double->int conversion.
23309
23310         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23311         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23312
23313 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23314
23315         * driver.c: make --verbose --version emit an error
23316         if the loaded corlib doesn't match the runtime version.
23317
23318 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23319
23320         * mini-ppc.h: export ppc_patch().
23321         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23322         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23323         on par or better than on MacOSX.
23324
23325 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23326
23327         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23328         mono_lookup_pinvoke_call.
23329
23330         * mini-x86.c: Under windows, the default pinvoke calling convention is
23331         stdcall. Fixes #52834.
23332
23333         * mini.c (optimize_branches): Add an upper bound to the number of
23334         iterations to prevent infinite loops on strange loops. Fixes #53003.
23335
23336 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23339         and ISINST. Fixes #52093.
23340
23341         * objects.cs (test_0_vector_array_cast): New tests.
23342         
23343 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23346         checking in Array.Set ().
23347
23348         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23349         #52590.
23350
23351         * object.cs (test_0_multi_array_cast): New regression test.
23352
23353 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23354
23355         * exceptions-ppc.c: fix build on Linux/PPC.
23356
23357 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23358
23359         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23360         running under valgrind.
23361         (x86_magic_trampoline): Fix build bustage.
23362
23363         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23364         negative values as well. This is needed for the encoding of the line number
23365         info, since sometimes the line numbers are not in increasing order.
23366
23367 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * cpu-pentium.md (localloc): Increase the size of the localloc 
23370         instruction since it is a loop under Win32.
23371
23372         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23373         allocation.
23374
23375 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23376
23377         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23378         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23379         Max Horn (max@quendi.de). Fix file names in comments.
23380
23381 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23382
23383         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23384         avoid stack overflow.
23385         (replace_usage): Avoid uninitialized variable warnings.
23386
23387         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23388         and taking the address of valuetype variables.
23389
23390 2004-01-03  Patrik Torstensson
23391
23392         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23393         for other purposes than FP later on.
23394
23395 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23396
23397         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23398         of tail calls.
23399
23400 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23401
23402         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23403
23404 2003-12-30  Patrik Torstensson <p@rxc.se>
23405
23406         * mini-x86.h: Decreased number of availiable fp regs.
23407         Solves corner cases with FP spilling.
23408
23409 2003-12-23  Patrik Torstensson <p@rxc.se>
23410
23411         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23412         for floating point stack tracking / spilling on x86. 
23413         Fixes bug #49012.
23414         
23415         * basic-float.cs: added float mul overflow test.
23416
23417 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23418
23419         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23420
23421 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23422
23423         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23424         supports for cond branches that overflow the immediate
23425         overflow offset. mcs can compile simple programs.
23426
23427 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23428
23429         * exceptions-ppc.c: exception handling support wip:
23430         finally handlers get run on exception.
23431
23432 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23433
23434         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23435         profiling.
23436
23437 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23438
23439         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23440         initial support for stack walking and unwinding.
23441
23442 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23443
23444         * driver.c (mono_main): Make corlib-out-of-sync message more 
23445         descriptive. Also remove verify_corlib call.
23446
23447 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23448
23449         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23450         not overlap with other call's arguments, too.
23451
23452 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23453
23454         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23455         move to arch-specific code the choice of arch-specific
23456         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23457         * mini.c: ensure emulation calls will not interleave
23458         with other calls.
23459
23460 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23461
23462         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23463         the magic trampoline stack frame is dropped before executing
23464         the new method.
23465
23466 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23467
23468         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23469         and integer to fp conversions. Added support for overflowing
23470         arguments on the stack. Reserve a couple more registers as temps.
23471         Added support for aot compilation (as output still needs to be
23472         tweaked, though).
23473
23474 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23475
23476         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23477         Don't overwrite return register in some corner cases.
23478
23479 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23480
23481         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23482         static constructors when AOT compiling.
23483
23484         * driver.c (mono_main): Call mono_check_corlib_version.
23485
23486 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23487
23488         * cpu-g4.md, basic.cs: fixed div target register.
23489
23490 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23491
23492         * mini-ppc.c, basic.cs: shl_imm fix with test.
23493
23494 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23495
23496         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23497         structures by value. Misc fixes.
23498         * objects.cs: more tests.
23499
23500 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23501
23502         * mini-ppc.c: lconv.ovf.i implemented.
23503
23504 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * mini.c:
23507         (mini_init): don't error out if someone already called g_thread_init.
23508
23509 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23510
23511         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23512         to be any type per the spec. Fix abnormal memory usage when
23513         the same object is repeatedly thrown.
23514
23515 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23516
23517         * mini.c: check for overruns in IL code.
23518
23519 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23520
23521         * TODO: Add/remove some todo entries.
23522
23523 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23524
23525         * driver.c (mono_main): Call mono_verify_corlib.
23526
23527 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23528
23529         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23530         This has been moved to mini.c
23531         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23532         type being casted is marshalbyref it could be a proxy, so instead of
23533         emitting the type check code, emit a call to a runtime method that will
23534         perform the check by calling CanCastTo if needed.
23535
23536 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23537
23538         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23539         methods with large stack frames under Win32.
23540
23541 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23542
23543         * Makefile.am: Distribute regression tests.
23544
23545         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23546         at the end instead of inserting each variable into the sorted list.
23547
23548         * linear-scan.c (mono_varlist_sort): New helper function.
23549         
23550 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23551
23552         * mini.c: ensure arguments and locals are within bounds.
23553
23554 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23555
23556         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23557         related fixes.
23558
23559 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23560
23561         * mini.c (mono_cprop_copy_values): Fix crash.
23562
23563         * aot.c: Set verbosity back to 0.
23564         
23565 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23566
23567         * regalloc.c: complete memory leak fix by Laurent Morichetti
23568         (l_m@pacbell.net).
23569
23570 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * driver.c (main_thread_handler): Revert the previous patch.
23573
23574         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23575         under valgrind.
23576
23577         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23578         memory from the memory pool.
23579
23580         * driver.c (main_thread_handler): Turn on all optimizations when
23581         --aot is used.
23582
23583         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23584         an array for better performance.
23585
23586         * regalloc.c (mono_regstate_assign): Fix memory leak.
23587
23588         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23589         serialize the debug info.
23590
23591         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23592         debug info from the serialized representation.
23593
23594         * aot.c: Save debug info into the generated file and load it when 
23595         loading a method.
23596
23597         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23598
23599 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23600
23601         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23602         More FP-related fixes.
23603
23604 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23605
23606         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23607         and register allocation buglet. Hello world now runs.
23608
23609 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23612         * tramp-ppc.c: fixed class init trampoline.
23613         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23614
23615 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23616
23617         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23618         mini.c: more ppc changes/fixes.
23619
23620 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23621
23622         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23623         Also optimize the case when the arguments are the same in the caller 
23624         and in the callee.
23625
23626         * iltests.il: Add tests for tail calls with valuetype arguments.
23627
23628 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23629
23630         * mini-ppc.c: fixes for struct return type.
23631
23632 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23633
23634         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23635         mono_spillvar_offset() to arch-specific code.
23636
23637 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23638
23639         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23640
23641 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23642
23643         * exceptions-x86.c: Fix stack space leaks.
23644         
23645         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23646         registers from the lmf if the method has save_lmf set.
23647
23648 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23649
23650         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23651         of icall wrappers into InvokeInDomain, since these are now per-domain.
23652
23653 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23654
23655         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23656         make some opcode emulation and intrinsic ops enabled/disabled 
23657         according to the architecture. More fixes.
23658
23659 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23660
23661         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23662
23663 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23664
23665         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23666         arch-specific handling for 'this' and struct return type to
23667         arch-specific code.
23668
23669 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23670
23671         * aot.c: prevent divide by zero error when reporting (it happened with
23672         Accessibility.dll).
23673
23674 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23675
23676         * mini.h (inst_switch): Remove unused macro.
23677
23678 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23679
23680         * aot.c:
23681         (load_aot_module): free 'info->methods' and 'info' properly. No more
23682         "free(): invalid pointer blah" messages when you have an old aot
23683         compiled assembly.
23684
23685 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23686
23687         * jit-icalls.c, mini.c: Added support for context static fields.
23688
23689 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * mini.c (mono_method_blittable): Methods which set LastError are not 
23692         blittable either. Fixes #51108.
23693         
23694 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23695
23696         * mini.c: flush icache.
23697         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23698
23699 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23702
23703 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23704
23705         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23706         safe on IA32.
23707
23708         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23709         vararg calls.
23710
23711         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23712
23713 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23714
23715         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23716         instruction when the result is discarded.
23717
23718         * iltests.il (test_0_div_regalloc): New regression test.
23719
23720         * arrays.cs: Fix compilation error.
23721
23722 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23723
23724         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23725         float rules to inssel-x86.brg: sane architectures with FP registers
23726         don't need to implement these rules.
23727
23728 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23729
23730         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23731
23732 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23733
23734         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23735         implementation of 32 bit systems.
23736
23737 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23738
23739         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23740         (Jeroen Zwartepoorte).
23741
23742 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23743
23744         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23745         the caller and the callee matches.
23746         
23747         * mini.c (mono_method_to_ir): Add comment.
23748
23749         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23750         signbit is missing on some platforms.
23751
23752 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23753
23754         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23755
23756         * mini.c (setup_jit_tls_data): Call the new function.
23757         
23758         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23759
23760         * mini-x86.c: Add experimental support for fast access to the lmf
23761         structure under NPTL/Linux 2.6.x.
23762
23763 2003-11-06  Martin Baulig  <martin@ximian.com>
23764
23765         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23766         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23767         the debugger.
23768
23769 2003-11-02  Martin Baulig  <martin@ximian.com>
23770
23771         * mini.c (inflate_generic_field): New static method.
23772         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23773         generic instance and the field is declared in a generic type, call
23774         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23775
23776 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23777
23778         * mini.h mini.c (mono_method_same_domain): New function to return
23779         whenever the caller and the callee are in the same domain.
23780
23781         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23782
23783 2003-10-30  Martin Baulig  <martin@ximian.com>
23784
23785         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23786         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23787         method parameters.
23788         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23789         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23790
23791 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23794         propagation.
23795
23796         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23797         object here, so it is in the correct appdomain etc.
23798
23799 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23800
23801         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23802         already done.
23803         (mono_method_to_ir): Avoid freeing the type created returned from
23804         mono_type_create_from_typespec, since it is put into an internal cache
23805         by the function. Fixes pointer.exe.
23806
23807         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23808         trampolines for icalls and pinvokes as well. Fixes #33569.
23809
23810 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23811
23812         * mini.c: Update after appdomain changes.
23813
23814         * mini.c (mono_jit_compile_method_inner): Allways compile native
23815         method wrappers in the root domain, since there can only be one
23816         instance of them, whose address is stored in method->info.
23817
23818 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23821         environment variable. Instead detect automatically whenever running
23822         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23823         valgrind.h.
23824
23825 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23826
23827         * trace.c, trace.h: New files that implement the new trace option
23828         parsing. 
23829
23830         * driver.c: Document new --trace options.
23831
23832         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23833         mini-x86.c: Apply:
23834
23835         -       if (mono_jit_trace_calls)
23836         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23837
23838         * mini.h: prototypes.
23839         
23840 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23841
23842         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23843
23844         * mini.c inssel.brg: Implement typedefbyref opcodes.
23845
23846         * mini.c (mono_jit_compile_method): Remove unused local variable.
23847
23848         * mini.c (mono_jit_compile_method_inner): Ditto.
23849         
23850 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23851
23852         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23853         
23854         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23855
23856 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23857
23858         * mini.c (mono_no_aot): Remove unused global variable.
23859
23860         * mini.c: Thread safety fixes.
23861
23862 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * mini.c (mono_create_class_init_trampoline): Add a lock around
23865         class_init_hash_addr.
23866
23867         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23868         #30073.
23869
23870         * mini.c: Decompose the NEWARR instruction before decomposing its
23871         arguments. Fixes #30073.
23872
23873 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23874
23875         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23876         convention.
23877
23878 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23879
23880         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23881
23882         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23883
23884         * driver.c: Add support for compiling icall wrappers to --compile.
23885
23886 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * inssel.brg: The empty value in class->interface_offsets is -1, not
23889         0. Fixes #49287.
23890
23891 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * objects.cs: New test for 'is' operator on an array of interfaces.
23894
23895 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23896
23897         * tramp-ppc.c: update trampoline code to support jumps
23898         and class initialization.
23899
23900 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23901
23902         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23903
23904         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23905
23906         * inssel.brg (OP_UNBOX): Remove unused rule.
23907
23908         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23909         region instead of one for each method. Fixes #47813.
23910
23911 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23912
23913         * exceptions.cs (test_0_nested_finally): New regression test for
23914         nested exception handlers.
23915
23916         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23917
23918         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23919
23920         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23921         inlining.
23922
23923         * mini.c (mono_method_check_inlining): Make the inlining limit 
23924         configurable by an environment variable.
23925         
23926         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23927
23928         * mini.h: Bump AOT file version.
23929
23930         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23931         token, store the image along with the token, since the token might not 
23932         refer to the same image as the method containing the relocation, 
23933         because of inlining.
23934
23935 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * mini.c (mono_precompile_assemblies): New function to compile
23938         all methods in all loaded assemblies.
23939
23940         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23941
23942         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23943         iassign and fassign to int*, since they can contain large negative
23944         values if the register is spilled. Also added some comments. Fixes
23945         #45817.
23946
23947         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23948         under Win32. Fixes #42964.
23949
23950 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23951
23952         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23953
23954         * aot.c: Added support for AOT compiling methods which contain calls
23955         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23956         handled.
23957         
23958         * driver.c (compile_all_methods): Run the compilation in a thread
23959         managed by mono. Fixes #44023.
23960
23961         * mini.c (mono_codegen): Print full method name in verbose output.
23962
23963         * mini-x86.c (mono_arch_patch_code): Fix warning.
23964         
23965         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23966         jumps, since the method we are jumping to might be domain-specific.
23967
23968         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23969
23970 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23971
23972         * inssel.brg: string chars are unsigned.
23973
23974 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23975
23976         * TODO: New todo item.
23977
23978         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23979         which calls mono_runtime_class_init and patches the call site to
23980         avoid further calls.
23981         (mono_arch_create_class_init_trampoline): New arch specific function 
23982         to create a class init trampoline.
23983         (create_trampoline_code): Generalized so it can create
23984         class init trampolines as well.
23985
23986         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23987         (mono_create_class_init_trampoline): New function to create and cache
23988         class init trampolines.
23989         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23990         vtable given the address of a class init trampoline. Used by the
23991         patching process.
23992         (mono_codegen): Generate a call to a trampoline instead of
23993         mono_runtime_class_init in LDSFLD[A].
23994         (mono_codegen): Add relocations for the new trampoline.
23995         
23996         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23997         MONO_PATCH_INFO_CLASS_INIT.
23998
23999         * mini.h: Bump AOT version number.
24000
24001         * aot.c: Create a copy of the loaded code instead of using the original
24002         so methods which call each other will be close in memory, improving
24003         cache behaviour.
24004         
24005         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24006         patch since it breaks the regression tests.
24007         
24008         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24009         for the register saving instruction sequence since the 
24010         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24011
24012 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24013
24014         * TODO: Fix todo item && remove another.
24015
24016 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24019         previous checkin.
24020
24021         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24022         function of the module.
24023
24024         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24025         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24026         --no-aot command line option.
24027
24028 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24029
24030         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24031         by Bernie Solomon (bernard@ugsolutions.com).
24032
24033         * inssel.brg: Refactor the interface offset table related code into
24034         its separate functions and add support for the AOT case.
24035
24036 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24039         
24040         * aot.c: Added mono_aot_verbose variable and made all debugging
24041         output depend on the value of this variable.
24042
24043         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24044         method_label and info_label.
24045
24046         * mini.h mini-x86.c aot.c: Added a new relocation type 
24047         MONO_PATCH_INFO_IID for klass->interface_id.
24048
24049         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24050         the MonoJitInfo structure.
24051
24052         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24053         a non-root appdomain in shared mode.
24054
24055 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24056
24057         * aot.c: make aot loader less verbose. Remove free of unused variable.
24058
24059 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24062
24063         * .cvsignore: Added *.dll.
24064
24065         * mini.c (mono_print_tree_nl): New function callable while debugging.
24066
24067         * mini.c (mono_print_code): Export this.
24068
24069         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24070         patched code.
24071
24072 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24073
24074         * mini.h (MonoCompile): Added 'jit_info' field.
24075
24076         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24077         the cfg structure, since it is needed by the AOT compiler.
24078
24079         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24080
24081         * aot.c: A major rewrite. Changes include:
24082         - save exception tables for methods which have them.
24083         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24084         to g_module_symbol.
24085         - reworked the file format so it is now much smaller and needs
24086         fewer relocation entries.
24087         
24088 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24089
24090         * aot.c (load_aot_module): Fix build bustage on platforms without
24091         Boehm GC.
24092
24093 2003-09-04  Martin Baulig  <martin@ximian.com>
24094
24095         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24096
24097 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * TODO: Some new optimization ideas.
24100
24101         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24102
24103         * aot.c: Save the optimization flags used to compile the code into
24104         the AOT module.
24105
24106         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24107         support emitting domain specific code.
24108         
24109         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24110         no longer domain neutral. It can be made domain neutral by compiling 
24111         with --optimize=shared.
24112
24113         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24114         between appdomains.
24115
24116         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24117         loading of AOT code.
24118
24119         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24120         
24121         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24122         if there is no domain neutrality information.
24123
24124 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24127         format version into the generated library.
24128
24129         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24130         callee method into the caller since one of them could be shared.
24131
24132         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24133         system exceptions from AOT code now works.
24134
24135         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24136         method if it is domain neutral and the callee is not.
24137
24138         * graph.c (cfg_emit_one_loop_level): Fix warning.
24139
24140 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24141
24142         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24143         last checkin.
24144
24145 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24146
24147         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24148         is needed  by code which is executed before mono_runtime_init ().
24149         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24150         
24151         * mini.c (mono_thread_abort): Fix warning.
24152         (mono_jit_compile_method): Call static constructor in the AOT case too.
24153
24154         * aot.c (mono_compile_assembly): Fix warning.
24155
24156 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24157
24158         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24159
24160 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24163
24164         * cpu-pentium.md: Fix the length of call opcodes so they include the
24165         ESP restoring instruction. Fixes #47968.
24166
24167 2003-08-28  Martin Baulig  <martin@ximian.com>
24168
24169         * mini-x86.c (mono_arch_call_opcode): Added support for
24170         MONO_TYPE_GENERICINST.
24171
24172         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24173
24174 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24175
24176         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24177         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24178
24179         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24180         metadata_section.
24181
24182 2003-08-26  Martin Baulig  <martin@ximian.com>
24183
24184         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24185         when reporting an error, set this to the actual error location.
24186         (mono_method_to_ir): Report the correct error location if
24187         get_basic_blocks() returned an error.
24188
24189 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24190
24191         * mini.c (mono_type_blittable): OBJECT is not blittable.
24192         (mono_method_blittable): Methods which have marshalling descriptors
24193         are not blittable either. Fixes #47842.
24194
24195 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24196
24197         * driver.c mini.c: Use an environment variable instead of a global 
24198         variable. Also fix the build.
24199
24200         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24201         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24202         reporting this. 
24203
24204         * driver.c mini.c: Added --with-valgrind option to turn off some
24205         code which prevents mono from running under valgrind.
24206
24207         * mini.c (mono_emit_call_args): Fixed warning.
24208
24209         * mini.c (mono_emulate_opcode): Fixed warning.
24210
24211 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24212
24213         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24214         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24215         regalloc.c, regalloc.h: specify available registers in arch-specific
24216         code and support floats in the regallocator (patch by Laurent Morichetti 
24217         <l_m@pacbell.net>)
24218
24219 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24220
24221         * mini.c: mono_thread_current() can be called only after
24222         mono_runtime_init(): rearrange code to not call it early on.
24223
24224 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24225
24226         * mini.c: allocate jump tables in the code mempools.
24227
24228 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24229
24230         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24231         freed.
24232
24233 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24234
24235         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24236         12 to 16.  This fixes bug #47453.
24237
24238
24239 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24240
24241         * mini-ppc.c: fixed indexed load and unsigned compares.
24242
24243 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24244
24245         * mini.c: reenabled installation of handler for
24246           thread abort signal.
24247
24248 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24249
24250         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24251         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24252         until it's fixed and actually useful.
24253
24254 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24255
24256         * inssel-long32.brg: couple more opcodes implemented.
24257
24258 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24259         
24260         * mini-sparc.c: Even more opcodes implemeted.
24261
24262 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24263
24264         * mini-sparc.c: More opcodes implemented.
24265
24266 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24267
24268         * mini-sparc.c: More opcodes implemented.
24269
24270 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24271
24272         * inssel-sparc.brg: Add some needed rules.  Direct
24273         copy from PPC.
24274         * Makefile.am: Use inssel-sparc.brg
24275         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24276         an assert happy for now.
24277
24278 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24279
24280         * mini-sparc.c: Fixed compile errors.
24281         * exceptions-sparc.c: Same.  We now produce a mono binary 
24282         on sparc-linux.  Yea.
24283
24284 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24285
24286         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24287         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24288         They compile, but do not work.
24289
24290 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24291
24292         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24293         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24294         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24295         (ct@gentoo.org).
24296
24297 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24298
24299         * mini.c: more opcodes implemented and better support for generics.
24300
24301 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24302
24303         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24304         * mini.c, mini.h: first cut at generics support: some new instructions 
24305         added and changed the behaviour of some of the existing ones.
24306
24307 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24308
24309         * mini.c: Removed definition of metadata_shared mutex here.
24310
24311 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24312
24313         * mini-x86.c: make vararg calls work for instance methods.
24314
24315 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24316
24317         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24318         returns the arguments in a separte list, now.
24319
24320 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24321
24322         * aot.c, mini.c: updates for array type representation changes.
24323
24324 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24325
24326         * mini.c: register function to perform jit shutdown.
24327
24328 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24329
24330         * mini.c: use a faster allocator if possible.
24331
24332 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24333
24334         * aot.c: some cleanups and portability changes.
24335
24336 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24337
24338         * mini.c: use faster allocation for CEE_BOX if possible.
24339
24340 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24341
24342         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24343         Moved inlined mempcy code to its own function so that is can be
24344         reused. Added an inline memset function as well (optimized initobj).
24345         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24346
24347 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24348
24349         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24350
24351 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24352
24353         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24354         arch code can setup the cpu for CLR execution, if needed.
24355         We use it on x86 to set the precision of FP operations.
24356
24357 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24358
24359         * mini.c: disable some optimizations if we can guess they'll cost too
24360         much for a given method.
24361
24362 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24363
24364         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24365         
24366 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24367         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24368         info collection support.
24369
24370 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24371
24372         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24373         is now implemented in the profiling API. Get rid of a couple of
24374         unnecessary global variables.
24375
24376 2003-06-15  Nick Drochak <ndrochak@gol.com>
24377
24378         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24379         * cpu-g4.md: add op_bigmul and op_bigmul_un
24380         * cpu_pentium.md: add op_bigmul_un
24381         * inssel-long32.brg: add rule for unsigned bigmul
24382         * mini-ops.h: define OP_BIGMUL_UN
24383         * mini-x86.c: THE BUG: handle (un)signed properly
24384         * mini.c: choose unsigned opcode if needed.
24385         This set of patches fixes bug #44291
24386
24387 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24388
24389         * mini.c (optimize_branches): improved to handle all kinds of
24390         conditional branches.
24391
24392 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24393
24394         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24395         don't raise exceptions.
24396
24397 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24400         to arch-specific files.
24401
24402 2003-06-09  Martin Baulig  <martin@ximian.com>
24403
24404         * Makefile.am (libs): Added $(LIBGC_LIBS).
24405
24406 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24407
24408         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24409         and OP_ATAN (fixes bug#44293).
24410
24411 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24412
24413         * Makefile.am, mini-x86.c: rename cpu description array to
24414         pentium_desc, since some compilers define the 'pentium' preprocessor
24415         symbol.
24416
24417 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24418
24419         * mini.c (mini_select_instructions): add explicit branch if the
24420         following block is not the false target of a conditional branch -
24421         we need this with any optimization that reorder or remove bblocks
24422
24423         * mini.c (optimize_branches): bug fixes
24424
24425 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24426
24427         * mini.c (mono_method_to_ir): inline static readonly fields
24428
24429         * ssa.c (fold_tree): start cfold support for long (very simple
24430         cases only)
24431
24432         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24433
24434 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * inssel.brg: fixed memcpy (bug #44219).
24437
24438 2003-06-05  Dick Porter  <dick@ximian.com>
24439
24440         * driver.c: Set the glib log levels to not abort if g_message
24441         recurses.
24442
24443         g_set_prgname() has to happen before mini_init() so that the
24444         process handle gets the info.
24445         
24446 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24447
24448         * driver.c: add intrins to the default optimizations to get wider
24449         exposure.
24450
24451 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * mini.h: some large basic blocks will overflow a 16-bit
24454         integers for symbolic registers.
24455
24456 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24457
24458         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24459         (mono_arch_output_basic_block): fix bug 43499 
24460
24461 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24462
24463         * mini.c: kill duplicated definition of mono_debug_format.
24464
24465 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24466
24467         * mini-x86.c, arrays.cs: fixed register allocation bug.
24468
24469 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24470
24471         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24472
24473         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24474
24475 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24476
24477         * mini.c:
24478         (print_method_from_ip): also print source location information if
24479         available.
24480
24481 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24482
24483         * mini.c (mono_find_block_region): bug fix in region code
24484         (mini_method_compile): enable removing unreachable code again, but
24485         only in methods without exception clauses.
24486
24487 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24488
24489         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24490         Implemented arglist opcode and handling of TypedReference type.
24491         Fixed x86 call convention when a structure is returned.
24492         Minimal support for calling static vararg methods.
24493
24494 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24495
24496         * mini.c (mini_method_compile):  always remove unreachable code,
24497         because the code in them may be inconsistent  (access to dead
24498         variables for example).
24499
24500 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24501
24502         * driver.c, debug-mini.c: warning fixes.
24503
24504 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24505
24506         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24507
24508 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24509
24510         * mini.c: thread-static fields are registered in mono_class_vtable(),
24511         so ensure the function is called before checking for them.
24512
24513 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24514
24515         * mini.c (optimize_branches): fix for bug 43586
24516
24517         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24518         overflow (fixes Bug #43639)
24519
24520 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * mini.c, objects.cs: allow the use of stobj for primitive types.
24523
24524 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24525
24526         * mini.c: be less strict about argument checking until we support
24527         running the verifier.
24528
24529 2003-05-27  Nick Drochak <ndrochak@gol.com>
24530
24531         * basic-long.cs: tests for (ulong)int * (ulong)int also
24532         * mini.c: use the same trick for (ulong)int * (ulong)int
24533
24534 2003-05-27  Nick Drochak <ndrochak@gol.com>
24535
24536         * basic-long.cs: add regression test for (long)int * (long)int
24537         * cpu-pentium.md: add op_bigmul specification
24538         * inssel-long32.brg: add OP_BIGMUL rule
24539         * mini-ops.h: add OP_BIGMUL
24540         * mini-x86.c: register allocator: handle case where src1 needs to be
24541         in EAX.
24542         * mini.c: substitute special BIGMUL opcode in the tree for 
24543         (long)int * (long)int
24544
24545 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24546
24547         * jit-icalls.c: call the type ctor on field access if needed.
24548
24549 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24550
24551         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24552         to a method (including results of ldelema, bug#43207).
24553
24554 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24555
24556         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24557         colors to show exception handler blocks.
24558
24559         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24560         (fix for pinvoke7.cs).
24561
24562 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24563
24564         * mini.h, mini.c: ensure correct initialization order for types that
24565         require it. Prepare for lazy compilation of jit icall wrappers.
24566         Provide a name for opcode emulation to reduce unneeded mallocing.
24567
24568 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24569
24570         * mini-x86.c: better register restoring code and profiling
24571         support for tail calls.
24572
24573 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * mini.h, driver.c: prepare for leaf methods optimization.
24576
24577 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * mini.c: get targets of branches before converting a method.
24580
24581 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24582
24583         * mini.c (optimize_branches): added some experimental code (disbaled) 
24584
24585 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24586
24587         * mini.c (optimize_branches): fix branch to branch optimization 
24588
24589         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24590
24591         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24592
24593         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24594
24595         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24596         if needed.
24597
24598 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24599
24600         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24601         enable use of interface variables again.
24602
24603         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24604         I1 to registers because there is no simply way to sign extend 8bit
24605         quantities in caller saved registers on x86.
24606
24607         * inssel-float.brg: set costs of some rules to 2 so
24608         that monobure always select the arch. specific ones if supplied,
24609         regardless of the order we pass the files to monoburg.
24610
24611 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24612
24613         * mini.c, mini-x86.c: since the magic trampoline for jumps
24614         can't patch the code directly, we do it as soon as the
24615         method gets compiled.
24616
24617 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24618
24619         * mini-x86.c, mini.h: introduce a new patching method
24620         to support CEE_JMP and tail calls.
24621         * mini.c: obey tail.call. Don't precompile methods target
24622         of CEE_JMP.
24623         * tramp-x86.c: new trampoline code to handle methods
24624         reached through a jump.
24625
24626 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24627
24628         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24629         bit values to registers
24630
24631 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24632
24633         * mini.c (mono_compile_get_interface_var): share interface
24634         variables if possible.
24635
24636 2003-05-16  Martin Baulig  <martin@ximian.com>
24637
24638         * debug-mini.c (mono_init_debugger): New function to initialize
24639         the debugger.  This is not in the debugger since it needs to
24640         access some of mini's internals.
24641
24642 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24643
24644         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24645
24646 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24647
24648         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24649         for value type handling.
24650
24651 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24652
24653         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24654         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24655
24656 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24657
24658         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24659           the constructor through a proxy.
24660
24661 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24662
24663         * jit-icalls.c, inssel.brg: fixes to array element address
24664         calculations.
24665
24666 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24667
24668         * mini-x86.c (is_regsize_var): allocate pointer to registers
24669
24670 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24671
24672         * driver.c: fixed typo, added intrins to the set of optimizations
24673         tested with regressions.
24674
24675 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24676
24677         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24678         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24679         test case.
24680
24681 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24682
24683         * inssel.brg: remove some common pop instructions without side effects
24684
24685 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24686
24687         * inssel-x86.brg: fixed thinko in int to double conversions.
24688
24689 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24690
24691         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24692
24693 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24694
24695         * inssel-long32.brg: two more missing instructions.
24696
24697 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24698
24699         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24700         if not already set.
24701
24702 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24705         correctly.
24706
24707         * basic-float.cs: Added tests for negative zero.
24708
24709 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24710
24711         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24712         a couple of missing operations for long casts, with test cases.
24713
24714 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24715
24716         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24717
24718 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24719
24720         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24721         code size estimation.
24722
24723 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24724
24725         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24726         abstract methods (fix bug 42542)
24727
24728         * aot.c: add ability to handle array types
24729         
24730 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24731
24732         * mini.c: Call the _specific versions of the object allocation
24733         functions if possible.
24734
24735 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24736
24737         * driver.c: call setlocale ().
24738
24739 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24740
24741         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24742         windows build.
24743
24744 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24745
24746         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24747
24748         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24749         wrappers (fix bug 42122)
24750
24751 2003-05-04  Martin Baulig  <martin@ximian.com>
24752
24753         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24754
24755         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24756         s/mini_set_defaults/mono_set_defaults/g.
24757
24758 2003-05-04  Martin Baulig  <martin@ximian.com>
24759
24760         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24761
24762 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24763
24764         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24765         (reported by Don Roberts).
24766
24767 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24768
24769         * mini.c: temporarily work around two bugs for this release.
24770
24771 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24772
24773         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24774         that contains -export-dynamic and it makes using the ld script
24775         useless.
24776         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24777
24778 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24779
24780         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24781         specific cpu.
24782
24783 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24784
24785         * mini.c: make sure leave calls all the needed finally blocks,
24786         even when the target jumps out of multiple exception clauses.
24787
24788 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24789
24790         * ldscript, Makefile.am: add linker script to reduce the number of
24791         exported symbols (should also fix the issues with libwine defining
24792         some of the same symbols in io-layer).
24793
24794 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24795
24796         * driver.c (mini_main): Avoid assertion when no file name is given on 
24797         the command line.
24798
24799 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24800
24801         * driver.c: added --version/-V command line option.
24802         Added the inline optimization in the regression tests.
24803
24804 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24805
24806         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24807         to the type in the method signature (fixes bug#42134).
24808
24809 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24810
24811         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24812
24813 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24814
24815         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24816
24817 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24818
24819         * driver.c: fixed bug #42100.
24820
24821 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24822
24823         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24824
24825 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24826
24827         * mini.c: moved most of the code required to do inlining to its own
24828         function so it can be reused. Inline also ctors if appropriate.
24829
24830 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24831
24832         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24833         the runtime can call mono API functions.
24834
24835 2003-04-27  Martin Baulig  <martin@ximian.com>
24836
24837         * debug-mini.c (mono_debug_init_method): Added
24838         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24839         send a notification to the debugger.
24840
24841         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24842         running in the Mono Debugger, just pass the breakpoint number to
24843         mono_debug_init_method().
24844
24845         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24846
24847 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24848
24849         * mini.c: allow some more unsafe compares.
24850
24851 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24852
24853         * mini-x86.c, Makefile.am: make distcheck works (partially from
24854         a patch by Richard Lee <r.h.lee@attbi.com>).
24855         * regset.c, regset.h: removed, they are unused.
24856
24857 2003-04-25  Dick Porter  <dick@ximian.com>
24858
24859         * driver.c: Usage reports the name as 'mono' not 'mini'
24860         * exceptions-x86.c: Build and run on freebsd
24861
24862 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24863
24864         * Makefile.am: install the program with the 'mono' name and
24865         the library as libmono instead of mini and libmini.
24866
24867 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24868
24869         * driver.c: provide the APIs for the embedding interface of the old jit.
24870
24871 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24872
24873         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24874
24875 2003-04-23  Martin Baulig  <martin@ximian.com>
24876
24877         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24878
24879         * driver.c: Added `--debug' command line argument to enable
24880         debugging support.
24881
24882 2003-04-23  Martin Baulig  <martin@ximian.com>
24883
24884         * debug.[ch]: Removed.  The code is now in
24885         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24886
24887         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24888         last six months.
24889
24890 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24891
24892         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24893
24894 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24895
24896         * mini.c:
24897         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24898         mono_domain_finalize.
24899         (mini_method_compile): use mono_method_profile* if the the option is
24900         enabled.
24901
24902 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24903
24904         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24905         methods with their wrapper.
24906
24907         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24908         methods with their wrapper.
24909
24910         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24911         their wrapper.
24912
24913         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24914         wrapper.
24915
24916         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24917         methods.
24918
24919 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24920
24921         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24922
24923 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24924
24925         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24926         of the mempool. This is slightly faster and uses less memory
24927
24928 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24929
24930         * mini.c: avoid O(n) allocation for variables.
24931
24932 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24933
24934         * mini.c: handle items on the stack after inlining methods.
24935
24936 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24937
24938         * mini.c: make the method->opcode optimization dependent
24939         on MONO_OPT_INSTRINS and do it lazily.
24940
24941 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24942
24943         * driver.c: print overall results at the end of regression run.
24944
24945 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24946
24947         * inssel.brg: don't overwrite symbolic registers.
24948
24949 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24950
24951         * inssel-x86.brg: fix conversion from long to float.
24952
24953 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24954
24955         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24956
24957 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24958
24959         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24960
24961         * driver.c: Added --print-vtable option as in the old JIT.
24962
24963 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24964
24965         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24966
24967 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24968
24969         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24970
24971 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24972
24973         * mini.c regalloc.c regalloc.h: Fix memory leak.
24974
24975 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24976
24977         * aot.c (mono_aot_get_method): register all used strings
24978
24979 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24980
24981         * mini.c: always intern strings references with ldstr at compile time.
24982
24983 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24984
24985         * Makefile.am: add BUILT_SOURCES.
24986
24987 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24988
24989         * driver.c: give a better error message when the assembly to execute
24990         doesn't have an entry point.
24991
24992 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24993
24994         * Makefile.am: added hack for automake
24995
24996         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24997         correct sematics.
24998
24999         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25000
25001 22003-04-07  Martin Baulig  <martin@ximian.com>
25002
25003         * Makefile.am: Added Makefile.am.
25004
25005         * debugger-main.c: Removed, this is now in the debugger where it
25006         belongs.
25007
25008         * mini.pc.in: Call this package `mini' for the moment.
25009
25010
25011
25012
25013
25014
25015
25016
25017
25018
25019
25020
25021
25022
25023