6e76f95cbe781dc3a5ca2ee28e0199d8415a94d0
[mono.git] / mono / mini / ChangeLog
1 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
2
3         * Makefile.am (aotcheck): Make this actually use the AOTed code.
4
5 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
6
7         * mini-trampolines.c: implement AOT IMT support.
8         * mini-x86.h: enable IMT support for wider testing.
9
10 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11
12         * inssel.brg (emit_imt_argument): Add aot support here.
13
14         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15
16 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
17
18         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
19         of the IMT implementation, partially from massi, with my
20         implementation of the bsearch sequence. Disabled by default until
21         the AOT code is implemented.
22
23 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
24
25         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
26
27         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
28
29 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
30
31         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
32         arch-independent IMT JIT code from Massimiliano
33         Mantione (massi@ximian.com) with small cleanups from me.
34
35 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
36
37         * Makefile.am: fix svn invocation to get the svn revision to be
38         independent of the local language (build fix).
39
40 2007-07-09  Mark Probst  <mark.probst@gmail.com>
41
42         * mini.c (inline_method): Reset cfg->exception_type if the
43         inlining is aborted.  Fixes: 82049.
44
45 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
46
47         * mini.c: remove assert from exception handling code when exception_ptr
48         is not set.
49
50 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
51
52         * mini.c (mono_codegen): Add an assert.
53
54         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
55         enter and leave code.
56         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
57
58 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
59
60         * mini-ppc.c: fixed memory corruption for localloc(0)
61         (bug #81852).
62
63 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
64         
65         * mini.c: Fix warnings.
66
67 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
68
69         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
70         to emit better double->int conversions.
71
72 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
73
74         * mini.c: the provided Min/Max optimizations are valid for unisgned
75         ints.
76
77 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
78
79         * 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
80
81 2007-06-28  Miguel de Icaza  <miguel@novell.com>
82
83         * mini.c (mono_running_on_valgrind): Add support for reporting the
84         method and  its boundaries to valgrind.
85
86 2007-06-28  Martin Baulig  <martin@ximian.com>
87
88         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
89
90 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
91
92         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
93
94         * generic.2.cs: Add new test case.
95
96 2007-06-25  Martin Baulig  <martin@ximian.com>
97
98         Merged the `debugger-dublin' branch.
99
100         * debug-mini.c
101         (mono_debugger_insert_method_breakpoint): New public method.
102         (mono_debugger_remove_method_breakpoint): Likewise.
103         (mono_debugger_check_breakpoints): New static method.
104         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
105
106         * debug-debugger.h (MonoDebuggerInfo):
107         Renamed (to keep backward compatibility in the vtable):
108         `insert_breakpoint' -> `old_insert_breakpoint'.
109         `remove_breakpoint' -> `old_remove_breakpoint'.
110         `create_string' -> `old_create_string'.
111         `lookup_class' -> `old_lookup_class'.
112         `lookup_type' -> removed; changed into a dummy field.
113         `lookup_assembly' -> `old_lookup_assembly'.
114         Added (same functionality, but different signature):
115         `create_string', `lookup_class', `lookup_assembly'
116         Added new:
117         `get_method_addr_or_bpt', `remove_method_breakpoint',
118         `runtime_class_init'.
119
120         * debug-debugger.c: Merged the `debugger-dublin' branch.
121
122 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
123
124         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
125         well.
126         (peephole_pass): Likewise.
127
128 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
129
130         * driver.c: hopefully make setaffinity work also for ancient
131         versions of linux.
132
133 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
134
135         * driver.c : win32 build fix.
136
137 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
138
139         * driver.c: check for the MONO_NO_SMP env var and bind to a single
140         processor if it is set.
141
142 2007-06-21  Martin Baulig  <martin@ximian.com>
143
144         * debug-mini.h: New file.
145
146         * debug-mini.c
147         (mono_debugger_insert_breakpoint_full): Moved here from
148         ../metadata/mono-debug-debugger.c.
149         (mono_debugger_remove_breakpoint): Likewise.
150         (mono_debugger_breakpoint_callback): Likewise.
151
152 2007-06-15  Raja R Harinath  <rharinath@novell.com>
153
154         * jit-icalls.c (mono_helper_compile_generic_method): Update to
155         changes in MonoGenericClass.
156
157 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
158
159         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
160
161 2007-06-14  Raja R Harinath  <rharinath@novell.com>
162
163         * jit-icalls.c (mono_helper_compile_generic_method): Update to
164         removal of MonoGenericMethod.
165
166 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
167
168         * mini-exceptions.c: hooks for the exception events profiling API.
169
170 2007-06-14  Randolph Chung  <tausq@debian.org>
171
172         * Makefile.ma: Add hppa target.
173         * mini-arch.h: Include mini-hppa.h
174         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
175         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
176         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
177
178 2007-06-14  Randolph Chung  <tausq@debian.org>
179
180         * inssel.brg: Add rules for "chained" compare-branch operations so that
181         a single compare op can affect multiple branches.  Adjust cost for
182         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
183         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
184         cost for some rules so that they can more easily be overridden by
185         per-arch rules (with fixes from lupus).
186         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
187
188 2007-06-13  Randolph Chung  <tausq@debian.org>
189
190         * mini-ops.h: Reorder branch ops so that they match the order of the
191         corresponding CEE_* ops.  The code expects them this way.
192         Add new ops for HPPA target.
193         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
194
195 2007-06-13  Randolph Chung  <tausq@debian.org>
196
197         * mini-exceptions.c: Handle cases where the stack grows towards
198         larger addresses.
199         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
200
201 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
202
203         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
204         counter.
205         * driver.c: explain where a non-matching corlib is found.
206
207 2007-06-13  Mark Probst  <mark.probst@gmail.com>
208
209         * mini.c (print_jit_stats): Output dynamic code allocation stats.
210
211 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
212
213         * mini-exceptions.c: Generate a method profile leave event during
214         an exception to ensure that the profiler gets notified.
215
216 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
217
218         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
219         branch.
220
221         * cpu-amd64.md: Add long_and/or/xor opcodes.
222
223 2007-06-06  Wade Berrier  <wberrier@novell.com>
224
225         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
226         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
227         length of instruction shr_imm (expected 8, got 10)
228
229 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
230
231         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
232
233 2007-06-06  Mark Probst  <mark.probst@gmail.com>
234
235         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
236         MonoInternalHashTable again (fixed bug in the internal hash table
237         code).
238
239 2007-06-06  Mark Probst  <mark.probst@gmail.com>
240
241         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
242         Have to figure out what makes it crash the SWF regression.
243
244 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
245
246         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
247
248 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
249
250         * mini.c: optimize out the type check when storing null in a
251         reference array.
252
253 2007-06-04  Mark Probst  <mark.probst@gmail.com>
254
255         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
256         MonoInternalHashTable.
257
258 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
259
260         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
261         signed integer methods.
262
263 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
264
265         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
266         permanently since the current approach doesn't work.
267
268 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
269
270         * inssel.brg (stmt): Only call delegate->invoke_impl if 
271         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
272
273 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
274
275         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
276         the sreg2==rdx case.
277         
278         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
279         account if it contains a rex prefix.
280         (peephole_pass): Handle OP_FMOVE as well.
281
282 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
283
284         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
285         as it causes regressions.
286
287 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
288
289         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
290         static case as well.
291
292         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
293
294         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
295         (mono_arch_get_this_arg_from_call): Ditto.
296
297         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
298
299         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
300         invoke_impl field.
301
302         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
303         (mono_arch_get_this_arg_from_call): Ditto.
304
305         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
306         
307         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
308         try to create optimized invoke code and use that for further invocations. 
309         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
310
311         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
312
313 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
314
315         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
316         sealed classes or methods.
317         *devirtualization.cs: tests for the new optimization
318
319 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
320
321         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
322         by the update_volatile () function.
323
324 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
325
326         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
327         require it.
328
329         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
330
331 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
332
333         * mini.c: Add configure checks for header files.
334         * mini-x86.c: Add configure checks for header files.
335         * trace.c: Add configure checks for header files.
336         * aot-runtime.c: Add configure checks for header files.
337         * aot-compiler.c: Add configure checks for header files.
338         * driver.c: Add configure checks for header files.
339         * mini-codegen.c: Add configure checks for header files.
340         
341         Code is contributed under MIT/X11 license.
342
343 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
344
345         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
346         icompare_imm -128 + op_iclt. Fixes #81703.
347
348 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
349
350         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
351
352 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
353
354         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
355         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
356         so that all isinst checks now use "interface_bitmap".
357
358 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
359
360         * cpu-amd64.md (jmp): Fix a warning.
361
362         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
363
364         * basic.cs: Add new regression test.
365
366         * basic.cs: Remove test which is now in basic-long.cs.
367
368         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
369
370         * basic-long.cs: Add new test.
371         
372 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
373
374         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
375
376 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
377
378         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
379
380         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
381         places.
382         
383         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
384         throwing code a bit.
385
386         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
387         the exception throwing code a bit.
388
389         * mini-x86.c (get_call_info): Allocate result from a mempool.
390
391 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
392
393         * aot-compiler.c (find_typespec_for_class): Fix the assert.
394
395         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
396
397         * mini.h (MonoCompile): Add 'token_info_hash' field.
398
399         * mini.c: Save token->method associations during compilation so the AOT 
400         compiler can use it.
401         
402         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
403         which reference generic classes and methods.
404
405 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
406
407         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
408
409         * aot-compiler.c (compile_method): Fix a typo in a comment.
410
411         * aot-runtime.c (decode_cached_class_info): Skip generic types.
412
413         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
414         everything generic.
415
416         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
417
418 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
419
420         * mini.h (MonoCompile): Add 'args' field.
421
422         * mini.c (mono_compile_create_vars): Store variables representing the arguments
423         into cfg->args.
424
425         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
426
427 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
428
429         * mini.c (mono_compile_get_interface_var): Remove this unused function.
430
431         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
432
433         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
434         opcodes for some opcodes.
435
436         * mini.h *.brg *.c: Use the new opcodes.
437
438 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
439
440         * mini.h: Bumped aot revision.
441
442         * inssel.brg: modified code generation of type checks for interfaces
443         to use the new "MonoClass.interface_bitmap" instead of the old
444         "MonoClass.interface_offsets".
445
446 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
447
448         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
449
450 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
451
452         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
453         64 bit platforms.
454
455 2007-04-27  Neale Ferguson <neale@sinenomine.net>
456
457         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
458
459 2007-04-27  Wade Berrier  <wberrier@novell.com>
460
461         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
462         mini.h) to fix build.
463
464 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
465
466         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
467         
468         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
469         causes the corlib unit tests to fail.
470
471 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
474
475         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
476
477         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
478         opcodes to the comparison relations.
479
480         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
481         opcodes to their types.
482         
483         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
484
485         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
486         it in cfg->arch.cinfo.
487
488         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
489
490         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
491         cfg->cil_offset_to_bb.
492
493 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
494
495         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
496         created becase of initlocals.
497
498 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
499
500         * mini-alpha.c cpu-alpha.md: More alpha port work from 
501         Sergey Tikhonov <tsv@solvo.ru>.
502
503 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
504
505         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
506
507 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
508
509         * cpu-s390.md (break): Correct the length of break instruction.
510
511 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
512
513         * mini.c: fix a couple of soft-float issues and comments.
514
515 2007-04-15  Miguel de Icaza  <miguel@novell.com>
516
517         * trace.c (is_filenamechar): - is also a filename char.
518
519 2007-04-15  Neale Ferguson <neale@sinenomine.net>
520
521         * mini-s390.c: Correct checking for enum type in return value processing.
522
523 2007-04-14  Raja R Harinath  <rharinath@novell.com>
524
525         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
526         (version.h): Makefile is in the build directory.
527
528 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
529
530         * mini-amd64.h: fix for assertion failure on Solaris/amd64
531
532 2007-04-11  Martin Baulig  <martin@ximian.com>
533
534         * mini.c (can_access_member): Fix handling of generic classes;
535         fixes #81259.
536
537 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
538
539         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
540
541 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
542
543         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
544
545 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
546
547         * mini-codegen.c: make sure the right spill amount is
548         used for fp or integer registers (fixes the float_sub_spill() on ppc).
549
550 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
551
552         * mini-ppc.c: fixes for the fp_branch_nan test.
553
554 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
555
556         * basic.cs: Comment out new test which still fails on ia64.
557
558 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
559
560         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
561
562 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
563
564         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
565
566 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
567
568         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
569         on 64 bit machines. Fixes part of #80738.
570
571         * basic.cs: Add regression test.
572
573 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
574
575         * inssel.brg basic.cs: Revert previous change to fix build.
576
577         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
578         platforms.
579         
580         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
581
582         * basic.cs: Add new regression test.
583
584 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
585
586         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
587         many arguments.
588
589 2007-03-16  Neale Ferguson <neale@sinenomine.net>
590
591         * cpu-s390x.md: Correct length of break instruction.
592
593 2007-03-16  Neale Ferguson <neale@sinenomine.net>
594
595         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
596         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
597
598 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
599
600         * *.c: Begin WIN64 port.
601         * mini.c:  Use correct register in profiler.
602         * mini-amd64.c: No inline assembly on Win64.
603         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
604         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
605         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
606         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
607         mono_arch_ip_from_context for Win64.
608         
609         Contributed under MIT/X11 license.
610
611 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
612
613         * exceptions-amd64.c (seh_handler): Ditto.
614
615         * exceptions-x86.c (seh_handler): Fix a memory leak.
616
617 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
618
619         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
620         mini-s390x.c: fixed peephole optimizations to deal
621         correctly with 1 and 2 byte reload avoidance.
622
623 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
624
625         * cpu-s390.md, cpu-s390x.md: update localloc length.
626
627 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
628
629         * cpu-g4.md: added missing descriptions.
630
631 2007-03-14  Miguel de Icaza  <miguel@novell.com>
632
633         *  Makefile.am: Add support so the tail tests are not executed on
634         PowerPC as that is a known limitation of the PowerPC port.
635
636 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
637
638         * runmdesc.bat:  Move to msvc directory.
639         
640 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
641
642         * runmdesc.bat:  Run executable that was produced by the current
643         target and sent via an argument.
644         
645 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
646
647         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
648         #81102.
649
650         * generics.2.cs: Add regression test.
651
652 2007-03-09  Wade berrier  <wberrier@novell.com>
653
654         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
655
656 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
657
658         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
659         AOT code depends on this.
660
661 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
662
663         * mini.c: more precise tracking of types in the eval stack
664         (part of fix for bug #81044).
665
666 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
667
668         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
669
670         * aot-compiler.c (encode_patch): Remove an obsolete comment.
671
672 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
673
674         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
675
676         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
677
678 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
679
680         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
681         a pointer on 64 bit systems. Fixes #80190.
682
683         * iltests.il: Add new regression test.
684
685 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
686
687         * mini.c: inline a constant for Environment.IsRunningOnWindows.
688
689 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
690
691         * trace.c: Remove an erroneous alignemnt check when tracing.
692           Fixes --trace on OSX86.
693
694 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
695
696         * mini-$(arch).h: initialize SP in context for all the archs.
697
698 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
699
700         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
701         regressions in the thread tests.
702
703 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
704
705         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
706         - fixed implementation of LOCALLOC opcode
707         - implemented non-un compare for floats
708         - code cleanup
709         - implementation of FDIV and CKFINITE opcodes
710         - fixes for latest mono updates
711         - additional arch opcodes
712
713 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
714
715         * Makefile.am: simplify and merge rules for cross-compilation.
716
717 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
718
719         * local-propagation.c: Actually *apply* the fix for bug 80591...
720
721 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
722
723         * mini-exceptions.c: backuot part of the last change
724         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
725
726 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
727         * inssel.brg: Fix bug 59286.
728
729
730 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
731
732         * mini-exceptions.c: patch from Zoltan to correctly check for
733         stack boundaries (using the stack register, not the frame register),
734         fixes bugs #80724, #79717.
735
736 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
737
738         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
739         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
740
741         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
742         presence of frame pointer elimination.
743
744 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
745         
746         * mini-x86.h: NetBSD UCONTEX_REG defines.
747
748 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
749
750         * inssel-amd64.brg: Fix amd64 build.
751
752 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
753
754         * mini.h: remove extern to workaround what looks likes gcc bug 26905
755         on amd64.
756
757 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
758
759         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
760         ends.
761
762         * mini-<ARCH>.c: Use mono_is_regsize_var ().
763
764 2007-01-30 Mark Mason <mason@broadcom.com>
765
766            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
767            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
768            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
769            beginning support for CEE_JMP [not quite working yet]
770            * tramp-mips.c: LMF handling now works
771         
772 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
773
774         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
775
776         * mini.h (NULLIFY_INS): New macro.
777
778 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
779
780         * mini.c: statistical profiler fix for windows, patch
781         from Tor Lillqvist (tml@novell.com).
782
783 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
784         * local-propagation.c: Fix bug 80591.
785
786 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
787
788         * Makefile.am: put back the --export-dynamic option as with
789         the previous gmodule flags (thanks to Robert Jordan).
790
791 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
792
793         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
794
795         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
796         simplify and speed up the local register allocator. Also rename some fields
797         like iassign->vassign.
798         
799         * regalloc.c: Remove some functions which are no longer used since their
800         inlined version is in mini-codegen.c.
801         
802         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
803
804         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
805
806 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
807
808         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
809         narrowing. Fixes #80622.
810
811         * iltests.il: Add new regresssion test. 
812
813 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
814
815         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
816         debug-debugger.c, debug-debugger.h: warning fixes.
817         * driver.c: updated copyright year and made it fit in one line.
818
819 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
820
821         * aot-runtime.c: updated to use mono-dl instead of gmodule.
822
823 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
824
825         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
826
827         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
828
829         * iltests.il: Add new test for bug #80507.
830
831 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
832
833         * mini-arm.h: use soft-float also on vfp for now.
834
835 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
836
837         * mini.c: fix some more soft-float issues.
838
839 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
840
841         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
842
843 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
844         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
845         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
846         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
847
848 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
849
850         * mini-arm.c: typo fix.
851
852 2007-01-23  Neale Ferguson <neale@sinenomine.net>
853
854         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
855
856 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
857
858         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
859         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
860
861         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
862
863         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
864
865         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
866         
867         * inssel.brg: Fix a warning.
868
869         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
870
871         * abcremoval.c ssa.c ssapre.c: Update after this change.
872         
873         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
874
875         * dominators.c (df_set): Use mono_bitset_union_fast.    
876
877 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
878
879         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
880         mini-codegen.c: reduce relocations and memory usage for the cpu
881         description.
882
883 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
886
887         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
888         to reduce their size.
889
890 2007-01-19 Mark Mason <mason@broadcom.com>
891
892         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
893         * mini-mips.c: more configuration macros, support long conditional branches, additional
894         asserts, fix epilog instrumentation.
895         * mini-mips.h: use standard stack walk
896         * cpu-mips.md: increase size of div, rem and conditional branches
897         
898 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
899
900         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
901         to cpu spec data.
902
903 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
904
905         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
906         (compile_method): Ditto.
907
908         * aot-runtime.c (decode_klass_info): Ditto.
909
910         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
911         needed by the code generated by inssel.brg. Also fix a warning.
912
913 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
914
915         * mini.c: deal with enums that become genericinsts by
916         being nested in a generic class (bug #79956).
917
918 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
919
920         * mini.c: match the generic definition to check for
921         private access with generic types (bug #78431).
922
923 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
924
925         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
926         to make life easier for people cross-compiling that insist on not
927         using scratchbox.
928
929 2007-01-17 Mark Mason <mason@broadcom.com>
930
931         * inssel-long.brg: patch to deal with mips missing flags
932         * inssel-long32-mips.brg: implement overflow checks
933         * insset-mips.brg: implement overflow checks
934         * mini-mips.h: implement conditional exception handling
935         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
936           Remove unused code, minor cleanups.
937         * exceptions-mips.c: minor cleanups
938         * mini-ops.h: add mips conditional exception ops
939         * cpu-mips.md: add mips conditional exception ops
940
941         
942 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
943
944         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
945         to deal with mips missing of flags.
946
947 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
948
949         * exceptions-ppc.c: execute fault handlers.
950
951 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
952
953         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
954
955 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
956
957         * mini.c: handle also floating point values in initialize_array.
958
959 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
960
961         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
962         array initialization and make it conditional on the intrins option.
963
964 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
965
966         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
967         relocations and put the patch info names close to the enum definition.
968
969 2007-01-15 Mark Mason <mason@broadcom.com>
970
971         * basic.cs, exceptions.cs: break up large tests to increase debugability.
972
973 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
974
975         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
976
977 2007-01-12  Raja R Harinath  <rharinath@novell.com>
978
979         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
980
981 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
982
983         * Makefile.am: distribute the mips sources.
984
985 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
986
987         * mini-codegen.h: handle bug #80489 here, by excluding ecx
988         directly.
989
990 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
991
992         * cpu-x86.md: back out for now as this triggers other regressions.
993
994 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
995
996         * cpu-x86.md: force src1 and dest regpair for long shift instructions
997         to eax:edx, so ecx can't get allocated to them (bug #80489).
998
999 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
1000
1001         * mini.c, mini-exceptions.c: enabled running fault handlers
1002         (bug #80469).
1003
1004 2007-01-03  Miguel de Icaza  <miguel@novell.com>
1005
1006         * driver.c: If nothing fail, do not use the string "failed",
1007         because it makes it very annoying to view test result logs on the
1008         web. 
1009
1010 2006-12-30  Miguel de Icaza  <miguel@novell.com>
1011
1012         * debug-debugger.c (mono_debugger_main): Rename "main" to
1013         "main_method" to prevent a warning.
1014
1015         Remove a warning for unused field.
1016
1017 2006-12-28  Martin Baulig  <martin@ximian.com>
1018
1019         * debug-debugger.c
1020         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
1021
1022 2006-12-22  Martin Baulig  <martin@ximian.com>
1023
1024         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
1025         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
1026         seperate `.mdb_debug_info' section, so we can access it from the
1027         debugger even if the binary is stripped.
1028
1029         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
1030         from the `.mdb_debug_info' here to prevent the linker from
1031         removing that section.
1032
1033         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
1034         mdb-debug-info64.s.
1035
1036 2006-12-19  Robert Jordan  <robertj@gmx.net>
1037
1038         * mini-x86: enable the code to return small structures in
1039         registers for FreeBSD as well. Fixes bug #80278.
1040         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
1041
1042 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1043
1044         * mini-x86.c: align the stack when calling the profiler
1045         function instrumenting the prolog (on OSX).
1046
1047 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
1048
1049         * mini.c: emit a break opcode where Debugger.Break () is called.
1050
1051 2006-12-13  Miguel de Icaza  <miguel@novell.com>
1052
1053         * mini.c (mono_method_to_ir): Provide useful information on this
1054         assert, to prevent others from debugging like I did.
1055
1056 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
1057
1058         * mini.c: enable code which was incorrectly commented
1059         (bug #80235).
1060
1061 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
1062
1063         * mini-x86.c: enable on OSX, too, the code to return small
1064         structures in registers.
1065
1066 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
1067
1068         * mini-x86.c: remove the use of the dynamic code manager here, too.
1069
1070 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
1071
1072         * mini.h, debug-debugger.c, tramp-*.c: fixed 
1073         mono_debugger_create_notification_function() to use
1074         mono_global_codeman_reserve () instead of a dynamic code manager.
1075
1076 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
1077
1078         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
1079         ves_array_element_address() jit icall and use a generated
1080         managed method instead (which is about 4 times faster for a rank 3
1081         array access).
1082
1083 2006-11-29  Mark Mason  <mason@broadcom.com>
1084
1085         * basic-calls.cs: additional tests for passing
1086         structures as function arguments.
1087
1088 2006-11-29  Mark Mason  <mason@broadcom.com>
1089
1090         * mini-mips.h: disable custom exception handling
1091         * mini-mips.c: throw/rethrow should use jalr to call
1092         exception stubs.  Fixed bug with passing structures
1093         by value. More support for tracing floating point
1094         functions.
1095
1096 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1097
1098         * mini.c: fixed typo in the soft-float ldind.r4 handling
1099         (bug #80086).
1100
1101 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
1102
1103         * mini.c, mini.h, driver.c: added --runtime command line
1104         option to select a different runtime than the autodetected one.
1105         * jit.h: added API for embedders to initialize with a specific
1106         runtime version.
1107
1108 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
1109
1110         * mini.c: handle also boxing of r4 values (bug #80024).
1111
1112 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
1113
1114         * mini-ppc.c: force indirect calls until we reserve
1115         enough address space for all the generated code.
1116
1117 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
1118
1119         * exceptions-arm.c: workaround bugs in the libc definition
1120         of struct ucontext.
1121
1122 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
1123
1124         * inssel.brg: fixes from me and Mark Mason.
1125
1126 2006-11-23  Dick Porter  <dick@ximian.com>
1127
1128         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
1129         semaphore display now we've fixed the initial value
1130
1131 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
1132
1133         * inssel.brg: partially revert the last change to fix the build.
1134
1135 2006-11-21  Mark Mason  <mason@broadcom.com>
1136
1137         * inssel.brg: Add and use compare-and-branch macros to support
1138         architectures that do not have condition code registers (ie. MIPS).
1139         * *-mips.{c,brg,md}: Fix copyright statements
1140
1141 2006-11-20  Mark Mason  <mason@broadcom.com>
1142
1143         * Makefile.am: remove mini-codegen.c from list of MIPS sources
1144         * mini.c: Allow GET_CONTEXT to be specified by the arch port
1145         * mini.h: Added declaration for mono_print_ins()
1146         * mini-codegen.c: added ins_spec initializer for MIPS
1147         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
1148         vreg to be virtual and hreg to be non-virtual.
1149         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
1150         is not yet working/implemented correctly.
1151         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
1152         non-static, fixup calls to print_ins() from other parts in the file.
1153
1154 2006-11-20  Mark Mason  <mason@broadcom.com>
1155
1156         * basic-calls.cs: added tests for passing structures as arguments
1157         to calls.
1158
1159 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
1160
1161         * inssel-long32.brg: optimize signed division by power of two.
1162
1163 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
1164
1165         * mini-arm.c: added support for interworking with thumb code
1166         (mono must be still be built using the ARM instruction encoding).
1167
1168 2006-11-19  Miguel de Icaza  <miguel@novell.com>
1169
1170         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
1171         verifier has different rules for it.   Fixes a few verifier issues
1172         in the test suite.
1173
1174         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
1175         at the end, so people know what happened.
1176
1177 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
1178
1179         * brach-opts.c: in optimize_exception_target() make sure we
1180         are in a catch clause (fixes bug #79871).
1181
1182 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
1183
1184         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
1185         more soft-float support fixes.
1186
1187 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
1188
1189         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
1190         that are passed half on the stack and half in registers.
1191
1192 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
1193
1194         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
1195         more mips integration work from Mark E Mason 
1196         <mark.e.mason@broadcom.com>.
1197
1198 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
1199
1200         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
1201         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
1202         tramp-mips.c: added sources for the mips port, not
1203         integrated in the build yet. Contributed by
1204         Mark E Mason <mark.e.mason@broadcom.com>.
1205
1206 2006-11-14  Neale Ferguson <neale@sinenomine.net>
1207
1208         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
1209
1210 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
1211
1212         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
1213         put the soft-float rules in its own file since it seems to
1214         break s390 compilation.
1215
1216 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
1217
1218         * mini-arm.c: fixed wrnings.
1219
1220 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
1221
1222         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
1223         inssel-arm.brg: ARM support for soft-float.
1224
1225 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
1226
1227         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
1228         loads and stores of 32 bit fp values.
1229
1230 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
1233
1234         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
1235         works. Fixes #79852 and #79463.
1236
1237 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
1238
1239         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
1240         more soft-float support WIP and fixes.
1241
1242 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
1243
1244         * mini-arm.c: some VFP updates.
1245
1246 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
1247
1248         * mini-exceptions.c: 0 is a valid local var offset in some
1249         architectures, don't assert (bug #78508).
1250
1251 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
1252
1253         * exceptions-arm.c: fixed off by one error in stack walk code.
1254
1255 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
1256
1257         * mini.h, mini.c: more precise tracking of type load exceptions.
1258
1259 2006-11-03  Robert Jordan  <robertj@gmx.net>
1260
1261         * Makefile.am: [WIN32] Add monow.exe target.
1262         * driver.c: [WIN32] Don't detach the console when debugging.
1263         Fixes bug #79797.
1264         
1265 2006-10-30  Miguel de Icaza  <miguel@novell.com>
1266
1267         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
1268
1269 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * aot-compiler.c (emit_method_info): Add a case missed earlier.
1272
1273         * driver.c (mini_regression): Fix --regression with AOT.
1274
1275         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
1276
1277 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
1280
1281         * mini-sparc.h: Don't use sigaction on sparc/linux.
1282
1283         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
1284
1285         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
1286
1287         * mini-exceptions.c: Add proper include files for getpid ().
1288
1289 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
1292         address instead of a MonoJitInfo* to avoid decoding the exception info for the
1293         method.
1294
1295         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
1296         name cache to reduce its size.
1297
1298         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
1299
1300 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
1301
1302         * mini-x86.c: Save/restore the current LMF structure more efficiently using
1303         the mono_lmf TLS variable.
1304
1305         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
1306         trampoline lmf frames.  
1307
1308         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
1309
1310 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
1313         the mono_lmf TLS variable.
1314
1315         * mini-exceptions.c: Access the LMF structure through accessors.
1316
1317         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
1318         variable instead of in jit_tls->lmf.
1319
1320         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
1321         
1322         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
1323         trampoline lmf frames.
1324
1325         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
1326
1327 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
1328
1329        * mini.c trace.c mini-x86.c: Revert these too.
1330         
1331        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
1332        signature change.
1333
1334 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
1335
1336         * genmdesc.c: removed now dead code.
1337
1338 2006-10-09  Robert Jordan <robertj@gmx.net>
1339
1340         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
1341
1342 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
1343
1344         * mini.h: do not leave gaps in the opcode values.
1345
1346 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
1347
1348         * jit-icalls.h: flag functions as internal here, too.
1349
1350 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
1351
1352         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
1353         functions with the internal attribute.
1354
1355 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
1356
1357         * aot-compiler.c: fclose the file descriptor in the profile read loop.
1358
1359 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
1360
1361         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
1362         for soft-float.
1363
1364 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
1367         tail calls as on other platforms.
1368
1369         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
1370
1371         * iltests.il: Add a few tailcall tests.
1372
1373 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1374
1375         * driver.c: fix loop for old compilers (bug #79521).
1376
1377 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
1380
1381         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
1382
1383         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
1384         metadata without any code.
1385
1386         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
1387         more precise debugging information using gdb.
1388
1389 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
1390
1391         * inssel-ia64.brg: Make the helper methods static.
1392
1393 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1394
1395         * inssel-x86.brg: make the helper methods static.
1396
1397 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
1398
1399         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
1400
1401 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1402
1403         * mini.c: updates for monoburg changes.
1404         * inssel.brg: make a few helper functions static as they should.
1405
1406 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * Makefile.am: Move mini-codegen.c to common_sources.
1409
1410 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1411
1412         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
1413         instructions.
1414         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
1415         mini-ppc.h: port to use the common local register allocator.
1416
1417 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * mini.h: Remove the comment too then.
1420
1421 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
1422
1423         * mini.h: put back backend.data which is to be used shortly and
1424         doesn't increase the size of MonoInst. If any 64 bit arch aligned
1425         pointers on 4 byte boundaries it'd have much bigger issues running
1426         and you can ifdef it out anyway.
1427
1428 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
1431         MonoInst size by 4 bytes on 64 bit machines.
1432
1433 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
1434
1435         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
1436         replacement with more meaningful field names. Arch maintainers, please
1437         check the assigned names are good enough for your arch.
1438
1439 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
1442         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
1443
1444 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
1445
1446         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
1447         relocations and memory requirements, put the optimization flags
1448         definitions in their own file.
1449
1450 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
1453
1454         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
1455
1456 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
1457
1458         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
1459
1460 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
1461
1462         * inssel.brg: use the correct function to get the size of an item
1463         in an array, given an element class.
1464         * aot-compiler.c: do not access class->class_size directly.
1465
1466 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
1467
1468         * mini.h, debug-mini.c: added a debugging function to print
1469         info about local variables and arguments in a jitted method.
1470
1471 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1474
1475         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
1476
1477 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1478
1479         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
1480         inner and outer loops when passing vtypes.
1481
1482 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
1483
1484         * mini-ppc.c: take into account the cpu errata for cache flushing
1485         which caused some random errors (bug #79381).
1486
1487 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
1490         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
1491
1492 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
1495         loaded.
1496
1497         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
1498         freebsd ports tree.
1499
1500         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
1501         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
1502
1503         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
1504         displacement.
1505
1506 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
1509
1510 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
1513         macro does not have to be changed during debugging.
1514
1515         * 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>.
1516
1517         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
1518
1519         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
1520         
1521         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
1522         MONO_ARCH_NO_EMULATE_MUL is defined.
1523
1524         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
1525
1526         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
1527
1528         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
1529
1530         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
1531         
1532 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
1533
1534         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
1535         stuff to mini-exceptions.c where it is used.
1536
1537         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
1538         setup code, the real one is in mini-exceptions.c.
1539
1540         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
1541         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
1542         some changes from the freebsd ports tree.
1543
1544         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
1545         constants.
1546         
1547         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
1548
1549 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
1550
1551         * mini.c: on Linux, check for /proc to be mounted
1552         (bug# 79351, novell bug#201204).
1553
1554 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
1555
1556         * mini.c: handle cases where pthread_attr_getstack() behaves
1557         incorrectly (bug #78096).
1558
1559 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
1560
1561         * mini-arm.c: support larger stack frames (bug #79272).
1562
1563 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
1566
1567         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
1568         tokens.
1569
1570         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
1571         mono_class_from_name () to find a class from its name.
1572
1573         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
1574
1575 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
1578
1579 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
1580
1581         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
1582
1583 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
1586         callinfo->trampoline.
1587
1588         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
1589         fixes #79271.
1590         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
1591         future.
1592
1593 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
1596
1597 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
1600         stats.method_trampolines, it is already done by the generic trampoline code.
1601
1602         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
1603         
1604 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
1605
1606         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
1607
1608         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
1609
1610         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
1611
1612         * mini.c (print_jit_stats): Print mscorlib mempool size too.
1613         
1614         * mini.c (print_jit_stats): Print new stats.
1615
1616         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1617
1618 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
1619
1620         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
1621         Address on two dimensional arrays. Fixes #78729.
1622
1623         * mini.h (MonoCompile): Add a 'skip_visibility' field.
1624
1625         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
1626         a method.
1627
1628         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
1629
1630         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
1631         #79130.
1632         
1633         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
1634         a race condition.
1635         (mini_get_ldelema_ins): Ditto.
1636
1637 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
1640         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
1641         Fixes #79213.
1642
1643 2006-08-29 Neale Ferguson <neale@sinenomine.net>
1644
1645         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
1646         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
1647
1648         * exceptions-s390x.c: Cosmetic change.
1649
1650         * tramp-s390.c: Fix warning.
1651
1652         * cpu-s390.md: Correct length of mul_imm.
1653
1654 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
1655
1656         * aot-compiler.c: added binary writer with ELF backend
1657         implementation (only on Linux/x86 for now).
1658
1659 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * Makefile.am: Don't run net 2.0 AOT tests.
1662
1663         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
1664         (mono_compile_assembly): Skip net 2.0 assemblies as well.
1665
1666         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
1667
1668 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
1669
1670         * aot-compiler.c: simplified and refactored the asm-writing code
1671         to allow different backends.
1672
1673 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1676
1677         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
1678         little. Share patches of type TYPE_FROM_HANDLE as well.
1679
1680         * mini.c (mono_patch_info_equal): New helper function.
1681         (mono_patch_info_hash): Ditto.
1682
1683         * aot-compiler.c (emit_method_code): Fix s390 build.
1684
1685         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
1686         is not handled because it is stored as a flag and not as a type ctor. Fixes
1687         #79016.
1688
1689 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * aot-compiler.c: Fix computation of GOT slot statistics.
1692         
1693         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
1694         Also remove support for not PIC AOT.
1695
1696         * mini.h: Bump AOT file format version.
1697
1698         * objects.cs: Add a test for #78990.
1699
1700         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
1701         (peter.dettman@iinet.net.au). Fixes #79087.
1702
1703         * basic-long.cs: Add a test for the above.
1704
1705 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
1708         
1709         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
1710         code somewhat.
1711
1712 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
1715         exceptions.
1716
1717 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
1718
1719         * mini.c: Don't verify COM proxy invoke calls
1720         
1721
1722 2006-08-10  Dick Porter  <dick@ximian.com>
1723
1724         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
1725         which process is holding semaphores locked.
1726
1727 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * mini-ia64.c mini-amd64.c: Fix #79027.
1730
1731         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
1732
1733         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
1734
1735         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
1736         implicit arguments in a vararg call. Fixes #79027.
1737
1738 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
1739
1740         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
1741         (mono_get_array_new_va_signature): Ditto.
1742
1743 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * aot-runtime.c: Call init_plt lazily.
1746
1747         * inssel-long.brg: Fix unsigned long->int conversion.
1748
1749         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
1750
1751         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
1752         that most data is now in the .rss/.data section.
1753
1754 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
1755
1756         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
1757
1758         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
1759
1760         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
1761
1762         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
1763
1764         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
1765         virtual call. Fixes #79010.
1766
1767         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
1768         and use the result as the this argument in the real call.
1769
1770         * generics.2.cs: Add a new test for #79010.
1771         
1772 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
1773
1774         * mini-x86.c: Fix a warning.
1775
1776         * aot-compiler.c: Add a bunch of statistics.
1777
1778         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
1779
1780 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
1783
1784 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * 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>.
1787
1788 2006-07-13  Miguel de Icaza  <miguel@novell.com>
1789
1790         * mini.c (mono_method_to_ir): Obtain the original method in the
1791         CIL stream and use this to perform validation.
1792
1793         Fixed: #78816
1794
1795 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
1798         (mono_arch_call_opcode): Ditto.
1799
1800         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
1801         #78826.
1802
1803         * mini.c (mono_patch_info_dup_mp): New helper function.
1804         
1805         * aot-compiler.c (compile_method): Fix some of the memory allocated during
1806         compilation. Fixes #78827.
1807
1808 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
1809
1810         * declsec.c: Use original security informations for
1811           MONO_WRAPPER_MANAGED_TO_MANAGED.
1812
1813 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
1814
1815         * mini.c: Allow Com Interop methods/classes and
1816         don't verify COM wrapper calls
1817         
1818
1819 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
1820
1821         * inssel-long32.brg: Fix long->i4 checked conversion.
1822
1823         * exceptions.cs: Add a test for the above.
1824
1825 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
1828
1829         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
1830         leaks.
1831
1832         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
1833         #78775.
1834
1835 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
1836
1837         * mini.c: Fix solaris/x86 exception handling.
1838
1839         * Makefile.am: Get rid of $(ICU_LIBS).
1840
1841 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
1844         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
1845         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
1846
1847         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
1848
1849         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
1850         this function causes a SIGSEGV.
1851
1852 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini.c: Remove unused solaris/x86 includes.
1855
1856 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
1859
1860 2006-06-20  Jb Evain  <jbevain@gmail.com>
1861
1862         * cpu-g4.md: fix max length of start_handler instruction.
1863
1864 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
1865         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
1866
1867 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
1868         * ssa.c: Fixed bug 78653 for SSA based deadce.
1869         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
1870         MonoInst.flags, used in SSA based deadce.
1871         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
1872         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
1873
1874 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
1875
1876         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
1877         it can end up using non executable memory on ppc64 systems
1878         running ppc32 userspace (fix from Johannes Berg).
1879
1880 2006-06-14  Dick Porter  <dick@ximian.com>
1881
1882         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
1883         4.1.1
1884
1885 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
1886         * mini.c: Made so that inline is locally disabled if it would
1887         trigger a .cctor, because too many apps depend on this behavior
1888         (which seems to be also the one of the MS CLR).
1889
1890 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
1893         No idea why this worked before.
1894
1895         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
1896         which branch to outer exception clauses since they could skip the
1897         inner finally clauses. Fixes #78633.
1898
1899         * exceptions.cs: Add a test for the above.
1900
1901         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
1902         Fixes #78629.
1903
1904         * iltests.il: Add a test for the above.
1905
1906 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
1909         after the end of a try bblock, to prevent asserts in mini_method_compile ().
1910
1911         * iltests.il: Add a test for the above.
1912
1913 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
1916         
1917         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
1918         methods as instrinsics.
1919
1920 2006-06-09  Wade Berrier <wberrier@novell.com>
1921
1922         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
1923         (simple-cee-ops.h ssapre-mini-ops.h)
1924
1925 2006-06-09  Neale Ferguson <neale@sinenomine.net>
1926
1927         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
1928         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
1929         instruction).
1930         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
1931         * cpu-s390x.md: Fix max. length values for a couple of instructions.
1932
1933 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
1934
1935         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
1936
1937 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
1938
1939         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
1940         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
1941         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
1942         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
1943         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
1944         of opcodes, so that bug 78549 should not happen again.
1945         * ssapre.c: Updated to use the renamed files.
1946
1947 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
1950         in OP_ATOMIC_EXCHANGE_I4.
1951
1952 2006-06-07  Wade Berrier <wberrier@novell.com>
1953
1954         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
1955         in mono_debugger_create_notification_function)
1956
1957 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
1958
1959         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
1960         
1961         * mini.c (type_from_stack_type): Disable some changes which do not
1962         seem to work.
1963
1964         * driver.c: Reenable opts.
1965
1966         * mini.h (MonoStackSlot): New structure to keep track of the verification state
1967         of the evaluation stack.
1968         
1969         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
1970         evaluation stack trace at entry to the bblock.
1971
1972         * mini.c (merge_stacks): New function to perform verification of stack merges.
1973         Turned off by default.
1974
1975         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
1976         STACK_MP.
1977         
1978 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
1979
1980         * local-propagation.c: Fixed bug 78549.
1981
1982 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
1983
1984         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
1985
1986 2006-06-02  Miguel de Icaza  <miguel@novell.com>
1987
1988         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
1989         tramp-arm.c, tramp-ia64.c
1990         (mono_debugger_create_notification_function): Update signature to
1991         new signature and use new protocol for creating the notification
1992         function.  
1993
1994         Should fix the build.
1995
1996 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
1997
1998         * exceptions-ppc.c (mono_jit_walk_stack)
1999         (ves_icall_get_frame_info): Fix the build
2000
2001 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
2004
2005 2006-05-31  Raja R Harinath  <rharinath@novell.com>
2006
2007         * il2tests.2.il: New file for generics CIL tests.  Add test for
2008         #78019.
2009         * Makefile.am: Update.
2010
2011         Fix #78019
2012         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
2013         to nullable types.
2014
2015 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
2016
2017         * aliasing.c: Fixed bug 78311.
2018
2019 2006-05-29  Martin Baulig  <martin@ximian.com>
2020
2021         * mini-exceptions.c (mono_find_jit_info): When computing the
2022         native offset, check whether we're actually inside the method's
2023         code; call mono_debug_print_stack_frame() to format the frame.
2024         (ves_icall_System_Exception_get_trace): Call
2025         mono_debug_print_stack_frame() to format the stack frame.
2026         (ves_icall_get_trace): Update to the new debugging API.
2027         (mono_jit_walk_stack_from_ctx): Likewise.
2028         (ves_icall_get_frame_info): Likewise.
2029
2030         * mini.c (get_method_from_ip): Use the new debugging API.
2031         (mono_print_method_from_ip): Likewise.
2032
2033         * exceptions-ppc.c
2034         (mono_jit_walk_stack): Use the new debugging API.
2035         (ves_icall_get_frame_info): Likewise.   
2036
2037 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
2040
2041 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
2042
2043         * mini.c: Added "limitator" to inline for debugging.
2044
2045 2006-05-24  Martin Baulig  <martin@ximian.com>
2046
2047         * debug-debugger.c (mono_debugger_init): Create a private,
2048         malloc()-based code manager for the notification function and
2049         intentionally leak it on exit.  This fixes the crash-on-exit race
2050         condition.
2051
2052         * tramp-amd64.c
2053         (mono_debugger_create_notification_function): Added
2054         `MonoCodeManager *' argument.
2055
2056         * tramp-x86.c
2057         (mono_debugger_create_notification_function): Added
2058         `MonoCodeManager *' argument.
2059
2060 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
2061
2062         * aliasing.c: Fixed 64 bit issue.
2063         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
2064         default since all known bugs are fixed (one more time!).
2065
2066 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
2067
2068         * mini.c: write barrier support.
2069
2070 2006-05-23  Martin Baulig  <martin@ximian.com>
2071
2072         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
2073         check at the top of the file.
2074
2075 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
2076
2077         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
2078         reverting changes without reason and without changelog entries.
2079
2080 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
2083         to a few opcodes. Fixes #78439.
2084
2085         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
2086         consistency with other archs.
2087
2088         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
2089
2090 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
2091
2092         * debug-debugger.c: fix the build.
2093
2094 2006-05-17  Martin Baulig  <martin@ximian.com>
2095
2096         * debug-debugger.c
2097         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
2098         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
2099         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
2100         (debugger_attach): Call GC_mono_debugger_add_all_threads().
2101
2102 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
2105
2106 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
2109         MONO_TYPE_GENERICINST.
2110         
2111         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
2112         MONO_TYPE_GENERICINST.
2113
2114 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
2117         #78325.
2118
2119 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
2122         mempool.
2123         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
2124
2125 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
2128         mono_trace_cleanup ().
2129
2130         * iltests.il: Fix problem with the newly added test.
2131
2132         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
2133         due to register constraints, free up the previous hreg. Fixes #78314.
2134
2135         * iltests.il: Add new test for #78314.  
2136
2137         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
2138         Interlocked.Add. Fixes #78312.
2139
2140         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
2141         
2142 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * inssel.brg (mini_emit_virtual_call): Fix a warning.
2145
2146 2006-05-05  Martin Baulig  <martin@ximian.com>
2147
2148         * debug-mini.c (mono_debug_open_block): New method.
2149
2150         * mini-amd64.c
2151         (mono_arch_output_basic_block): Call mono_debug_open_block() at
2152         the beginning of each basic block.
2153
2154         * mini-x86.c
2155         (mono_arch_output_basic_block): Call mono_debug_open_block() at
2156         the beginning of each basic block.
2157
2158 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
2159
2160         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
2161         default until I understand why they break the build on amd64.
2162
2163 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * mini.c (mini_cleanup): Call mono_cleanup ().
2166
2167         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
2168         errors.
2169
2170 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
2171
2172         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
2173         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
2174         default since all known bugs are fixed, and I cannot reproduce bug
2175         77944... I'm asking Matt Hargett to test again after this commit.
2176
2177 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
2178
2179         * mini-codegen.c: Fixed typo that thrashed inline.
2180
2181 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * dominators.c (compute_dominators): Avoid using a worklist since
2184         it is not correct in some cases. Instead, iterate over all bblocks as
2185         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
2186
2187 2006-04-28  Miguel de Icaza  <miguel@novell.com>
2188
2189         * mini.c (mono_jit_compile_method_inner): Use
2190         mono_prepare_exception_from_error that resets the value
2191         internally.
2192
2193 2006-04-27  Miguel de Icaza  <miguel@novell.com>
2194
2195         * mini.c: Move the mini_loader_error_to_exception to metadata. 
2196         
2197 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
2198
2199         * aliasing.c: Fixed bug 78210.
2200
2201 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
2202
2203         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
2204         default until all their problems (or the ones they trigger) are fixed.
2205
2206 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
2209         
2210         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
2211         as loaded only after resolving patches since that could invoke the same method.
2212
2213         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
2214
2215         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
2216         functions.
2217
2218         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
2219         AOT loader.
2220
2221         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
2222         stack.
2223
2224         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
2225         made from AOT code through the PLT table.
2226
2227         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
2228         holding the plt offset when a call is made to the aot plt trampoline.
2229         
2230 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
2233         amd64 AOT support.
2234
2235         * Makefile.am (common_sources): Fix build breakage.
2236
2237         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
2238         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
2239         intra-assembly calls if possible.
2240         
2241         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
2242
2243         * mini-trampolines.c: Handle PLT entries.
2244
2245         * mini.c: Avoid creating a GOT var for calls.
2246
2247         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
2248         from mscorlib code.
2249
2250         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
2251         from mscorlib code.
2252
2253         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
2254         AOT code.       
2255
2256         * mini.h: Bump AOT file format version.
2257         
2258         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
2259         covers more cases.
2260
2261 2006-04-25  Martin Baulig  <martin@ximian.com>
2262
2263         * driver.c: Disable copyprop, consprop and inline when running
2264         inside the debugger.
2265
2266 2006-04-25  Martin Baulig  <martin@ximian.com>
2267
2268         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
2269         with `get_current_thread' and added `detach'.
2270         (MonoDebuggerMetadataInfo): Added `thread_size',
2271         `thread_tid_offset', `thread_stack_ptr_offset' and
2272         `thread_end_stack_offset'.
2273
2274 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
2277         aot-runtime.c.
2278
2279         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
2280         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
2281
2282         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
2283
2284         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
2285
2286         * aot.c: Add support for ADJUSTED_IID.  
2287
2288 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
2289
2290         * aot.c (emit_method_order): Don't align method_order_end.
2291
2292         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
2293         the interface ID changes.
2294
2295 2006-04-21  Dick Porter  <dick@ximian.com>
2296
2297         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
2298         cleaning up a thread.  Fixes the new part of bug 77470.
2299
2300 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
2301
2302         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
2303         to managed wrapper.
2304                      
2305 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
2308         
2309         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
2310         SIGSEGV. Fixes #78072.
2311
2312         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
2313         unregister our SIGABRT handler.
2314
2315 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
2316
2317         * mini.c: Disabled inline where it can alter the call stack in a
2318         way visible from managed code.
2319         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
2320         default.
2321
2322 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
2325         on other platforms. Fixes #78089.
2326
2327 2006-04-13  Martin Baulig  <martin@ximian.com>
2328
2329         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
2330         determine whether we're inside the debugger.
2331
2332         * debug-debugger.h
2333         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
2334
2335 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
2338         handler clauses. Fixes #78024.
2339
2340         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
2341         in the CALL_MEMBASE opcodes. Fixes #78088.
2342         (mono_arch_get_vcall_slot_addr): Ditto.
2343
2344 2006-04-10  Martin Baulig  <martin@ximian.com>
2345
2346         * debug-debugger.c: The thread handling code has now been moved
2347         into ../metadata/threads.c.
2348
2349 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * driver.c (mono_main): Fix --with-gc=none build.
2352
2353         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
2354         (mono_spillvar_offset_float): Ditto.
2355         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
2356         hreg, not when its !global, since on ia64, there is a third category: stacked
2357         registers.      
2358
2359 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
2360
2361         * mini.c: set MonoInst->klass for load field address and a few other
2362         places.
2363
2364 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
2367
2368 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
2369
2370         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
2371         the branch opt changes.
2372
2373 2006-04-06  Dick Porter  <dick@ximian.com>
2374
2375         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
2376         
2377         * wapihandles.c (mini_wapi_seminfo): 
2378         * driver.c (mono_main): Add semaphore info option
2379
2380 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
2383         branch optimization changes. Fixes #78009.
2384
2385 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
2386
2387         * mini.c: ignore accessibility of methods in managed->native wrappers.
2388
2389 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
2392         
2393         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
2394
2395 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini.c: Modify the branch optimizations to preserve the invariant that
2398         the entries inside the in_bb and out_bb arrays are unique.
2399         (mono_unlink_bblock): Avoid creation of new arrays.
2400
2401 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * mini.c (mono_unlink_bblock): Fix regression caused by previous
2404         change (#77992).
2405
2406 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * mini.c (optimize_branches): Remove the "optimizations" in
2409         the cbranch1/cbranch2 -> branch cases which were causing several
2410         problems in the past. Fixes #77986.
2411
2412 2006-03-31  Chris Toshok  <toshok@ximian.com>
2413
2414         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
2415         default optimizations :(
2416
2417 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
2420         branch.
2421
2422 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
2423
2424         * local-propagation.c: Added comments to structs and removed
2425         "Mono" prefixes from local tree mover types.
2426
2427 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
2428
2429         * Makefile.am (arch_sources): Define this for each architecture so 
2430         libmono_la_SOURCES is defined in one place.
2431
2432 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
2433
2434         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
2435         from handles/.
2436
2437 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
2438
2439         * driver.c: print the GC name supplied by configure.
2440
2441 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
2442
2443         * local-propagation.c: Added tree mover, and moved here all the
2444         local propagation code from mini.c
2445         * mini.c: Added support for treeprop, and moved all the local
2446         propagation code to local-propagation.c
2447         * mini.h: Added support for treeprop
2448         * driver.c: Added support for treeprop, enabled consprop, copyprop,
2449         treeprop, inline and deadce by default
2450         * Makefile.am: Added local-propagation.c
2451
2452 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
2455
2456 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
2457
2458         * debug-debugger.c: make it compile without the Boehm GC.
2459
2460 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2461
2462         * mini.c: fixed issue with mismatch when an icall is registered
2463         with multiple names but same address.
2464
2465 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
2466
2467         * declsec.c, mini-exceptions.c: use write barrier to set reference
2468         fields of managed objects.
2469
2470 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
2473         (can_access_internals): Fix a warning.
2474
2475         * mini.c (print_method_from_ip): Rename this to 
2476         mono_print_method_from_ip so it gets exported.
2477
2478         * trace.c: Deal with strings inside StringBuilder's containing garbage
2479         and fix memory leaks. Fixes #77848.
2480
2481 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
2484         fixes #77787.
2485
2486 2006-03-16 Neale Ferguson <neale@sinenomine.net>
2487         
2488         * mini-s390.c: Remove OP_X86_TEST_NULL.
2489
2490 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
2491
2492         * mini.c: use the correct GetHashCode() for the moving collector.
2493
2494 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
2495
2496         * liveness.c: Regalloc spill cost tuning.
2497
2498 2006-03-15 Neale Ferguson <neale@sinenomine.net>
2499         
2500         * mini-s390x.h: Correct S390_LONG macro.
2501
2502         * mini-s390x.c: Cleanup unused code.
2503
2504 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * jit-icalls.h: New file.
2507
2508         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
2509         icalls and include that instead of including jit-icalls.c.
2510
2511         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
2512         OP_X86 opcodes.
2513
2514 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
2515
2516         * mini.c: when checking for member accessibility, also check for
2517         friend assemblies and for explicit interface implementations.
2518
2519 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
2522
2523         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
2524
2525         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
2526         common cases are done first.    
2527
2528         * mini-ops.h: Only define platform specific opcodes on the given platform.
2529
2530         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
2531         branch.
2532         
2533 2006-03-14  Martin Baulig  <martin@ximian.com>
2534
2535         Revert Paolo's change from r57348:
2536
2537         * mini.h: don't use gboolean for bitfields.
2538         * mini.c: verifier changes for fields and methods accessibility.
2539
2540 2006-03-13  Neale Ferguson <neale@sinenomine.net>
2541
2542         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
2543
2544         * mini-s390x.c: Fix conv_r_un.
2545
2546         * cpu-s390, cpu-s390x.md: Fix lengths.
2547
2548 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
2549
2550         * mini.c: nested types have access to all the nesting
2551         levels, not just the enclosing types.
2552
2553 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
2554
2555         * mini.c: added a few more verification checks.
2556
2557 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * liveness.c: Merge optimizations from the linear-il branch.
2560
2561 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * mini-ia64.c (emit_call): Add a comment.
2564
2565         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
2566
2567         * tramp-ia64.c: Fix some warnings.
2568
2569 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
2570
2571         * mini.h: don't use gboolean for bitfields.
2572         * mini.c: verifier changes for fields and methods accessibility.
2573
2574 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
2577         lazy icall wrapper changes.
2578
2579         * dominators.c: Replace all the dominator algorithms with faster
2580         ones from the linear-il branch.
2581
2582         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
2583         the mempool.
2584
2585         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
2586         common cases are done first.
2587
2588         * mini-amd64.c: Fix some warnings.
2589
2590         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
2591         from the mempool.
2592
2593         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
2594         added code.
2595
2596         * mini.h: Add a missing prototype.
2597
2598 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * mini.c: Compile icall wrappers lazily.
2601
2602         * mini-codegen.c: Use printf instead of g_print since its much faster.
2603
2604         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
2605         function.
2606
2607         * mini.c (optimize_branches): Cache the negative result from 
2608         remove_block_if_useless ().
2609
2610         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
2611         Also fix some bblock linking issues.
2612
2613         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
2614         assembly files.
2615
2616         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
2617
2618         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
2619         accessed fields first, for better cache behavior.
2620         
2621 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
2622
2623         * mini.c: speedup IList<T> array accesses.
2624
2625 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
2628         inline_costs counter. Fixes #77190.
2629
2630 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
2633         trace messages. Fixes #77706.
2634
2635 2006-03-04  Martin Baulig  <martin@ximian.com>
2636
2637         * tramp-amd64.c, tramp-x86.c
2638         (mono_debugger_create_notification_function): Use
2639         mono_global_codeman_reserve() to allocate a buffer at runtime and
2640         return it.
2641
2642         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
2643
2644         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
2645         notification function at runtime and then call `initialize' in the
2646         `MONO_DEBUGGER__debugger_info' vtable.
2647
2648 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * iltests.il: Fix a visibility problem.
2651
2652 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
2653
2654         * driver.c, mini.c: add hooks for the counters API.
2655
2656 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
2657
2658         * driver.c: show disabled options.
2659
2660 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
2661
2662         * linear-scan.c: always use cost-driven selection.
2663
2664 2006-02-28  Raja R Harinath  <rharinath@novell.com>
2665
2666         * jit-icalls.c (helper_compile_generic_method): Revert change from
2667         2006-02-24.
2668
2669 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
2670
2671         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
2672
2673 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
2674
2675         * inssel.brg: style fixes, mostly to force the updated monoburg
2676         to run for people using svn.
2677
2678 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
2679
2680         * mini.c: match monoburg changes.
2681
2682 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
2683
2684         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
2685         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
2686         declaration in the header file.
2687
2688 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
2689
2690         * helpers.c: reduce relocations and mem usage.
2691
2692 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
2693
2694         * mini.h, mini-codegen.c: disable logging features if
2695         requested by configure.
2696
2697 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
2698
2699         * mini.c: tiny verifier changes.
2700
2701 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
2702
2703         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
2704         cpu-pentium.md: stack alignment changes for osx/x86,
2705         partially from Geoff Norton <gnorton@customerdna.com>.
2706
2707 2006-02-24  Raja R Harinath  <harinath@gmail.com>
2708
2709         * jit-icalls.c (helper_compile_generic_method): Update to changes
2710         in metadata/class.c.
2711
2712 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
2713         
2714         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
2715         
2716         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
2717         interface calls with large offsets.
2718
2719 2006-02-23  Raja R Harinath  <rharinath@novell.com>
2720
2721         * jit-icalls.c (helper_compile_generic_method): Document the
2722         special-case we depend on so that we can inflate the method twice
2723         with the same context with no bad side-effects.
2724
2725 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
2726
2727         * mini-x86.c, mini-amd64.c: fix for case when xen support
2728         is disabled.
2729
2730 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
2731
2732         * mini-x86.c, mini-amd64.c: generate code to access tls items
2733         in a faster way for Xen systems.
2734
2735 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
2736
2737         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
2738         updates and compilation fixes for the OSX/x86 port, mostly from
2739         Geoff Norton <gnorton@customerdna.com>.
2740
2741 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
2742
2743         * inssel.brg: faster interface call implementation
2744         to sync with the interface_offsets MonoVTable changes.
2745
2746 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
2747
2748         * mini.c: more verification checks.
2749
2750 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
2751
2752         * mini.c: added a few more verification checks.
2753
2754 2006-02-17      Neale Ferguson <neale@sinenomine.net>
2755
2756         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
2757         facility on the processor and use it if available.
2758
2759 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
2760
2761         * driver.c, aot.c, mini.c: throw exception if the IL code is
2762         invalid or unverifiable.
2763
2764 2006-02-17  Raja R Harinath  <rharinath@novell.com>
2765
2766         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
2767         m.StructField.
2768
2769 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
2770
2771         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
2772
2773 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2774
2775         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
2776         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
2777         handling of instantiated generic valuetypes.
2778
2779 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
2780
2781         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
2782         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
2783         instead.
2784
2785         * generics.2.cs: Revert the nullable reftypes tests.
2786
2787 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
2790         using __builtin_frame_address (1) as it doesn't work in the presence
2791         of optimizations. Hopefully fixes #77273.
2792
2793         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
2794         -> generics.cs change as it doesn't work with some automake versions.
2795
2796 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
2797
2798         * mini.c: handle systems that sue a different way to
2799         retrieve the stack address of the current thread.
2800
2801 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
2804         it specially in the makefile.
2805
2806         * generics.2.cs: Add tests for nullable reference types.
2807
2808 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2809
2810         * mini.c: always handle the case when mono_jit_init()
2811         is called in a thread different from the main thread,
2812         confusing libgc (bug #77309).
2813
2814 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
2815
2816         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
2817
2818 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
2819
2820         * mini.c: change optimize_branches () to use a single loop
2821         and introduce a new optimization to simplify some range checks.
2822
2823 2006-02-03  Martin Baulig  <martin@ximian.com>
2824
2825         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
2826         and merged with debugger_thread_manager_add_thread().
2827         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
2828         inform the debugger about the main thread.
2829
2830 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * basic.cs: Add test for div.un/rem.un constant folding.
2833
2834 2006-02-03  Neale Ferguson <neale@sinenomine.net>
2835
2836         * cpu-s390x.md: correct int_xor_imm length
2837
2838 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
2839
2840         * generics.2.cs: New test for #77442.
2841
2842         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
2843         #77442.
2844
2845 2006-02-02  Martin Baulig  <martin@ximian.com>
2846
2847         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
2848         <mono/metadata/mono-debug-debugger.h>   
2849
2850         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
2851
2852 2006-02-02  Martin Baulig  <martin@ximian.com>
2853
2854         * debug-debugger.h: New header file for debug-debugger.c.
2855
2856         * debug-debugger.c: Big API cleanup; don't run the managed Main()
2857         function is a separate thread anymore; add support for attaching.
2858
2859 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * tramp-x86.c: Fix a warning.
2862
2863 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
2864
2865         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
2866         on very large methods.
2867
2868         * aot.c (load_patch_info): Fix a warning.
2869
2870 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
2871
2872         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
2873         mini-ops.h: alu membase optimizations.
2874
2875 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
2876
2877         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
2878         to speedup StringBuilder.
2879
2880 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * dominators.c (mono_compute_natural_loops): Fix detection of
2883         loop body start blocks.
2884
2885         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
2886
2887 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
2890         #75145.
2891
2892 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
2893
2894         * aliasing.c: Fixed aliasing issue on 64 bit archs.
2895
2896 2006-01-25  Martin Baulig  <martin@ximian.com>
2897
2898         * debug-debugger.c: Moved the `MonoDebuggerManager' and
2899         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
2900         started to cleanup this file a little bit.
2901
2902 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
2903
2904         * mini.c: optimize a codepath frequently happening in generics code.
2905
2906 2006-01-23  Martin Baulig  <martin@ximian.com>
2907
2908         * Makefile.am: Only compile debug-debugger.c on supported platforms.
2909
2910         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
2911         functions directly.
2912
2913         * driver.c: debug-debugger.c is only available if
2914         `MONO_DEBUGGER_SUPPORTED' is defined.   
2915
2916 2006-01-23  Martin Baulig  <martin@ximian.com>
2917
2918         * debug-debugger.c: Only enable this on platforms where the Mono
2919         Debugger is working (x86 and x86_64).
2920
2921 2006-01-21  Martin Baulig  <martin@ximian.com>
2922
2923         The Mono Debugger is now using the normal `mono' instead of the
2924         `mono-debugger-mini-wrapper' when executing managed code.
2925
2926         * debug-debugger.c: New file; previously known as
2927         debugger/wrapper/wrapper.c.
2928
2929         * debug-mini.c (mono_init_debugger): Removed.
2930
2931         * driver.c (mono_main): Added new `--inside-mdb' command line
2932         argument which is used when running inside the debugger.
2933
2934 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * liveness.c (mono_analyze_liveness): Remove some unused data
2937         structures.
2938
2939 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
2942
2943 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
2946         depends on implementation details of monobitset.
2947
2948         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
2949         Fixes #77271.
2950
2951 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * liveness.c: Update after monobitset changes.
2954
2955 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
2958
2959 2006-01-11 Neale Ferguson <neale@sinenomine.net>
2960
2961         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
2962
2963         * mini-s390x.c: Remove warning messages.
2964
2965 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
2966
2967         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
2968
2969 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * generics.2.cs: Add ldelem/stelem_any test.
2972
2973 2006-01-10 Neale Ferguson <neale@sinenomine.net>
2974
2975         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
2976
2977 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
2980         
2981 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * generics.2.cs: Reenable vtype tests.
2984
2985         * inssel-x86.brg: Remove an icorrect valuetype rule.
2986
2987 2006-01-06 Neale Ferguson <neale@sinenomine.net>
2988
2989         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
2990         initial support for OP_ABS.
2991
2992 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2993
2994         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
2995
2996 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2997
2998         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
2999         conversion and implement LADD/LSUB.
3000
3001         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
3002         architectures.
3003
3004 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3005
3006         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
3007
3008         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
3009         architectures.
3010
3011 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3012
3013         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
3014         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
3015         (stack walk problem).
3016
3017 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * aot.c (mono_aot_load_method): Fix a warning.
3020
3021 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3022
3023         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
3024
3025 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
3026
3027         * iltests.il: Add test for #77148.
3028
3029         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
3030         #77148.
3031
3032 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3033
3034         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
3035
3036 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3037
3038         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
3039         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
3040
3041         * basic-long.cs: Add lconv-to-r4/r8 tests.
3042
3043 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
3046
3047         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
3048         here as on other archs.
3049
3050 2005-12-29 Neale Ferguson <neale@sinenomine.net>
3051
3052         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
3053
3054 2005-12-29 Neale Ferguson <neale@sinenomine.net>
3055
3056         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
3057         
3058         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
3059
3060         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
3061         instrument_prolog; Add memory_barrier instruction.
3062
3063 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
3066
3067 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
3068
3069         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
3070
3071         * aliasing.c inssel.brg: Fix warnings.
3072
3073         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
3074         could skip initialization of some parts of memory.
3075
3076         * mini.c mini-ia64.c: Fix warnings.
3077
3078         * inssel-sparc.brg: Add an implementation of lneg which actually works.
3079
3080 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * aliasing.c (mono_build_aliasing_information): Add a workaround for
3083         a crash seen on sparc.
3084
3085         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
3086         
3087         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
3088
3089 2005-12-21 Neale Ferguson <neale@sinenomine.net>
3090
3091         * mini-ops.h: Add s390_backchain instruction
3092
3093         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
3094
3095         * cpu-s390.md: Add s390_backchain instruction
3096
3097         * mini-s390.c: Significant ABI changes
3098
3099         * mini-s390.h: Cater for zero length structures
3100
3101 2005-12-20 Neale Ferguson <neale@sinenomine.net>
3102
3103         * mini-s390.c: ABI fixes
3104
3105         * inssel-s390.brg: Remove debug statements
3106
3107         * cpu-s390.md: Fix length of ATOMIC_xx operations
3108
3109 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * basic-float.cs: Add float<->long conversion tests.
3112
3113 2005-12-16 Neale Ferguson <neale@sinenomine.net>
3114
3115         * mini-s390.c: Fix LOCALLOC processing.
3116
3117         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
3118
3119 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
3120
3121         * iltests.il: Add tests for some opcodes not covered by the other
3122         tests.
3123
3124 2005-12-15 Neale Ferguson <neale@sinenomine.net>
3125
3126         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
3127         register loading for Tail processing; Correct trace output.
3128
3129         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
3130
3131         * cpu-s390.md: Correct size of jmp instruction. 
3132
3133 2005-12-13 Neale Ferguson <neale@sinenomine.net>
3134
3135         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
3136
3137 2005-12-13 Neale Ferguson <neale@sinenomine.net>
3138
3139         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
3140           Bring s390 up to current level.
3141
3142 2005-12-12  Zltan Varga  <vargaz@gmail.com>
3143
3144         * generics.2.cs: Disable the newly added tests as they do not work yet.
3145         
3146         * generics.2.cs: Add valuetype tests.
3147
3148 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * basic-long.cs: Add i4->u8 test.
3151
3152         * objects.cs: Add tests for JIT intrinsic.
3153
3154         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
3155         optimizations lost by a mistake.
3156
3157 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * basic-long.cs: Remove a test moved to objects.cs.
3160
3161         * arrays.cs: Add more array tests.
3162
3163 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
3164
3165         * arrays.cs: Add new tests for multi-dimensional arrays.
3166
3167 2005-12-06  Raja R Harinath  <rharinath@novell.com>
3168
3169         * Makefile.am (test_sources2): Add generics.2.cs.
3170         (EXTRA_DIST): Add test_sources2.
3171
3172 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
3173
3174         Support for boxing and unboxing nullable types as well as the
3175         isinst operation on nullables, per the CLI ammendment.
3176
3177         * inssel.brg (CEE_ISINST): Special case for nullable
3178
3179         * mini.c (handle_unbox_nullable): new method
3180         (handle_box): Special case for nullable types
3181         (mono_method_to_ir): Call handle_unbox_nullable in correct
3182         places.
3183
3184         * generics.2.cs: New test suite
3185
3186         * Makefile.am: Support for regression tests with generics.
3187
3188 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
3189
3190         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
3191         allocated to registers. Fixes #76800.
3192
3193 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
3194
3195         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
3196
3197 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
3200         of platforms.
3201
3202 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
3203
3204         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
3205         objects.cs.
3206
3207         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
3208         
3209         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
3210 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
3211
3212         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
3213         single precision before storing to a single precision location.
3214
3215 2005-11-28  Raja R Harinath  <rharinath@novell.com>
3216
3217         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
3218
3219 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
3222         correct files.
3223
3224         * basic.cs: Remove test_0_byte_compares test which was moved to
3225         objects.cs a long time ago.
3226
3227 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
3228
3229         * aliasing.c: Fixed aliasing issue on 64 bit archs.
3230
3231 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
3232
3233         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
3234         handlers are called.
3235
3236         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
3237         throwing code.
3238
3239          * mini-ia64.c: Add support for the throw->branch exception 
3240         optimization.   
3241
3242         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
3243
3244 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
3245
3246         * mini.c: Enabled "fastpath" deadce :-)
3247         
3248 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
3249
3250         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
3251         alias analysis pass to support it.
3252         * mini.h: Likewise.
3253         * ssa.c: Likewise.
3254         * liveness.c: Likewise (liveness computation can use aliasing
3255         information to be more accurate).
3256         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
3257         moreover made so that "--compile-all" uses the given optimization
3258         flags and not the default ones.
3259         * aliasing.c: Alias analysis (new file).
3260         * aliasing.h: Likewise.
3261         * Makefile.am: added "aliasing.c" and "aliasing.h".
3262         
3263 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
3266         OP_L opcodes.
3267
3268 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
3271         fp >= end_of_stack exit condition, as it is not needed, and it might
3272         become true for fp eliminated frames.
3273
3274 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
3277         coded offsets.
3278
3279 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
3280
3281         * mini-arm.c: fixed alignment of doubles/longs to match
3282         the C ABI (bug #76635).
3283
3284 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
3285
3286         * aot.c: fix compilation with --enable-minimal=aot.
3287
3288 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
3289
3290         * mini-arm.c: fixed compatibility with the new
3291         floating point emulator package for compares.
3292
3293 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
3294
3295         * mini.c : reverted sig->pinvoke changes (r51396-51397).
3296
3297 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
3298
3299         * mini-exceptions.c (print_stack_frame): Output to stderr.
3300         (mono_handle_native_sigsegv): Ditto.
3301
3302 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3303
3304         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
3305         OP_LCONV_TO_OVF_I implementation.
3306
3307         * mini-amd64.c: Add support for the throw->branch exception 
3308         optimization.
3309
3310         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
3311         when the catch clause catches a more general exception, i.e. Object.
3312
3313 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * cpu-ia64.md: Remove unused opcodes.
3316
3317         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
3318         specific defines for architectures defining USE_SIGACTION.
3319
3320         * mini-ia64.c: Fix some warnings.
3321
3322         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
3323         version seemed to skip a frame.
3324
3325 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3326
3327         * mini.c: Clean up the usage of sig->pinvoke flag. Now
3328         only calls which are made to native code use this flag.
3329
3330 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
3331
3332         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
3333         varargs methods as well.
3334         
3335         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
3336         which have save_lmf set. Reorganize methods prologs a bit.
3337
3338         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
3339         debugger to the proper place.
3340
3341 2005-10-29  Martin Baulig  <martin@ximian.com>
3342
3343         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
3344         when running inside the debugger until the debugger has support
3345         for it.
3346
3347 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * mini.h: Fix a warning.
3350
3351 2005-10-24  Miguel de Icaza  <miguel@novell.com>
3352
3353         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
3354         we expose publicly, this returns the string.
3355
3356 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
3357
3358         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
3359         with fp elimination.
3360
3361 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
3362
3363         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
3364         native stacktrace using the glibc 'backtrace' function if available.
3365
3366 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
3369
3370         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
3371         handle SIGSEGVs received while in native code.
3372
3373         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
3374         code, call mono_handle_native_sigsegv which will abort the runtime
3375         after printing some diagnostics, instead of converting it into a
3376         confusing NullReferenceException.
3377
3378 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * cpu-pentium.md: Remove unused opcodes.
3381
3382 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
3383
3384         * mini-amd64.h (MonoLMF): Add rsp field.
3385
3386         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
3387         the lmf too.
3388
3389 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * mini-codegen.c (get_register_spilling): Fix some warnings.
3392
3393 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
3394
3395         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
3396         elimination during exception handling. Enable fp elimination by
3397         default.
3398
3399         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
3400         elimination.
3401
3402 2005-10-16  Martin Baulig  <martin@ximian.com>
3403
3404         * mini-exceptions.c
3405         (mono_debugger_run_finally): New public method for the debugger.
3406
3407 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * debug-mini.c (mono_debug_init_method): Fix warning.
3410
3411         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
3412         the 'exname' parameter const to fix some warnings.
3413
3414 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
3415
3416         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
3417         introduced by the previous patch.
3418
3419 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * basic-float.cs: Add test for precision of float arithmetic.
3422
3423         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
3424         when loading/storing single values from/to memory.
3425
3426         * mini.c (mono_jit_compile_method_with_opt): Create the function
3427         pointers in the correct domain.
3428
3429 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
3430
3431         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
3432         introduced by previous patch.
3433         
3434         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
3435         when out_filter_idx is NULL.
3436
3437         * mini-exceptions.c: Don't run filter clauses twice during exception
3438         handling. Fixes #75755.
3439
3440 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
3441
3442         * aot.c: Add support for ldflda wrappers.
3443
3444         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
3445         #75902.
3446
3447 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
3448
3449         * mini.c, mini.h: do not consider exception handlers blocks when
3450         setting up interface variables.
3451
3452 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
3453
3454         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
3455
3456 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
3459         causes a regression.
3460
3461         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
3462
3463 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
3464
3465         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
3466         of the OP_P definitions.
3467
3468         * TODO: Add a proposal for dealing with the CEE/OP mess.
3469
3470         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
3471         optimizations from the x86 port.
3472
3473         * cpu-amd64.md: Ditto.
3474
3475         * basic.cs basic-long.cs: Add tests.
3476
3477 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
3478
3479         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
3480         Patrik Torstensson's implementation of my exception-handling
3481         optimization idea, when the exception object is not used
3482         (bug #62150).
3483
3484 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
3485
3486         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
3487         of the mul_imm optimizations from the old jit.
3488
3489 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
3490
3491         * mini.c, liveness.c: patch by Patrik Torstensson and
3492         Zoltan Varga to improve performance in methods with
3493         exception clauses.
3494
3495 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * driver.c: Remove 'Globalization' entry from --version.
3498
3499 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
3500
3501         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
3502         there is a profiler interested in JIT events.
3503
3504         * aot.c: Load profile files produced by the AOT profiling module, and
3505         reorder methods based on the profiling info. Add a 'method_order' table
3506         to the AOT file to make mono_aot_find_jit_info work with the reordered
3507         methods.
3508
3509         * mini.h: Bump AOT file version info.
3510
3511 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
3512
3513         * mini-arm.h: work around what looks like a gcc bug when optimizations
3514         are enabled.
3515
3516 2005-09-28  Raja R Harinath  <rharinath@novell.com>
3517
3518         * Makefile.am (AM_CFLAGS): Don't use += to append inside
3519         conditionals.  Use ...
3520         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
3521
3522 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
3523
3524         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
3525         to determine the amount of memory to copy when passing valuetypes.
3526
3527         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
3528         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
3529
3530 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
3533         information about aot.
3534
3535 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
3536
3537         * *.c: Replace the use of {Enter,Leave}CriticalSection with
3538         macros. This will allow a deadlock debugger to easily be plugged
3539         in.
3540
3541 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
3542
3543         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
3544
3545 2005-09-27  Raja R Harinath  <rharinath@novell.com>
3546
3547         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
3548         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
3549         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
3550         ($(arch_built)) [CROSS_COMPILING]: Error out.
3551
3552 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * aot.c: Add support for the no_special_static flag for classes.
3555
3556 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
3557
3558         * Reapply reverted patches.
3559
3560         * *: Revert r50174 as well.
3561
3562         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
3563
3564 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
3565
3566         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
3567
3568 2005-09-23  Miguel de Icaza  <miguel@novell.com>
3569
3570         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
3571         part of the SIG_HANDLER_SIGNATURE.  
3572
3573 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
3576         statistics.
3577
3578         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
3579         introduced by previous patch.
3580
3581 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
3584         saved registers too.
3585
3586         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
3587         upon the information returned by get_call_info ().
3588         
3589         * mini-x86.c (add_float): Fix stack size calculation.
3590         (mono_arch_call_opcode): Rewrite this so it works based up the
3591         information returned by get_call_info ().
3592         (mono_arch_get_this_vret_args): Ditto.
3593
3594 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
3595
3596         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
3597         in cinfo to determine the registers which need to be used.
3598
3599 2005-09-20  Miguel de Icaza  <miguel@novell.com>
3600
3601         * driver.c (mono_main): Add --server and --desktop flags. 
3602
3603 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
3606         registers as global registers.
3607
3608         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
3609         longer needed with the new register allocator.
3610
3611         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
3612
3613         * cpu-ia64.md: Remove unused opcodes.
3614         
3615         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
3616         
3617 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
3618
3619         * cpu-amd64.md: Remove unused opcodes.
3620
3621         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
3622         needed with the new register allocator.
3623
3624         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
3625         reg-reg moves.
3626
3627 2005-09-16  Raja R Harinath  <rharinath@novell.com>
3628
3629         * Makefile.am (check-local): Don't invoke semdel-wrapper.
3630
3631 2005-09-16  Martin Baulig  <martin@ximian.com>
3632
3633         * exceptions-amd64.c
3634         (throw_exception): Don't call mono_debugger_throw_exception() if
3635         we're a rethrow - see the FIXME in the code.
3636
3637 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
3638
3639         * mini.c (mono_init_exceptions): This only works on some architectures.
3640         
3641 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
3644         on ia64.
3645
3646         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
3647
3648         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
3649         now in mini-exceptions.c.
3650
3651 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
3652
3653         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
3654         now in mini-exceptions.c.
3655
3656 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * exceptions-x86.c: Applied patch from Patrik Torstensson 
3659         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
3660
3661         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
3662         code into mini-exceptions.c. Add some assertions to it.
3663
3664 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * aot.c (emit_section_change): Applied patch from "The Software Team" 
3667         (<software@solmersa.com>). Fix as errors on windows.
3668
3669 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
3670
3671         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
3672         method info into the LMF.
3673
3674 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
3675         
3676         * mini-ia64.c: Add proper unwind info for method epilogs.
3677
3678         * exceptions-ia64.c: Add some code to help debugging.
3679         
3680         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
3681
3682         * mini-exceptions.c: Fix warning.
3683
3684 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
3685
3686         * mini.c: Really fix build.
3687
3688         * mini-x86.c mini-amd64.c: Fix build.
3689
3690 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
3691
3692         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
3693
3694         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
3695         some Interlocked methods as intrinsics.
3696
3697         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
3698         for Thread methods as well.
3699
3700         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
3701
3702         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
3703
3704         * mini-ia64.c mini-x86.c mini-amd64.c 
3705         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
3706         OP_MEMORY_BARRIER.
3707         
3708         * mini.c (mono_init_exceptions): Fix build breakage.
3709
3710 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
3713         of instructions. Use the new ia64_unw_op macros for emitting unwind
3714         info.
3715
3716         * mini.c (mono_init_exceptions): Initialize exception handling
3717         related trampolines at startup.
3718
3719 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
3720
3721         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
3722
3723 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
3724
3725         * mini.c: Handle type loading errors gracefully during compilation and
3726         throw the appropriate exception.
3727
3728 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
3729
3730         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
3731         for the mono binary.
3732
3733 2005-09-09  Martin Baulig  <martin@ximian.com>
3734
3735         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
3736         the release.
3737
3738 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
3739
3740         * mini-arm.h: use emulation for conv.r.un for the release.
3741
3742 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
3743
3744         * mini-arm.c, objects.cs: more fixes and tests for them.
3745
3746 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
3747
3748         * mini-arm.c: align structures to at least 4 bytes to be able
3749         to keep our current optimized memcpy.
3750
3751 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
3752
3753         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
3754
3755 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3756
3757         * mini.c: ignore SIGPIPE.
3758
3759 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
3762
3763         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
3764
3765 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * mini.h: Add prototype for mono_allocate_stack_slots_full.
3768
3769 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
3770
3771         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
3772         exception handling support.
3773         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
3774         patch by Brian Koropoff <briank@marakicorp.com>).
3775
3776 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
3777
3778         * mini.c: revert another 'optimization' which breaks when
3779         items on the eval stack need to be saved at a basic block end
3780         (bug #75940).
3781
3782 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
3783
3784         * jit-icalls.c: for arrays, ensure we always provide
3785         lower bounds.
3786
3787 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
3790         
3791         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
3792
3793 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
3794
3795         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
3796         arguments in their original register.
3797
3798 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
3799
3800         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
3801         memset/memcpy.
3802
3803         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
3804         when ssapre is enabled.
3805
3806         * inssel-long.brg: Fix bug in previous patch.
3807
3808         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
3809         multiplication by a constant.
3810
3811 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
3814         icc.
3815
3816         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
3817         saving registers.
3818
3819 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
3820
3821         * inssel-arm.brg: apply changes tested by Brian Koropoff
3822         <briank@marakicorp.com>.
3823
3824 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
3827         
3828 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
3831         to the same register if dreg is just a base register.
3832         (print_ins): Improve printing of membase opcodes.
3833
3834         * inssel-x86.brg: Add optimized ldind(reg) rules.
3835
3836         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
3837
3838 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
3839
3840         * mini.c: when running under valgrind, set the stack bottom for
3841         the GC at the actual approximate stack for the app (fixes running
3842         mono with valgrind).
3843
3844 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
3845
3846         * mini.c: do no break at the first valuetype to init found
3847         (fixes bug #75791).
3848
3849 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
3850
3851         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
3852
3853 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
3854
3855         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
3856
3857 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
3858
3859         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
3860
3861 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3862
3863         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
3864
3865         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
3866         code.
3867
3868         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
3869         code.
3870
3871         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
3872         methods.
3873
3874 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
3875
3876         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
3877
3878 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3879
3880         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
3881         in the tail recursion optimization.
3882
3883         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
3884         debug info into the assembly file.
3885
3886         * iltests.il: Add test for filter regions.
3887
3888         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
3889         initial stack of filter regions. Fixes #75755.
3890
3891 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
3892
3893         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
3894         stack requirements.
3895
3896 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3897
3898         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
3899         the check for an already compiled method on non-ia64 platforms.
3900         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
3901         proper domain.
3902
3903         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
3904
3905         * inssel-x86.brg: Add some optimized call rules.
3906
3907 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
3908
3909         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
3910         method here.
3911
3912         * mini.h mini-trampolines.c: Pass the trampoline argument to 
3913         mono_arch_patch_delegate_trampoline.
3914
3915         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
3916
3917         * mini-trampolines.c: Fix build.
3918
3919         * mini-amd64.h: Add delegate trampolines.
3920
3921         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
3922
3923         * inssel-amd64.brg: Add optimized call rules.
3924         
3925         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
3926
3927         * inssel-ia64.brg: Add optimized ldind(reg) rules.
3928
3929 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
3930
3931         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
3932         change.
3933
3934         * mini-ia64.c: Remove LMF fixmes.
3935
3936         * mini-ia64.h: Remove most fields from LMF.
3937
3938         * inssel-ia64.brg (stmt): Fix unaligned access errors.
3939
3940         * mini-trampolines.c: Add support for IA64 function descriptors.
3941
3942         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
3943         for IA64 function descriptors.
3944
3945 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
3946
3947         * tramp-arm.c: patch the vtable for virtual calls. Added
3948         support code to register/unregister the LMF.
3949         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
3950         more LMF work.
3951
3952 2005-08-19  Dick Porter  <dick@ximian.com>
3953
3954         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
3955         bit value if needed.
3956
3957 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
3958
3959         * mini.c (mini_get_method): Move handling of wrapper data here.
3960
3961         * mini.c (mono_method_to_ir): Add support for dynamic methods.
3962
3963         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
3964         virtual.
3965
3966         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
3967         bblock->code does not remain empty.
3968
3969 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
3970
3971         * arrays.cs: Add regression test for #75832.
3972
3973         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
3974         rules. Fixes #75832.
3975
3976         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
3977         instruction scheduling.
3978
3979 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
3980
3981         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
3982
3983 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
3984
3985         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
3986
3987         * mini-codegen.c: Fix VC build.
3988
3989         * cpu-pentium.md: Increase length of atomic_exhange_i4.
3990
3991 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3992
3993         * mini.h: fix signature for mono_register_opcode_emulation.
3994
3995 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
3996
3997         * mini.c: Get rid of most of the helper_sig_... constants using
3998         mono_create_icall_signature ().
3999
4000 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
4001
4002         * jit-icalls.c (helper_ldstr): New helper function.
4003
4004         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
4005
4006         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
4007         throw, load the string using a helper call instead of creating a string object.
4008
4009         * aot.c: Update after LDSTR changes.
4010
4011         * mini.h: Bump AOT file version.
4012         
4013         * aot.c: Save class size info into the AOT file. Print more statistics during
4014         compilation.
4015
4016         * mini.h: Bump AOT file version.
4017
4018         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
4019         ordering of disasm cases. Fixes #74957.
4020
4021 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
4022
4023         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
4024         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
4025         the generic code needed for the ARM port.
4026
4027 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
4028
4029         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
4030         inssel-arm.brg: more ARM features and fixes.
4031
4032 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
4033
4034         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
4035         ARM port work in progress.
4036
4037 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
4038
4039         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
4040
4041         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
4042
4043         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
4044
4045         * inssel.brg (mini_emit_memset): Add support for unaligned access.
4046
4047         * *-ia64.*: Ongoing IA64 work.
4048         
4049         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
4050
4051 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
4052
4053         * TODO: Remove out-of-data todo stuff.
4054
4055         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
4056         dead code.
4057
4058         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
4059
4060         * mini.h: Bump corlib version.
4061
4062 2005-07-27  Martin Baulig  <martin@ximian.com>
4063
4064         * mini-codegen.c
4065         (create_copy_ins): Added `const unsigned char *ip' argument; set
4066         `copy->cil_code' from it.
4067
4068 2005-07-27  Martin Baulig  <martin@ximian.com>
4069
4070         * mini-exceptions.c (mono_handle_exception): Don't call
4071         mono_debugger_handle_exception() for filters.
4072
4073 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
4074
4075         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
4076         as well.
4077
4078 2005-07-26  Martin Baulig  <martin@ximian.com>
4079
4080         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
4081
4082         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
4083         helper_compile_generic_method() if the method is actually virtual
4084         and non-final.
4085
4086 2005-07-26  Martin Baulig  <martin@ximian.com>
4087
4088         * mini.c
4089         (trampoline_code): Renamed to `mono_trampoline_code' and made it
4090         public; this is now accessed directly by the debugger.
4091         (mono_generic_trampoline_code): Removed.
4092
4093         * debug-mini.c
4094         (mono_debug_init_method): Also add interncalls and wrappers.
4095
4096 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
4097
4098         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
4099
4100 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
4101
4102         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
4103
4104 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
4105
4106         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
4107
4108 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
4109
4110         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
4111         getting TLS offsets on AMD64 too.
4112
4113 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
4114
4115         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
4116
4117 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
4118
4119         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
4120         inssel-arm.brg, mini-arm.h: ARM port work in progress.
4121
4122 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
4123
4124         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
4125
4126         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
4127         to mini.c.
4128
4129         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
4130         mono_sparc_is_virtual_call ().
4131         
4132         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
4133
4134         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
4135         trampoline parameters.
4136
4137         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
4138         
4139         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
4140         to mono_arch_get_vcall_slot_addr.
4141
4142         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
4143         trampoline code.
4144
4145         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
4146
4147 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
4148
4149         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
4150
4151 2005-07-19  Martin Baulig  <martin@ximian.com>
4152
4153         * exceptions-amd64.c (throw_exception): Call
4154         mono_debugger_throw_exception() here like we're doing it on i386.
4155
4156 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
4157
4158         * mini-ia64.c: Add optimized TLS access support.
4159
4160 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
4161
4162         * mini-exceptions.c: Ongoing IA64 work.
4163
4164         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
4165
4166         * mini.c: Use the default optimization set when embedding. Fixes
4167         #75194.
4168
4169 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
4170
4171         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
4172         of trampolines to a separate file.
4173
4174         * mini-trampolines.c: New file.
4175
4176         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
4177         separate file.
4178         
4179         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
4180         amd64/ia64 code.
4181
4182         * mini-codegen.c: Fix cygwin build.
4183
4184 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
4185
4186         * mini.c: Add some minor changes needed by the IA64 port.
4187
4188         * *-ia64.*: Ongoing IA64 work.
4189
4190 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
4191
4192         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
4193         trampolines into arch-independent and arch-dependent parts.
4194
4195         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
4196
4197 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
4198
4199         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
4200
4201         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
4202         the xp-regalloc-branch for amd64.
4203
4204         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
4205         xp-regalloc-branch for x86.
4206
4207 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
4208
4209         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
4210
4211 2005-07-06  Martin Baulig  <martin@ximian.com>
4212
4213         * mini.c
4214         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
4215         (mono_jit_runtime_invoke): Likewise.
4216
4217 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
4218
4219         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
4220         on x86 too.
4221         
4222         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
4223         without loading their metadata. Reorganize the file format so exception handling+
4224         debug info is kept separate from normal method info. Create MonoJitInfo 
4225         structures for methods lazily.
4226
4227         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
4228         loading metadata.
4229         (x86_class_init_trampoline): Patch AOT class init trampolines too.
4230
4231         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
4232
4233         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
4234         in AOT code.
4235
4236         * mini.h: Bump AOT file version.
4237
4238 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
4239
4240         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
4241
4242 2005-07-01  Raja R Harinath  <rharinath@novell.com>
4243
4244         * Makefile.am (check-local): Call semdel-wrapper.
4245
4246 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
4247
4248         * mini-x86.c: Revert the last change as it seems to break the build..
4249
4250 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
4251
4252         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
4253         
4254         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
4255
4256 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
4257
4258         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
4259         outside of the macro, so strange stuff doesn't happen with gcc4
4260         (NEW_AOTCONST_TOKEN): Likewise.
4261
4262 2005-06-28  Martin Baulig  <martin@ximian.com>
4263
4264         * mini.c (mini_class_is_system_array): New static method; use this
4265         instead of `klass->parent == mono_defaults.array_class' everywhere
4266         since this also works for the new generic array class.
4267
4268 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
4269
4270         * inssel.brg: Remove warnings.
4271
4272 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
4273
4274         * mini-ia64.c: Ongoing IA64 work.
4275
4276         * basic-float.cs: Add float->i1 conversion test.
4277
4278         * iltests.il: Add conv.u4 test.
4279
4280 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
4281
4282         * inssel-long.brg: Fix bug caused by last change.
4283
4284 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
4285
4286         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
4287         BSDs.  Allows the x86 JIT to work on OSX86
4288
4289 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
4290
4291         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
4292         u4->i8 conversion.
4293
4294         * mini-ia64.c: Ongoing IA64 work.
4295
4296 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
4297
4298         * mini-ia64.c: Ongoing IA64 work.
4299
4300         * driver.c: Clean up jit_code_hash as well when using --regression.
4301
4302         * inssel-long.brg: Fix long->i4/u4 conversion rules.
4303
4304         * basic-long.cs: Add tests for long->u4 conversion.
4305
4306 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
4307
4308         * mini.c: Take mono_get_domainvar out of macros. This makes sure
4309         that we do not depend on undefined C behavior: the order stuff
4310         gets evaluated within an expression. Fixes mono when compiled on
4311         GCC 4.
4312
4313 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
4314
4315         * *-ia64.*: Ongoing IA64 work.
4316
4317         * aot.c: Lower memory usage while loading AOT methods.
4318
4319         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
4320
4321         * mini.h: Bump AOT file format version.
4322
4323 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
4324
4325         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
4326
4327 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
4328
4329         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
4330         not on callee assembly). Fixed some comments.
4331
4332 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
4333
4334         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
4335         it gets proper disassembly.
4336         (emit_method_info): Remove some dead code.
4337
4338         * mini.c (mini_method_compile): Allways allocate the GOT var in
4339         mono_method_to_ir for emulating opcodes.
4340
4341 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
4342
4343         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
4344         before freeing the code memory. Fixes #74990.
4345
4346         * objects.cs: Add regression test for #74992.
4347
4348         * liveness.c: Extend live ranges of arguments to the beginning of the
4349         method. Fixes #74992.
4350
4351         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
4352         so it points into the faulting instruction.
4353
4354 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
4355
4356         * jit-icalls.c (mono_imul_ovf): Add exception handling.
4357
4358         * *-ia64.*: Ongoing IA64 work.
4359
4360         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
4361
4362 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
4363
4364         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
4365
4366         * *-ia64.*: Ongoing IA64 work.
4367
4368 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
4369
4370         * basic-long.cs: Add tests for add/sub.ovf.
4371
4372         * basic.cs: Add tests for sub.ovf.
4373
4374         * *-ia64.*: Ongoing IA64 work.
4375
4376 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
4377
4378         * *-ia64.*: Ongoing IA64 work.
4379
4380         * basic.cs: Add conv.ovf.i4.un test.
4381
4382 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
4383
4384         * mini.c: (remove_block_if_useless) Fixed bug 75061.
4385         
4386 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4387
4388         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
4389
4390 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
4391
4392         * *-ia64.*: Ongoing IA64 work.
4393
4394 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4395
4396         * trace.[ch]:
4397         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
4398
4399 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
4400
4401         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
4402
4403 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
4404
4405         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
4406
4407         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
4408         of a call is callable by a near call.
4409
4410 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
4411
4412         * mini-ia64.c: Ongoing IA64 work.
4413
4414 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
4415
4416         * genmdesc.c: Make the generated array non-static.
4417
4418         * inssel-long.brg: Fix LSHR_IMM rule.
4419
4420         * *-ia64.*: Ongoing IA64 work.
4421
4422         * *-ia64.*: Ongoing IA64 work.
4423
4424 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4425
4426         * *-ia64.*: Ongoing IA64 work.
4427
4428         * *-ia64.*: Ongoing IA64 work.
4429         
4430         * mini-ia64.c: Ongoing IA64 work.
4431
4432         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
4433
4434 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4435
4436         * objects.cs basic-calls.cs: Move some tests to objects.cs.
4437         
4438         * objects.cs basic-long.cs: Move some tests to objects.cs.
4439
4440 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
4441
4442         * *-ia64.*: Ongoing IA64 work.
4443
4444         * iltests.il: Add a new test.
4445
4446         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
4447         newobj. Fixes #75042.
4448
4449 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
4450
4451         * *-ia64.*: Ongoing IA64 work.
4452         
4453         * *-ia64.*: Ongoing IA64 work.
4454         
4455         * *-ia64.*: Ongoing IA64 work.
4456
4457         * basic.cs objects.cs: Move tests accessing static variables as well.
4458
4459         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
4460
4461 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
4462
4463         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
4464
4465         * driver.c: Always print failed tests.
4466
4467         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
4468         frame pointer.
4469
4470         * *ia64*: Ongoing IA64 work.
4471
4472 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
4473
4474         * basic.cs: Add tests for add.ovf. Fix warnings.
4475
4476 2005-05-18  Miguel de Icaza  <miguel@novell.com>
4477
4478         * driver.c (mono_main): Avoid crash if no argument is passed to
4479         --break;  Do not use g_error, but f_printf.   And fix all other
4480         ocurrences of the same crash.
4481
4482 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
4483
4484         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
4485         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
4486         Fixes #74742.
4487
4488 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
4489
4490         * *-ia64.*: Add beginnings of IA64 backend.
4491
4492         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
4493
4494 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
4495
4496         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
4497         Fixes #74925.
4498
4499         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
4500
4501         * mini-amd64.c: Fix a warning.
4502
4503 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
4504
4505         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
4506         in float_neg. Fixes #74897.
4507
4508         * mini-amd64.c (emit_call): Fix another near call bug.
4509
4510 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
4511
4512         * declsec.c: Keep the appdomain information in the structure. Added a 
4513         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
4514         value gets overwritten).
4515         * declsec.h: Set the default MonoArray for the the stack to 6. Added
4516         an MonoAppDomain member to MonoSecurityFrame.
4517         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
4518         used in the stack walk. Now use a MonoArray which grow (double) when
4519         it gets full.
4520
4521 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
4522
4523         * mini.c: Re-enabled runtime cleanup, since running threads should
4524         now properly stop when exiting.
4525
4526 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
4527
4528         * mini-codegen.c: New file contaning the arch-independent local
4529         register allocator. Not used by any architectures yet.
4530
4531         * mini.h linear-scan.c: Merge some changes from the 
4532         mini-xp-local-regalloc branch.
4533
4534 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
4535
4536         * mini-amd64.c (emit_call): Fix calls to native functions when the
4537         runtime is compiled as a shared library. Fixes #74756.
4538
4539         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
4540         on a literal field. Fixes #74751.
4541
4542 2005-04-25  Raja R Harinath  <rharinath@novell.com>
4543
4544         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
4545
4546 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
4547
4548         * objects.cs: Add missing null casting test.
4549
4550 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
4551
4552         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
4553         in wrapper methods. Also rename 'address' variable to 'offset'.
4554
4555 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
4556
4557         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
4558         warnings.
4559         
4560         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
4561
4562         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
4563         work on windows.
4564
4565 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
4566
4567         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
4568
4569 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
4570
4571         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
4572         just the last bytes.
4573
4574 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
4575
4576         * aot.c (mono_compile_assembly): Fix warning.
4577
4578         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
4579         by the _MSC_VER stuff.
4580
4581 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
4582
4583         * inssel-long.brg: Fix #74588.
4584
4585         * cpu-amd64.md: Fix #74591.
4586
4587         * iltests.il: Add new regression tests.
4588
4589 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
4590
4591         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
4592         valuetype.
4593
4594 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
4595
4596         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
4597
4598         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
4599         from Bill Middleton <flashdict@gmail.com>.
4600
4601 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
4602
4603         * arrays.cs: Add new regression test. Fix warnings.
4604
4605 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
4606
4607         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
4608         and leakage in CKFINITE.
4609
4610         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
4611         this to a null op since it is called on amd64 too.
4612
4613         * exceptions-amd64.c (get_throw_trampoline): Align stack.
4614
4615         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
4616         body since this is not used on amd64.
4617         
4618         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
4619
4620         * mini-amd64.c: Remove obsolete fixmes.
4621
4622         * mini.c (print_method_from_ip): Fix debugging support.
4623
4624 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4625
4626         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
4627         so that expressions that don't give much gain are not reduced.
4628         * ssapre.h: Likewise.
4629
4630 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
4631
4632         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
4633
4634         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
4635
4636         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
4637
4638 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
4639
4640         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
4641
4642         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
4643
4644 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
4645
4646         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
4647         stack touching.
4648
4649         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
4650
4651         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
4652
4653         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
4654
4655         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
4656         MONO_ARCH_USE_SIGACTION. Fixes #74252.
4657
4658         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
4659
4660         * mini-x86.c: Fix up stack overflow handling.   
4661
4662         * exceptions.cs: Add new regression test.
4663
4664 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
4665
4666         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
4667         mono_jit_thread_attach.
4668
4669         * mini.c (mono_method_to_ir): Verify called method is not abstract.
4670
4671 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
4672
4673         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
4674         avoid calling constructors using callvirt.
4675
4676         * inssel.brg: Fix #74073.
4677
4678 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
4679
4680         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
4681         compilation with non-GCC compilers.
4682         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
4683         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
4684
4685 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
4686
4687         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
4688         klass->interface_offsets (will likely fix bug#74073).
4689
4690 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
4691
4692         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
4693
4694 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
4695
4696         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
4697         to amd64_div_reg_size ().
4698         
4699         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
4700
4701 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
4702
4703         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
4704
4705 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
4706
4707         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
4708
4709 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
4710
4711         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
4712         
4713         * mini.c (mono_precompile_assembly): Load and precompile referenced
4714         assemblies as well. Fixes #74015.
4715
4716 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
4717
4718         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
4719
4720 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
4721
4722         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
4723         a lot of checks and (anyway) permissions cannot work until corlib is 
4724         loaded.
4725
4726 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
4727
4728         * mini-ppc.c: fixed ABI issue on sysv/ppc.
4729
4730 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
4731
4732         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
4733         calls (fixes bug#72824).
4734
4735 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
4736
4737         * mini.c: fix tail recursion elimination (see test in bug#73936).
4738
4739 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
4740
4741         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
4742         some fp functions in sse2 mode.
4743
4744 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
4745
4746         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
4747
4748 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
4749
4750         * mini.h mini.c: Add mono_get_jit_tls_key ().
4751
4752         * mini-x86.c: Enable fast TLS support on windows.
4753
4754 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4755
4756         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
4757         * mini.c: Check for p/invoke method when generating code. If a
4758         p/invoke method, or it's class, isn't decorated with [Suppress
4759         UnmanagedCodeSecurity] then generate code to call System.Security.
4760         UnmanagedDemand (only if the security manager is active).
4761
4762 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
4763
4764         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
4765         last change as it seems to cause strange crashes.
4766         
4767 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
4768
4769         * *.c: handle unsafe function pointers where needed.
4770
4771 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
4772
4773         * mini.c (mono_jit_free_method): Remove the fixme too.
4774
4775 2005-03-15  Miguel de Icaza  <miguel@novell.com>
4776
4777         * mini.c: As discussed, make the code actually free the delegate
4778         thunk now, to enable the debugging of delegate problems, use
4779         MONO_DEBUG=1 when running Mono. 
4780
4781         This takes also care of parts of the leaks as seen by Joe.
4782
4783 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
4784
4785         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
4786         thread_tls_offset calculation.
4787
4788 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
4789
4790         * declsec.c: Reworked linkdemand checks for icall. The previous code
4791         was using the declaration code (untrusted) and didn't work as expected
4792         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
4793         specific case.
4794
4795 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
4796
4797         * iltests.il: Add new localloc test.
4798
4799         * mini-amd64.c: Handle large stack allocations the same way as on
4800         windows if stack overflow handling is working.
4801         
4802         * mini-amd64.c: Allocate the signal stack using mmap.
4803
4804         * mini.c (sigsegv_signal_handler): Fix reading of context.
4805
4806         * mini-exceptions.c: Fix up stack overflow handling.
4807
4808         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
4809
4810         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
4811
4812         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
4813
4814         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
4815
4816         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
4817         tramp_init functions as they are no longer needed.
4818
4819 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
4820
4821         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
4822         
4823         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
4824
4825         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
4826         
4827         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
4828         support that now.
4829
4830         * mini-ops.h: Add OP_LMUL_IMM.
4831
4832         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
4833         long mul/div opcodes as intrinsic.
4834
4835         * mini-amd64.c (emit_call): Handle the case when the callee might be
4836         an AOT method.
4837
4838 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
4839
4840         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
4841         extra safe.
4842         
4843         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
4844
4845         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
4846
4847 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
4848
4849         * mini.c (mono_codegen): Don't leak here, to help people running
4850         monogrind.
4851
4852 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
4853
4854         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
4855         conversions in sse2 mode.
4856
4857         * basic-float.cs: Add regression test.
4858         
4859         * mini-amd64.c: Reenable sse2.
4860
4861 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
4862
4863         * mini-amd64.c: Disable sse2 until some regressions are fixed.
4864
4865 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
4866
4867         * driver.c: Copyright text should include 2005.
4868         
4869 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
4870
4871         * cpu-amd64.md (load_membase): Fix more max lengths.
4872
4873 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
4874
4875         * cpu-amd64.md (load_membase): Fix max length.
4876
4877         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
4878
4879         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
4880
4881         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
4882         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
4883
4884         * basic-float.cs: Add rounding regression test.
4885
4886         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
4887
4888 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
4889
4890         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
4891         structures in registers for pinvoke wrappers.
4892
4893 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
4894
4895         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
4896
4897 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
4898
4899         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
4900         wrapper to mono_jit_thread_attach.
4901
4902         * mini.c (mini_jit_thread_attach): New jit icall.
4903
4904         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
4905         native->managed wrappers.
4906
4907         * exceptions.cs: Add new regression test.
4908
4909         * mini.c (optimize_branches): Check regions in the cbranch to throw
4910         block case as well. Fixes #73242.
4911
4912 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
4913
4914         * mini.c: thread safety fixes.
4915
4916 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
4917
4918         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
4919         patching stuff, since delegates use jump trampolines so there is
4920         no caller.
4921
4922         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
4923         jump trampolines.
4924         
4925         * tramp-amd64.c: Fix build.
4926
4927         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
4928         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
4929
4930         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
4931         Rename this to mono_arch....
4932         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
4933
4934         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
4935
4936         * mini-amd64.c (emit_call): If both the caller and the callee is
4937         guaranteed to have 32 bit addresses, emit a normal call.
4938
4939         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
4940
4941         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
4942         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
4943         method_ptr inside delegates.
4944
4945 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
4946
4947         * mini.c (mono_jit_free_method): Free the method info even if the native code is
4948         invalidated. Fixes #73001.
4949
4950         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
4951
4952         * mini-x86.c: Only use stdcall for pinvokes on windows.
4953
4954 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
4955
4956         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
4957         * mini-x86.c: remove unreliable __thread var offset detection,
4958         use the correct accessors and enable by default.
4959
4960 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
4961
4962         * mini.c (mono_jit_free_method): Fix memory leak.
4963
4964 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
4965
4966         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
4967
4968 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
4969
4970         * cpu-amd64.md: Fix lengths of atomic opcodes.
4971
4972 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
4973
4974         * driver.c: try to not imply using ICU is any good.
4975
4976 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
4977
4978         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
4979         functions as inline ops.
4980
4981         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
4982         some Interlocked functions as inline ops.
4983
4984         * mini.c (move_basic_block_to_end): Fix bug in last patch.
4985
4986         * mini.h (MonoBasicBlock): Reorganize fields a bit.
4987
4988         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
4989
4990         * mini.c: Add support for OP_NOT_TAKEN.
4991
4992         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
4993         structures in registers for pinvoke wrappers.
4994
4995         * mini-amd64.c: Fix warnings.
4996
4997 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
4998
4999         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
5000
5001         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
5002
5003         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
5004         address instead of loading the address from it.
5005
5006         * mini-x86.c: Add support for returning small structs in registers
5007         on Win32. Fixes part of #70864.
5008         
5009 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
5010
5011         * trace.c (get_token): Improve error checking.
5012
5013 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
5014
5015         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
5016
5017 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
5018  
5019         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
5020         it can be reused for MonoClass.
5021         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
5022         _LINKDEMAND.
5023
5024 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
5025
5026         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
5027         instead of a MonoReflectionMethod. The method information wasn't used
5028         when displaying SecurityException details (but will be now).
5029
5030 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
5031
5032         * Makefile.am : windows build fix.
5033
5034 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
5035
5036         * iltests.il: Add new regression test.
5037
5038         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
5039         #72522.
5040
5041 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
5042  
5043         * mini.c: Moved linkdemand check into helper function check_linkdemand
5044         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
5045         LDFTN, LDVIRTFTN).
5046
5047 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
5048
5049         * declsec.c: Added statistics counter for different kinds of 
5050         LinkDemands.
5051         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
5052         (and commented) declaration.
5053         * mini.c: Added statistics counter for security Demand code 
5054         generation. Added display of security statistics.
5055
5056 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
5057
5058         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
5059         Fix compilation errors under gcc-2.95.
5060
5061 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
5062
5063         * mini.c, driver.c: Use the new jit trampoline hashtable
5064
5065 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5066
5067         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
5068
5069 2005-02-11  Martin Baulig  <martin@ximian.com>
5070
5071         * debug-mini.c (mono_debug_close_method): Free the line number array.
5072
5073 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
5074
5075         * aot.c: Break up large methods into smaller ones. Share GOT slots for
5076         icalls.
5077
5078         * mini.h: Bump AOT file format version. 
5079
5080 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
5081
5082         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
5083         APTC and P/Invoke.
5084         * declsec.h: Added macros to get/set lazyly initialized security 
5085         informations about assemblies. Added new enum for different type of
5086         possible LinkDemand violation. Added function to check LinkDemands.
5087         * mini.h: Added a field to MonoCompile to hold any security violation
5088         detected when JITting a method (so it can be thrown later).
5089         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
5090         and CEE_CALLVIRT. Added code to throw exception at the end of
5091         mini_method_compile (note: the exception is unhandled right now).
5092
5093 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
5094
5095         * mini.c, jit-icalls.c: use the managed implementation of
5096         memset for initobj and memset, to avoid managed <-> unmanaged
5097         transitions.
5098
5099 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
5100
5101         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
5102         optimization if it would need a GOT var.
5103
5104         * basic.cs: Add tests for constant propagation and switch statements.
5105
5106         * ssa.c: Fix out-of-range constant propagation and switch statements.
5107
5108 2005-02-09    <vargaz@freemail.hu>
5109
5110         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
5111
5112 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
5113
5114         * cpu-amd64.md (load_membase): Fix max length of load_membase.
5115
5116 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5117
5118         * mini.c: update to new signature of mono_class_get_allocation_ftn().
5119
5120 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
5121
5122         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
5123         arithmetic operations.
5124
5125 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
5126
5127         * mini-ppc.c: add a workaround for broken user code that
5128         DllImports vararg functions with non-vararg signatures.
5129
5130 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
5131
5132         * mini.c (mono_jit_compile_method_inner): Add detection and a 
5133         meaningfull error message for assemblies written in Managed C++.
5134
5135         * tramp-amd64.c mini-amd64.h: Add support for 
5136         create_trampoline_from_token ().
5137
5138         * aot.c mini-x86.c abcremoval.c: Applied patch from
5139         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
5140
5141 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
5142
5143         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
5144         which takes a MonoImage/token as parameter instead of a MonoMethod.
5145
5146         * aot.c: Use the new trampoline for initializing vtables.
5147
5148         * aot.c: Add support for ldfld/stfld_remote wrappers.
5149
5150         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
5151         rules for compare <MEM>, IMM.
5152
5153         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
5154
5155         * aot.c: Handle inherited finalizers correctly.
5156
5157 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
5158
5159         * inssel.brg (stmt): Add a missing _setup_... ().
5160
5161         * aot.c: Save some parts of the class state to the AOT file and use it
5162         to recompute that state when a class is initialized.
5163
5164         * mini.c: Install AOT hooks into the runtime.
5165
5166         * mini.h: Bump AOT file format version.
5167         
5168         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
5169         Fixes #72148.
5170
5171         * iltests.il: Add new test.
5172
5173 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
5174
5175         * mini.c: fix typo.
5176
5177 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
5178
5179         * mini.c: setup the statistical profiler in the thread attach
5180         callback to cope with the new single thread code.
5181
5182 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
5183
5184         * mini-ppc.c: ensure we have enough room for the profiler
5185         calls (fixed bug#72084).
5186
5187 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
5188
5189         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
5190         it.
5191
5192 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5193
5194         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
5195
5196 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5197
5198         * ssapre.c: Fixed an issue with down safety (this allows IronPython
5199         to succesfully execute parrotbench).
5200         * ssapre.h: Likewise.
5201
5202 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5203
5204         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
5205         variable for stores to method arguments (fixes a SSAPRE issue).
5206
5207 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
5208
5209         * mini.c: handle value types in dup, fixes gen-112.cs.
5210
5211 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
5212
5213         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
5214         sequence for calls in dynamic methods to avoid thunks.
5215
5216 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
5217
5218         * mini.c: correctly remove dynamic methods from the hashtable.
5219
5220 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5221
5222         * driver.c: Disabled SSAPRE until fix the bug that appears
5223         in IronPython's parrotbench.
5224
5225 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
5226
5227         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
5228
5229         * mini.c (mono_method_to_ir): Revert the previous change.
5230         
5231         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
5232         when AOT compiling.
5233
5234         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
5235         mono_jit_info_table_find () etc. when running under valgrind.
5236
5237         * inssel.brg: Fix warnings.
5238
5239         * mini-exceptions.c: Fix warnings.
5240
5241 2005-01-31  Martin Baulig  <martin@ximian.com>
5242
5243         * driver.c (compile_all_methods_thread_main): Don't try to compile
5244         generic methods or anything which has type parameters.
5245
5246 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
5247
5248         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
5249
5250         * TestDriver.cs: Add --verbose flags.
5251
5252         * graph.c ssa.c: Fix 64 bit warnings.
5253         
5254         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
5255         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
5256         Fix 64 bit warnings.
5257
5258         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
5259         variable not spotted by gcc.
5260         
5261         * mini-amd64.c inssel-amd64.brg: Applied patch from  
5262         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
5263         X86_COMPARE_MEMBASE opcodes.
5264
5265         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
5266
5267 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
5268
5269         * *: MonoMethod->signature might be NULL now. You *MUST* use
5270         mono_method_signature.
5271
5272 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
5273
5274         * driver.c (compile_all_methods_thread_main): Compile the methods
5275         without invoking cctors.
5276
5277 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
5278
5279         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
5280         * basic-calls.cs: test for the above.
5281
5282 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
5283
5284         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
5285         MonoJitInfo changes.
5286
5287 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
5288
5289         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
5290         eagerly if it contains dynamic methods.
5291         
5292         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
5293
5294         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
5295         trace, it is now computed by an icall from trace_ips.
5296         
5297         * mini-exceptions.c: Fix a warning.
5298
5299 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
5300
5301         * mini-exceptions.c: don't bother getting stack trace info if
5302         it's not going to be used.
5303
5304 2005-01-27  Raja R Harinath  <rharinath@novell.com>
5305
5306         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
5307         ssapre-mini-ops.h.
5308
5309 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
5310
5311         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
5312
5313         * aot.c: Avoid calling mono_method_get_header () if not needed.
5314
5315         * mini.h: Bump AOT file format version.
5316         
5317         * mini.c (mono_emit_native_call): Allocate a GOT var here.
5318
5319         * mini.c (mono_print_tree): Print more info for calls.
5320
5321 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
5322
5323         * declsec.h: Remove warning by adding missing include for marshal.h
5324
5325 2005-01-26  Martin Baulig  <martin@ximian.com>
5326
5327         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
5328         `ip' twice.
5329
5330 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
5331
5332         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
5333         flags.
5334
5335         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
5336
5337         * aot.c (mono_compile_assembly): Fix a warning.
5338
5339 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
5340
5341         * declsec.c: Look for security attributes on the original MonoMethod 
5342         (and not the wrapped one). This fix permissions on icalls.
5343
5344 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5345
5346         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5347
5348         * mini.c (mono_allocate_stack_slots): Add a fixme.
5349
5350         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5351
5352 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5353
5354         * inssel.brg: optimize casts of sealed types (more
5355         optimizations waiting for fixes in remoting).
5356
5357 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5358
5359         * inssel.brg (stmt): Add another dummy rule.
5360
5361         * driver.c: Fix warnings.
5362
5363         * driver.c (mono_main): If running under valgrind, instruct glib to use
5364         the system allocation functions so valgrind can track the memory
5365         allocated by the g_... functions.
5366
5367         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
5368
5369         * mini-ops.h: Add OP_DUMMY_STORE opcode.
5370
5371         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
5372
5373         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
5374         variables in try regions.
5375
5376         * mini.c (mini_method_compile): Don't disable optimizations on large
5377         methods when AOT compiling.
5378
5379         * mini.c (mono_allocate_stack_slots): New arch independent method to 
5380         allocate stack slots. Not yet used.
5381
5382 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
5383
5384         * debug-mini.c (mono_debug_close_method): Plug some leaks.
5385
5386 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
5387
5388         * mini-ppc.c: make the branch info relative as the code
5389         buffer can be reallocated.
5390
5391 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
5392
5393         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
5394         * driver.c: Removed the AOT/security restriction. Now initialize the
5395         security manager (in metadata) if --security is used.
5396         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
5397         rather than the pointer to declarative security, when AOT is used.
5398
5399 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
5400
5401         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
5402         basic blocks, reduced intrinsic exception throwing code size.
5403
5404 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
5405
5406         * driver.c (mini_usage): Reorder the usage screen.
5407
5408 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
5409
5410         * mini.c (mono_resolve_patch_target): Fix warning.
5411
5412 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
5413
5414         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
5415         previous patch.
5416
5417         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5418
5419         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
5420         breaks the amd64 build.
5421
5422         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
5423         register allocation. Fixes #71454.
5424
5425         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5426
5427         * arrays.cs: Add new regression test.   
5428
5429 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5430
5431         * ssapre.c: Turned usage of snprintf to GString.
5432         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
5433         (I left it on by mistake in my previous commit).
5434
5435 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
5436
5437         * mini.c, cfold.c, basic-calls.cs: preserve side effects
5438         on cond branch optimization (fixes bug# 71515).
5439
5440 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5441
5442         * abcremoval.c: Fixed bug 71062.
5443         * abcremoval.h: Likewise.
5444
5445 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5446
5447         * mini.c: Added a new functionality to optimize_branches, the removal
5448         of useless basic blocks, and fixed some problem in the removal of
5449         critical edges; some utility functions added for both purposes.
5450         * ssapre.c: Added complex expression support, and fixed bug 70637.
5451         * ssapre.h: Likewise.
5452         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
5453         enabled in SSAPRE.
5454         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
5455         * driver.c: Re-enabled SSAPRE.
5456
5457 2005-01-19  Martin Baulig  <martin@ximian.com>
5458
5459         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
5460         the result of mono_get_method_constrained().
5461
5462 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
5463
5464         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
5465         manager.
5466
5467 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
5468
5469         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
5470         be detected.  Fixes #59296.
5471
5472 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5473
5474         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
5475         which can happen. Fixes #71361.
5476
5477 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5478
5479         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
5480         manager.
5481
5482 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5483
5484         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
5485         appdomain-unload.exe to fail.
5486         
5487         * mini.c: Fix some memory leaks.
5488
5489 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
5490
5491         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
5492         Fixed bug and sped up some codepaths.
5493
5494 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5495
5496         * mini.c: Fix some memory leaks.
5497
5498         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
5499         conversion.
5500
5501         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
5502
5503         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
5504         #71320.
5505
5506         * iltests.il: Add regression test for #71320.
5507
5508 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
5509
5510         * mini.c (mono_codegen): Fix installation of profiler hooks.
5511
5512         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
5513
5514 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
5515
5516         * mini.h, mini.c, cfold.c: optimize access to enum
5517         readonly fields, too. Eval conditional branches if possible
5518         to perform unreachable code removal in more cases.
5519
5520 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
5521
5522         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
5523
5524         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
5525         code manager.
5526
5527         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
5528         WinXP DEP. Fixes #71244.
5529
5530 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
5531
5532         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
5533
5534 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
5535
5536         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
5537
5538 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
5539
5540         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
5541         changes.
5542
5543         * mini.h: Bump AOT version.
5544
5545         * mini.h (MonoCompile): Change exvar to a hash table.
5546
5547         * mini.c: Allocate a separate exvar for each handler block.
5548
5549         * mini.c: Get rid of the computation of filter_lengths, its not needed.
5550
5551         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
5552         ex var with the pending exception and only throw if the two are equal.
5553         Fixes #68552.
5554         
5555         * exceptions.cs: Add tests for rethrow and nested catch clauses.
5556
5557         * mini-x86.c: Fix warnings.
5558
5559         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
5560         used by all the ports now.
5561
5562         * aot.c: Add write-symbols and save-temps options.
5563
5564 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
5565
5566         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
5567
5568 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
5569
5570         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
5571         operations.
5572
5573         * tramp-s390.c: Check vtable slot belongs to the domain.
5574
5575         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
5576         as per other platforms.
5577
5578         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
5579
5580 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
5581
5582         * driver.c: we don't run the Main() code in a subthread anymore.
5583
5584 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
5585
5586         * mini.c: added experimental rtc support in the statistical
5587         profiler: if the user has the permission, more accurate statistics
5588         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
5589         The MONO_RTC value must be restricted to what the linux rtc allows:
5590         power of two from 64 to 8192 Hz.
5591
5592 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
5593
5594         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
5595
5596 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
5597
5598         * mini-ppc.c: better icache flush for smp.
5599
5600 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
5601
5602         * mini-amd64.c (emit_move_return_value): Fix memory leak.
5603
5604         * mini-x86.c (get_call_info): Add the get_call_info () code from the
5605         amd64 port, not yet used.
5606
5607 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
5608
5609         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
5610         a struct type.
5611
5612 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
5613
5614         * driver.c: Added --security option to activate the security manager.
5615         Right now this will allow code generation for declarative demands and
5616         is disabled when AOT is specified.
5617         * mini.c: Add code generation for declarative security demands.
5618         * mini.h: Add mono_use_security_manager as an extern gboolean.
5619
5620 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
5621
5622         * aot.c (mono_compile_assembly): Speed up compilation a bit by
5623         emitting more dense assembly code.
5624
5625         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
5626         exception throwing stuff.
5627
5628 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
5629
5630         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
5631         dead code.
5632
5633         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
5634         left in by mistake.
5635
5636         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
5637         fixed.
5638
5639         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
5640
5641         * tramp-*.c: Only patch vtable slots if the object is in the current
5642         domain. Fixes appdomain-unload.exe.
5643
5644         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
5645         
5646         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
5647         x86 branch.
5648
5649 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
5650
5651         * mini.c (reverse_branch_op): New helper function.
5652
5653         * mini.c (optimize_branches): Run the new optimization only on 
5654         platforms which support it. Also reverse all kinds of branches.
5655
5656         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
5657
5658         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
5659         a throw statement.
5660
5661         * mini.c (optimize_branches): Reverse not-equals branches if the false
5662         bblock is a throw. This happens a lot of time with argument checking in
5663         corlib.
5664
5665         * mini.c (mono_codegen): Add support for placing basic blocks after
5666         the function epilogue.
5667
5668         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
5669         function epilogue.
5670         
5671 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
5672
5673         * mini.c (setup_stat_profiler): Only set this up if the platform
5674         supports ITIMER_PROF.
5675
5676 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
5677
5678         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
5679         previous patch.
5680
5681         * inssel.brg: Fix a warning.
5682
5683 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
5684
5685         * mini.c: added support for statistical profiler 
5686         (run with: --profile=default:stat).
5687
5688 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
5689
5690         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
5691
5692         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
5693
5694         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
5695         related to global registers from the amd64 port.
5696
5697 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
5698
5699         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
5700
5701         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
5702         with global registers.
5703         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
5704
5705         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
5706
5707 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
5708
5709         * debug-mini.c (encode_value): Fix off-by-one.
5710
5711         * aot.c (encode_value): Likewise.
5712
5713         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
5714
5715 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
5716
5717         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
5718         AOT.
5719
5720         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
5721         
5722         * aot.c (emit_method_info): Increase size of temp buffer.
5723
5724         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
5725         the AOT case.
5726
5727 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
5728
5729         * aot.c (emit_method_info): Fix build.
5730         
5731         * aot.c: Further rework of the AOT file format to reduce the size of
5732         the method info data.
5733
5734         * mini.h: Bump AOT file format version.
5735
5736 2004-12-27  Martin Baulig  <martin@ximian.com>
5737
5738         * mini.c (mini_get_method): New static method; call
5739         mono_get_method_full() and mono_get_inflated_method().
5740         (mono_method_to_ir): Use mini_get_method() instead of
5741         mono_get_method_full(). 
5742
5743 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
5744
5745         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
5746
5747 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
5748
5749         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
5750
5751         * inssel-amd64.brg: Add some optimization rules.
5752
5753 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
5754
5755         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
5756         standard not GC'd stuff is fine.
5757
5758 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
5759
5760         * aot.c: Rework the AOT file format to get rid of most of the global
5761         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
5762
5763         * mini.h: Bump AOT file format version.
5764         
5765 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
5766
5767         * mini.h: Bump AOT file format version.
5768
5769         * aot.c (mono_aot_is_got_entry): New function to determine if an 
5770         address is inside a GOT.
5771
5772         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
5773
5774         * cpu-pentium.md: Increase the maximum size of some instructions which
5775         might involve a got access.
5776         
5777         * mini.c (get_method_from_ip): Another debug helper function.
5778
5779         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
5780         when got var accesses are created during the decompose phase.
5781
5782         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
5783
5784         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
5785         argument mini_compile_method and to MonoCompile, and use this to
5786         determine whenever a given method is compiled for AOT. This allows the
5787         other methods compiled during AOT compilation to be free of AOT stuff,
5788         so the backends does not need to add special support for them by
5789         creating a fake GOT etc.
5790
5791         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
5792         longer needed.
5793
5794 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
5795
5796         * mini.c (mono_method_to_ir): It turns out that some of the
5797         x-appdomain wrappers are lax with types, so just ignore this for
5798         all wrappers.
5799
5800         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
5801         at the vtable->klass. If it is non-shared code we can just use the
5802         vtable.
5803
5804 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
5805
5806         * mini-ppc.c: access MonoDomain from tls, too.
5807
5808 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
5809
5810         * declsec.c: Removed unused variable (and related warning ;-)
5811
5812 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
5813
5814         * iltests.il: New test for LDELEMA on an array of ref types.
5815
5816         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
5817         all ldelema's on reftypes.
5818         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
5819         it was the wrong place to put it.
5820
5821         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
5822         register to pop to make this cleaner, at the request of Paolo.
5823
5824 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
5825
5826         * mini-ops.h (OP_GETHASHCODE): New op.
5827
5828         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
5829
5830         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
5831         operation.
5832
5833         For a microbenchmark, this reduces the cost of Hashtable.get_Item
5834         by 25%.
5835         
5836         * mini-x86.c (mono_arch_output_basic_block): Rather than
5837
5838         add ebp, 4
5839
5840         Emit
5841
5842         pop edx
5843
5844         The first is 3 bytes while the second is 1. This saves 36 kb on
5845         mscorlib, quite a big saving. When bootstraping mcs, I was able to
5846         see a small boost because of icache locality.
5847
5848         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
5849
5850 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
5851
5852         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
5853         started code sharing with the generic code.
5854
5855 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
5856
5857         * mini-ppc.c, cpu-g4.md: added code for direct access to
5858         tls data slots.
5859
5860 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
5861
5862         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
5863          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
5864         to OP_TLS_GET.
5865
5866 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
5867
5868         * declsec.c|h: Added functions to cache the declarative stack modifiers
5869         in MonoJitInfo and to create a security frame from a MonoJitInfo 
5870         structure.
5871         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
5872         created. Register internal calls for System.Security.SecurityFrame::
5873         _GetSecurityFrame and _GetSecurityStack.
5874         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
5875         the definitions for the new stack walk/callback mechanism.
5876         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
5877         first security frame for LinkDemands and InheritanceDemands) and
5878         GetSecurityStack for Demands. Both use the new mono_walk_stack code
5879         from lupus.
5880         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
5881         walk initialization (lupus).
5882
5883 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
5884
5885         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
5886         idiom.
5887         (handle_loaded_temps): Do not create a temporary variable for
5888         things that we know are temps. They will never be modified.
5889         (mono_spill_call): Set MONO_INST_IS_TEMP
5890         (mono_emulate_opcode): ditto
5891         (emit_tree): ditto
5892         (mono_method_to_ir.CEE_DUP): ditto
5893
5894 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
5895
5896         * mini.c (type_to_eval_stack_type): Make this handle the void type
5897         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
5898         (emit_tree): use ip_in_bb to special case some common idioms
5899         Update all callers to pass in the IP.
5900         (mono_method_to_ir): Make CEE_CALL* do the above as well.
5901
5902         This gives us a nice 2% speedup in mcs bootstrap.
5903
5904         * mini-x86.c (peephole_pass): Peephole pass to make
5905         mov  [foo], eax
5906         push [foo]
5907
5908         into
5909
5910         mov [foo], eax
5911         push eax
5912
5913         * mini.c (ip_in_bb): new method.
5914         (mono_method_to_ir): use this method rather than doing the hash
5915         lookup ourselves.
5916
5917         * linear-scan.c (mono_linear_scan): When expiring actives, you
5918         don't need to keep around variables that expire on this
5919         instruction. This makes it so that:
5920              a = b + 1
5921         will turn into:
5922              store (ebx add (ebx, 1))
5923         which will become
5924              add ebx, 1
5925
5926 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
5927
5928         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
5929         combination to avoid doing two copies. Fix up problems with previous
5930         patch.
5931
5932         * mini.c: Fix 64 bit warnings.
5933
5934         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
5935
5936 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
5937
5938         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
5939         changes from the x86 code.
5940
5941         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
5942
5943 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
5944
5945         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
5946         throwing code to reduce its size, unify the AOT and non-aot code and 
5947         get rid of relocations in the AOT case.
5948
5949         * mini-x86.h mini.c exceptions-x86.c 
5950         (mono_arch_get_throw_corlib_exception): New arch specific function to 
5951         raise corlib exceptions which doesn't require relocations in the 
5952         caller.
5953
5954         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
5955
5956 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
5957
5958         * mini.c (mono_emit_method_call): Only allocate the got var when it is
5959         needed.
5960
5961         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
5962         in the AOT case.
5963
5964 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5965
5966         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
5967         with add function when used from Inc/dec atomic 
5968         functions. Re-enabled optimization on x86.
5969         * mini-ops.h: renamed atomic_add functions to
5970         allow _add to match the Interlocked::Add and
5971         _add_next to match Interlocked::Inc/Dec.
5972
5973 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
5974
5975         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
5976         linking of BBs to the end BB, and enabled SSAPRE also with
5977         consprop and copyprop (which was prevented by that bug).
5978
5979 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5980
5981         * mini-x86.c: disabling the Interlocked optimizing code. 
5982
5983 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
5984
5985         * aot.c (load_aot_module): Move reading of got_addr after the AOT
5986         file version check.
5987         
5988 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5989
5990         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
5991         interlocked optimization due lack of support on x86, rewrote 
5992         exchange to take into account that base may be in eax.
5993         
5994         xsp works again; activated Interlocked optimizing code.
5995         
5996 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
5997
5998         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
5999
6000 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
6001
6002         * mini-ops.h: Add new opcodes.
6003
6004         * mini.h: Add new patch types. Add got_var to MonoCompile.
6005
6006         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
6007         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
6008         make it work with all kinds of patchable code.
6009
6010         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
6011         address of the GOT, and referencing entries in the GOT.
6012
6013         * mini.c: Add code to load the GOT address if needed by an opcode.
6014
6015         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
6016         independent AOT code on the x86 using an elf-style Global Offset Table.
6017
6018 2004-12-14  Raja R Harinath  <rharinath@novell.com>
6019
6020         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
6021
6022 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6023
6024         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
6025         when running xsp.
6026
6027 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
6028
6029         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
6030         of Interlocked:Increment/Decrement/Add as inline ops.
6031         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
6032
6033 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
6034
6035         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
6036         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
6037
6038 2004-12-12  Duncan Mak  <duncan@ximian.com>
6039
6040         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
6041         again. `patch_info->table_size' is no longer valid after Zoltan's
6042         commit #37636.
6043
6044 2004-12-12  Martin Baulig  <martin@ximian.com>
6045
6046         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
6047         if we are the "real" method, ie. not an inlined method inside it.
6048
6049 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
6050
6051         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
6052         before we look in the special fields table. This fixes
6053         ../tests/thread-static-init.cs.
6054
6055 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6056
6057         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
6058         for Array get_Rank and get_Length. Fixes bug #70465.
6059
6060 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
6061
6062         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
6063         separate structure to reduce the size of MonoJumpInfo.
6064
6065 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
6066
6067         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
6068
6069 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
6070
6071         * mini.c (mini_get_inst_for_method): Changed to allow ports
6072         to return a MonoInst instead of opcode 
6073         (renamed mini_get_opcode_for_method to better reflect the new functionality)
6074         
6075         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
6076         Allow ports to return a created MonoInst instead of op-code, will enable
6077         new optimizations.
6078         (renamed mini_get_opcode_for_method to better reflected the functionality)
6079
6080 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
6081
6082         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
6083
6084 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
6085
6086         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
6087         Fixes #69985.
6088
6089 2004-12-08  Martin Baulig  <martin@ximian.com>
6090
6091         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
6092         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
6093
6094 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
6095
6096         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
6097         correctly.
6098
6099         * exceptions.cs: Disable some tests which depend on properties of x86 fp
6100         arithmetic.
6101
6102 2004-12-08  Raja R Harinath  <rharinath@novell.com>
6103
6104         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
6105
6106 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
6107
6108         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
6109         bug introduced by the previous patch.
6110
6111 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
6112
6113         * mini-ppc.c, objectc.cs: handle large structs passed by value
6114         (fixes bug #69972).
6115
6116 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
6117
6118         * mini-ppc.c: OP_ARGLIST implementation from
6119         Geoff Norton  <gnorton@customerdna.com>.
6120
6121 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
6122
6123         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
6124         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
6125
6126 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
6127
6128         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
6129
6130 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6131
6132         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
6133         support.
6134
6135 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
6136
6137         * mini-sparc.c: Zero out localled-ed memory.
6138
6139         * iltests.il: Add tests for zeroing out localloc-ed memory.
6140
6141 2004-12-04  Martin Baulig  <martin@ximian.com>
6142
6143         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
6144         mono_method_get_signature_full().       
6145
6146 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
6147
6148         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
6149         and some utility functions (always for SSAPRE), integrated SSAPRE.
6150         * mini.h: Likewise.
6151         * driver.c: Added ssapre option.
6152         * ssa.c: Small fix on OP_ARG handling.
6153         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
6154         * Makefile.am: Likewise.
6155
6156 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
6157
6158         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
6159         now in the xp code.
6160
6161         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
6162         icall.
6163
6164 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6165
6166         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
6167         
6168         * cpu-s390.md : Increase instruction length of oparglist.
6169
6170         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
6171
6172 2004-11-30  Martin Baulig  <martin@ximian.com>
6173
6174         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
6175         virtual generic methods.  We call a special helper_compile_generic_method()
6176         icall to retrieve the method from the vtable, inflate and compile
6177         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
6178
6179         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
6180
6181 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
6182
6183         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
6184
6185 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
6186
6187         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
6188         Fixes #69929.
6189
6190 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
6191
6192         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
6193         platforms with PIC aot.
6194
6195 2004-11-28  Martin Baulig  <martin@ximian.com>
6196
6197         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
6198         Fixes gen-112.cs.
6199
6200 2004-11-28  Martin Baulig  <martin@ximian.com>
6201
6202         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
6203         the result of mono_type_get_underlying_type() to check whether
6204         we're byref.
6205
6206 2004-11-26  Martin Baulig  <martin@ximian.com>
6207
6208         * mini.c
6209         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
6210         in the g_assert().
6211
6212 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
6213
6214         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
6215         the same way as the other arguments so they won't get clobbered.
6216
6217         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
6218         calls through R11 since it is clobbered by the trampoline code.
6219
6220 2004-11-26  Raja R Harinath  <rharinath@novell.com>
6221
6222         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
6223         pick up in-tree mscorlib.dll.
6224
6225 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
6226
6227         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
6228
6229         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
6230         runtime data/code are now stored in a table similar to the GOT in ELF. 
6231         This allows the code itself to be position independent.
6232
6233         * aot.c: Fix loading of referenced assemblies after the lazy assembly
6234         loading changes.
6235
6236         * aot.c: Attach ELF type (object/function) directives to all global
6237         symbols.
6238
6239         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
6240
6241         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
6242
6243         * mini-amd64.h: Turn on PIC AOT code.
6244
6245         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
6246         returning the offset within an OP_AOTCONST instruction where the GOT
6247         offset needs to be added.
6248
6249         * mini.h: Bump AOT file format version.
6250
6251 2004-11-25  Martin Baulig  <martin@ximian.com>
6252
6253         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
6254         uninflated generic methods.
6255
6256 2004-11-25  Martin Baulig  <martin@ximian.com>
6257
6258         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
6259
6260 2004-11-24  Martin Baulig  <martin@ximian.com>
6261
6262         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
6263         original klass (this only applies for generic instances).
6264
6265 2004-11-24  Martin Baulig  <martin@ximian.com>
6266
6267         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
6268         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
6269         that array).
6270
6271 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
6272
6273         * mini.c (mono_method_to_ir): Disable inlining for methods containing
6274         localloc. Fixes #69678.
6275
6276         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
6277         
6278 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
6279
6280         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
6281         used SSE registers on pinvoke calls. Fixes #69774.
6282
6283 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
6284
6285         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
6286         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
6287
6288 2004-11-23  Raja R Harinath  <rharinath@novell.com>
6289
6290         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
6291         Refer directly to the mcs/ tree.
6292
6293 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6294
6295         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
6296         Check if a trampoline for a synchronized method is required. 
6297
6298 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
6299
6300         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
6301         with localloc if needed. Throe arithmetric exception in
6302         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
6303         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
6304
6305 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
6306
6307         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
6308         types before switching on type.  Fixes #69622.
6309
6310 2004-11-19  Raja R Harinath  <rharinath@novell.com>
6311
6312         * Makefile.am (check-local): New.  Integrate into 'make check'.
6313         (MCS,RUNTIME): Define using in-tree mono and mcs.
6314         (ILASM): New.
6315         (%.exe): Use $(ILASM).
6316
6317 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
6318
6319         * mini-ppc.c: adjust initial prolog size (bug #69691).
6320
6321 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
6322
6323         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
6324         #69664.
6325
6326 2004-11-17  Raja R Harinath  <rharinath@novell.com>
6327
6328         * Makefile.am (clean-local): Rename from 'clean'.
6329
6330 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6331
6332         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
6333         to mono_arch_is_int_overflow. 
6334         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
6335         SIGFPE events.
6336
6337 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
6338
6339         * declsec.c|h: New files to support declarative security attributes.
6340         Added function to check if a method has (applicable) security.
6341         * mini.c|h: Add check for declarative security attributes in
6342         mono_method_check_inlining.
6343         * Makefile.am: Added declsec.c and declsec.h to the build.
6344
6345 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
6346
6347         * mini.c, mini.h: update to keep dynamic code info per-domain.
6348
6349 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
6350
6351         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
6352         (mini_init): Get rid of it from here too.
6353
6354 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
6355
6356         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
6357         implemented OP_RETHROW (patch by Geoff Norton
6358         <gnorton@customerdna.com>).
6359
6360 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
6361
6362         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
6363         between appdomains.  Fixes appdomain-unload on PPC.
6364
6365 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
6366
6367         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6368         mini-exceptions.c: handle the new wrapper types.
6369         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
6370         token value as a MonoClass* when compiling a wrapper.
6371         mono_jit_create_remoting_trampoline now takes an additional
6372         MonoRemotingTarget parameter.
6373         
6374 2004-11-10  Martin Baulig  <martin@localhost>
6375
6376         * mini.c (mono_method_to_ir): Use `generic_container->context'
6377         rather than creating a new one.
6378
6379 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6380
6381         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
6382
6383         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
6384
6385 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
6386
6387         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
6388         the experimental aot cache stuff.
6389
6390 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
6391
6392         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6393         mini-exceptions.c: update to exception clause structure changes.
6394
6395 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6396
6397         * exceptions-x86.c (throw_exception): Fix warnings.
6398
6399         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
6400         for OP_RETHROW.
6401
6402 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6403
6404         * exceptions-sparc.c (get_throw_exception): Really fix this.
6405
6406 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
6407
6408         * tramp-*.c: we no longer support icalls without wrappers, so
6409         a bit of code can be removed here
6410
6411 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
6412
6413         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
6414         patch.
6415
6416         * cpu-sparc.md: Add op_rethrow.
6417
6418         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
6419
6420         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
6421
6422         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
6423         * mini-ops.h: Add OP_RETHROW.
6424
6425         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
6426
6427         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
6428
6429 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
6430         
6431         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
6432         Makes the output much easier to read
6433
6434 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
6435
6436         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
6437         prevents another huge leak when compiling with ssa. Secondly, the
6438         performance of doing this rather than freeing the lists is much
6439         better. GList does a lock every time you allocate a list link,
6440         so that it can use a memory pool. So, it is better to just use
6441         a memory pool of our own.
6442         
6443         * ssa.c, linear-scan.c: replace g_list_remove_link with
6444         g_list_delete.  The remove one does not free the GList, so we were
6445         leaking memory. On -O=all --compile-all with corlib, this cut down
6446         3 MB of allocations.
6447
6448 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
6449
6450         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
6451
6452         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
6453
6454         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
6455         into a new function mono_create_jit_trampoline ().
6456
6457 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
6458
6459         * trace.c (get_spec): Allow tracing of classes without a namespace.
6460
6461 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
6462
6463         * mini.c: Fix pointer overwrite in mini_method_compile.
6464
6465 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
6466
6467         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
6468         The darwin ABI needs some special handling for 1 and 2 byte structs
6469         Lets use lbz/lhz instead of lwz everywhere.
6470         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
6471         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
6472         Use stb/sth for the former, and put the latter always on stack instead of in
6473         argument registers.
6474
6475 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
6476
6477         * trace.c (is_filenamechar): Add '_'.
6478
6479 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
6480
6481         * mini-s390.c: Fix prolog length to allow for large trace requirements.
6482
6483         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
6484
6485 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
6486
6487         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
6488         depends on libmonogc. Fixes #68805.
6489
6490 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
6491
6492         * mini.c (mono_jit_free_method): Provide extra information for
6493         this error.  Currently this leaks, but will be turned into a
6494         developer option in the future.
6495
6496 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
6497
6498         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
6499
6500 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
6501
6502         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
6503         boundary. Fixes reading of PATCH_INFO_R4 and R8.
6504         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
6505
6506 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
6507
6508         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
6509         trampolines for AOT code.
6510
6511 2004-10-22    <vargaz@freemail.hu>
6512
6513         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
6514         constructed types. Fixes #68136.
6515
6516 2004-10-21  Martin Baulig  <martin@ximian.com>
6517
6518         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
6519         if it returns true, unwind the stack to the call instruction.
6520
6521 2004-10-21    <vargaz@freemail.hu>
6522
6523         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
6524
6525         * mini.h: Bump AOT version number.
6526
6527         * objects.cs: Add another test for unbox trampolines.
6528
6529         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
6530         valuetype methods.
6531
6532 2004-10-20    <vargaz@freemail.hu>
6533
6534         * driver.c: Add SHARED to the set of optimizations tested.
6535
6536         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
6537
6538         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
6539         used by CEE_NEWARR.
6540
6541         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
6542
6543 2004-10-20  Martin Baulig  <martin@ximian.com>
6544
6545         * mini-exceptions.c (mono_handle_exception): Call
6546         mono_debugger_handle_exception() to tell the debugger about
6547         catch/finally clauses.
6548
6549 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
6550
6551         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
6552
6553         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
6554         #68447.
6555
6556 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
6557
6558         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
6559         methods as their native size, fixed bug #57543, #57545.
6560         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
6561         This saves a temporary register and mullw call down into 1 (minor perf
6562         increase for cases like sum = sum * 5;  This use to translate into:
6563             li r11,5
6564             mullw r28,r28,r11
6565         It now translates to
6566             mulli r28,r28,5
6567
6568 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
6569
6570         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
6571         #68388.
6572
6573 2004-10-11  Martin Baulig  <martin@ximian.com>
6574
6575         * mini.c (mono_method_to_ir): If we're a generic method, get the
6576         MonoGenericContainer from our MonoMethodNormal and create a
6577         MonoGenericContext from it.
6578
6579 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
6580
6581         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
6582
6583         * basic-long.cs: Add test for checked i8->i2 cast.
6584
6585 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6586
6587         * inssel-ppc.brg: added a couple of speedup rules.
6588
6589 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
6590
6591         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
6592         to speed up rebuilds.
6593
6594 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6595
6596         * mini-s390.c: Minor fix to OP_OR_IMM.
6597
6598 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
6599
6600         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
6601         better. Fixes appdomain-unload.exe on sparc.
6602
6603 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
6604
6605         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
6606         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
6607         see bug 67324.
6608
6609 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
6610
6611         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
6612
6613 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
6614
6615         * mini.c: Always generate a field read/write wrapper for members
6616         of the class MarshalByRefObject since the actual instance could
6617         be a CBO.
6618
6619 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
6620
6621         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
6622
6623 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
6624
6625         * driver.c mini.h trace.c: Move the setting of the main assembly into
6626         a separate function called mono_trace_set_assembly () and call it after
6627         actually loading the main assembly. Fixes #66872.
6628
6629 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
6630
6631         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
6632         using the code manager.
6633
6634 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
6635
6636         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
6637
6638 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
6639
6640         * cpu-amd64.md: Fix bug in previous patch.
6641         
6642         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
6643         #66650.
6644
6645 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
6646
6647         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6648         mini-exceptions.c: updates for changed stack walk interface.
6649
6650 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6651
6652         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
6653
6654 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
6655
6656         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
6657
6658 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
6659
6660         * driver.c (mini_regression_list): Do not call mono_assembly_close 
6661         since assemblies can't be unloaded.
6662         
6663 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
6664
6665         * cpu-amd64.md: Fix more instruction lengths.
6666
6667         * cpu-amd64.md: Fix lengths of some instructions.
6668
6669 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
6670
6671         * inssel.brg: Make the array ldelema check aot friendly.
6672
6673 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
6674
6675         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
6676
6677         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
6678
6679 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
6680
6681         * mini-x86.c: Fix build.
6682
6683         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
6684         mono_type_get_underlying_type () helper function to simplify code.
6685         
6686 2004-09-09  Martin Baulig  <martin@ximian.com>
6687
6688         * mini-amd64.c: Don't access `type->data.klass' directly, call
6689         mono_class_from_mono_type() instead since the type may be a
6690         generic instance.
6691
6692 2004-09-09  Martin Baulig  <martin@ximian.com>
6693
6694         * mini-amd64.c (get_call_info): Fix support for generic instances.
6695         (add_valuetype): Use mono_class_from_mono_type() to get the class
6696         since we can be a generic instance.
6697
6698 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
6699
6700         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
6701
6702 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
6703
6704         * liveness.c: reset spill costs on each scan: bug 62107
6705
6706 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
6707
6708         * exceptions-sparc.c (mono_arch_find_jit_info): remove
6709         unnecessary line that doesn't compile
6710
6711 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
6712
6713         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
6714         trampolines, make them call an error function so people can fix their
6715         code.
6716
6717 2004-09-06  Martin Baulig  <martin@ximian.com>
6718
6719         * mini.c (mono_method_to_ir): When initializing locals, handle a
6720         generic instances like a valuetype if it's a valuetype and like a
6721         class if it's a class.
6722
6723 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
6724
6725         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
6726         stack. Fixes #64674.
6727
6728         * exceptions.cs: Add test for unwinding of call arguments.
6729
6730 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
6731
6732         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
6733         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
6734         set the carry/borrow flag). The sparc and s390 implementations
6735         can now use optimized versions (and simplify the code). ppc bugfixes.
6736
6737 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
6738
6739         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
6740
6741 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
6742
6743         * inssel-amd64.brg: Remove leftover 32 bit rule.
6744
6745         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
6746
6747 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
6748
6749         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
6750         mono_arch_find_jit_info functions into a new function. Fix a memory
6751         leak.
6752
6753         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
6754         refactored code.
6755         
6756 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
6757
6758         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
6759         as well.
6760         
6761         * exceptions.cs: Add array size tests.
6762
6763         * mini.c: Allocate a separate icall wrapper for each arity of 
6764         mono_array_new_va. Fixes #59509.
6765
6766         * exceptions.cs: Add testcase for 64578.
6767
6768         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
6769
6770         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
6771         
6772 2004-09-02  Martin Baulig  <martin@ximian.com>
6773
6774         * mini.c (mono_method_to_ir): When initializing the locals, call
6775         handle_initobj() on the generic instance itself, not its
6776         underlying type.
6777
6778 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
6779
6780         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
6781         MonoJitInfo for dynamic methods.
6782
6783         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
6784
6785         * mini.c: Add support for freeing JIT data for dynamic methods.
6786         
6787 2004-09-01  Martin Baulig  <martin@ximian.com>
6788
6789         * mini-x86.c (is_regsize_var): Added support for generic
6790         instances.
6791         (mono_arch_emit_prolog): Make this compile again, use
6792         `x86_push_imm_template (code)'.
6793
6794 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
6795
6796         * mini-x86.c: make all push_imm instructions that get
6797         patched always emit the long form
6798
6799 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
6800
6801         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
6802         in a per-domain hash.
6803
6804         * mini-amd64.c (merge_argument_class_from_type): Handle generic
6805         types.
6806
6807 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
6808
6809         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
6810         work.
6811         
6812         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
6813         work.
6814
6815         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
6816         Beginnings of SSE2 support.
6817
6818         * exceptions.cs: Add more tests for checked int<->uint casts.
6819
6820 2004-08-28  Martin Baulig  <martin@ximian.com>
6821
6822         * mini-x86.c (mono_arch_instrument_epilog): Added support for
6823         generic instances.
6824
6825         * mini.c
6826         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
6827         Handle generic instances recursively.
6828
6829 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6830
6831         * iltests.il: test for conv.u8 on a constant
6832
6833 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6834
6835         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
6836         LCONV_x4 (shrun_32 (membase)).
6837
6838 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6839
6840         * inssel-x86.brg: c&p rules for push/setret of long
6841
6842 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
6843
6844         * inssel-x86.brg: c&p rules for compare (base, regvar) and
6845         compare (regvar, base)
6846
6847         * inssel-x86.brg: more burg love
6848
6849         * inssel.brg: more cleanup
6850
6851         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
6852
6853 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
6854
6855         * basic-long.cs, basic-calls.cs: new tests for optimization.
6856
6857 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
6858
6859         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
6860         patch.
6861
6862 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
6863
6864         * mini-amd64.c (read_tls_offset_from_method): Add another case.
6865         
6866 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
6867
6868         * inssel.brg (mini_emit_memcpy): use 
6869         NO_UNALIGNED_ACCESS to disable memcpy optimization
6870
6871 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
6872
6873         * mini-amd64.c: Handle generic types in various places.
6874
6875         * mini.c (mono_method_to_ir): Handle generic types in init locals.
6876
6877 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
6878
6879         * mini.c (handle_box): Fix warning.
6880
6881         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
6882
6883         * mini-amd64.h: Enable the emit_state optimization.
6884
6885         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
6886
6887         * mini-amd64.c: Add some new 64 bit peephole opts.
6888
6889         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
6890
6891         * cpu-amd64.md: sreg1 of div instructions must be %rax.
6892
6893         * mini-amd64.c: Register allocator fixes.
6894
6895         * mini.c: Add an optimization to emit_state to avoid allocation of new
6896         registers on some platforms.
6897
6898 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
6899
6900         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
6901
6902         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
6903         allocation. Fixes #63085.
6904
6905         * basic-long.cs: Add new regression test.
6906
6907         * mini-amd64.c: Register allocator improvements.
6908
6909 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
6910
6911         * mini-amd64.c (read_tls_offset_from_method): Add another code
6912         sequence.
6913
6914         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
6915         instruction sequence for nullifying class init trampolines.
6916
6917         * objects.cs: Add new regalloc test.
6918
6919         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
6920
6921 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
6922
6923         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
6924         
6925         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
6926         arguments.
6927
6928         * driver.c: Fix profiling after TLS changes.
6929         
6930         * driver.c (mono_main): Set mono_stats.enabled if needed.
6931
6932         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
6933         CEE_BOX.
6934
6935 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
6936
6937         * mini-x86.c: use a 1 op rather than a 2 op tls access
6938         instruction -> faster.
6939
6940 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
6941
6942         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
6943         x86 backend.
6944
6945 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
6946
6947         * exceptions-sparc.c (throw_exception): fix typo
6948
6949 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
6950
6951         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
6952         set tree->dreg correctly with tls. Allow any
6953         register to be used.
6954
6955         * mini-x86.c (read_tls_offset_from_method): add new code
6956         generation pattern seen with GCC.
6957
6958
6959 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
6960
6961         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
6962         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6963         exceptions-sparc.c: fix some performance issues in exception
6964         handling and setting of the stack trace for exceptions that were
6965         already thrown.
6966
6967 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
6968
6969         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
6970         x86 backend.
6971         
6972         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
6973         registers.
6974
6975 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
6976
6977         This patch inlines tls access, when possible.
6978         
6979         * mini.h: new arch functions for TLS intrinsics.
6980         All platforms updated with a stub.
6981
6982         * mini.c: use the new intrinsics
6983
6984         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
6985         arch specific intrinsic for tls variables
6986
6987 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
6988
6989         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
6990         under windows.
6991
6992 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
6993
6994         * mini.c: thread local allocation
6995
6996 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
6997
6998         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
6999
7000         * Makefile.am: Link against the static version of libmonogc.
7001         
7002         * Makefile.am: Link the static versions of the convenience libraries
7003         into the mono executable.
7004
7005         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
7006
7007 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
7008
7009         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
7010         on integer overflow.
7011
7012         * mini-amd64.c: Reorganize function call code.
7013
7014         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
7015
7016 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7017
7018         * inssel-x86.brg: use xor eax,eax.
7019         
7020         * basic.cs: new tests
7021
7022 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7023
7024         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
7025         in exception throwing code.
7026         
7027 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7028
7029         * inssel-x86.brg: use xor esi,esi.
7030
7031 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7032
7033         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
7034         can trace methods compiled during mini_init () too.
7035
7036         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
7037         CEE_CONV_U4.
7038
7039 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7040
7041         * Makefile.am: static link on x86 (r=zoltan)
7042
7043 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7044
7045         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
7046         code since it causes some programs to fail.
7047
7048 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
7049
7050         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
7051
7052 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
7053
7054         * mini.c: ovfops_op_map - add STACK_OBJ case for
7055         CONV_I 
7056         * basic.cs: add test_0_pin_string as test
7057         case for above.
7058
7059 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
7060
7061         * Makefile.am: build C# if srcdir != builddir
7062
7063 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
7064
7065         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
7066         fall-through blocks.
7067
7068 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7069
7070         * driver.c: enable loop by default again and include abcrem in -O=all.
7071
7072 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
7073
7074         * iltests.il: Add some localloc tests.
7075
7076         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
7077
7078         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
7079         Fixes #62574.
7080
7081         * inssel-amd64.brg: Add some optimizations.
7082
7083         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
7084         for gcc-3.4.
7085
7086         * Makefile.am: Statically link mono against libmono on AMD64.
7087         
7088         * mini-amd64.c inssel-amd64.brg: Optimizations.
7089
7090 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
7091
7092         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
7093
7094         * tramp-amd64.c: Patch calling code in trampolines.
7095
7096 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
7097
7098         * mini-amd64.c: pinvoke struct passing fixes.
7099
7100 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
7101
7102         * mini-sparc.c: redo change, make mono_arch_cpu_init call
7103         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
7104
7105 2004-08-05  Duncan Mak  <duncan@ximian.com>
7106
7107         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
7108         CEE_LDELEM_ANY.
7109
7110 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7111
7112         * mini-amd64.c (emit_move_return_value): Move return value for normal
7113         calls too.
7114
7115 2004-08-05  Martin Baulig  <martin@ximian.com>
7116
7117         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
7118         `type->type'; just modify `type' itself when dealing with enums
7119         and generic instances.
7120         (check_call_signature): Make `simple_type' a `MonoType *'.
7121
7122 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7123
7124         * mini.c: Use OP_PADD to add offsets to addresses.
7125
7126         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
7127
7128 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
7129
7130         * mini-sparc.c (mono_arch_emit_epilog): fix check
7131         for folding last op into restore instruction
7132
7133 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7134
7135         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
7136         helper methods using the code manager.
7137         
7138         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
7139
7140         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
7141
7142 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7143         
7144         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
7145           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
7146
7147         * mini-s390.c: fix tail processing
7148
7149 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
7150
7151         * mini-ppc.c: mul.ovf.un exception name fix.
7152
7153 2004-08-03  Martin Baulig  <martin@ximian.com>
7154
7155         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
7156         instances; before jumping to `handle_enum', also modify `ptype'.
7157
7158 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
7159
7160         * cpu-sparc.md: fcall maximal length too small.
7161
7162 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
7163
7164         * mini-amd64.c mini.h: Add initial support for passing/returning 
7165         structures to/from pinvoked methods.
7166
7167 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
7168
7169         * mini-ppc.c: reg allocator fix.
7170
7171 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
7172
7173         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
7174
7175         * inssel.brg: Optimize memset on 64 bit machines.
7176
7177         * mini-amd64.c: Fix some vararg cases.
7178
7179 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7180
7181         * mini-s390.c: Corrected macro in emit_float_to_int
7182
7183         * s390-abi.cs: Tests to exercise the s390 ABI
7184
7185 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7186
7187         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
7188         caller saved regs.
7189
7190         * basic.cs: Add a test for add.ovf.un.
7191
7192 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
7193
7194         * mini-sparc.c: add case for OP_IDIV_UN
7195
7196 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7197
7198         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
7199         
7200         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
7201
7202 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
7203
7204         * basic.cs: regression tests.
7205
7206         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
7207         regressions.
7208
7209 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7210
7211         * basic.cs: Add a new test.
7212
7213         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
7214         and AOT. Various fixes and optimizations.
7215
7216         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
7217
7218 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
7219
7220         * mini-ppc.c: make sure temp regs are not used for global reg
7221         allocation.
7222
7223 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
7224
7225         * cpu-sparc.md: conv_i8 fix for 64bits
7226
7227         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
7228
7229 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
7230         
7231         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
7232         add opcode for cmp BYTE PTR [eax], imm.
7233
7234         * inssel.brg: Make memcpy and memset takes bases.
7235
7236 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
7237
7238         * *-amd64.*: More AMD64 work.
7239         
7240 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
7241
7242         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
7243         add a compare-not-equal opcode.
7244         
7245 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
7246
7247         * mini.c: Use mono_init_from_assembly instead of mono_init.
7248         
7249 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
7250
7251         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
7252
7253         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
7254
7255         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
7256
7257         * inssel.brg: 64 bit fixes.
7258
7259         * mini.h (MonoCallInst): Add some AMD64 specific data.
7260
7261         * mini.h: Add some OP_P opcodes.
7262
7263 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
7264
7265         * basic.cs: tests for 61797 and 61740
7266
7267 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
7268
7269         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
7270         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
7271
7272 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
7273
7274         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
7275
7276         * *-amd64*.*: Ongoing AMD64 work.
7277
7278 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
7279
7280         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
7281
7282         * *-amd64*: Ongoing AMD64 work.
7283
7284         * mini-arch.h: Add AMD64 support.
7285
7286         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
7287
7288         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
7289
7290         * mini-ops.h: Add new opcodes.
7291
7292         * Makefile.am: Add AMD64 support.
7293
7294         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
7295         rules into the inssel-long*.brg files.
7296
7297         * *-amd64.*: Add beginnings of AMD64 backend.
7298
7299 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
7300
7301         * mini.c (print_dfn): commenting out the code that prints
7302         the cil. With -O=deadce, this makes -v -v crash.
7303         
7304         * cpu-pentium.md: make checkthis have a length of 2
7305
7306 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
7307
7308         * mini-sparc.h: fix implementations of __builtin
7309         functions for Sun compiler for V9.
7310
7311 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
7312
7313         * mini.c: use the new stelem.ref wrapper
7314         * exceptions.cs, arrays.cs: new stelem.ref tests
7315
7316 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
7317
7318         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
7319         new XSP should work with these changes).
7320
7321 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
7322         
7323         * inssel-{long32,x86,}.brg: trivial optimizations.
7324         
7325 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
7326
7327         * mini.c: load value when emitting box operation in
7328         constrained calls.
7329
7330 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
7331
7332         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
7333         is one byte shorter than cmp DWORD PTR [eax], 0.
7334
7335 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
7336
7337         * inssel-ppc.brg: arguments on the stack are always
7338         relative to the stack pointer (spotted by Neale Ferguson).
7339
7340 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7341
7342         * exceptions-x86.c: delay appending the method name to the trace until
7343         after mono_jit_info_table_find is called, as this gets the real
7344         MonoMethod.
7345
7346 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
7347
7348         * aot.c: register roots
7349
7350 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7351
7352         * aot.c : I could just use PLATFORM_WIN32 flag.
7353
7354 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7355
7356         * aot.c : Reverting the previous fix. This time it broke linux build.
7357
7358 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7359
7360         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
7361
7362 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
7363
7364         * mini.c (handle_stack_args): Remove some more debugging code.
7365         
7366         * mini.c (handle_stack_args): Remove debug output left in by mistake.
7367
7368         * driver.c mini.h aot.c: Allow additional options to be specified with
7369         --aot and pass them to mono_compile_assembly.
7370
7371         * aot.c: Add experimental code to AOT compile all loaded assemblies
7372         on demand and save the code into a cache in the filesystem.
7373
7374         * aot.c: Add support for more wrapper methods.
7375         
7376         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
7377         58863.
7378
7379         * cpu-*.md: Remove removed opcodes.
7380
7381         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
7382         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
7383         related icalls to marshal.c.
7384
7385 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
7386
7387         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
7388
7389         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
7390
7391         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
7392
7393 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
7394         * liveness.c: If liveness is recomputated we need to reset the information
7395         for each variable. This way, if the liveness range has been narrowed
7396         by optimizations that happened after the last computation, we can return
7397         a smaller range.
7398         
7399         For example, if you have
7400         
7401         {
7402                 int i = 0;
7403                 
7404                 // Tons of code that does not affect i
7405                 
7406                 i = foo ();
7407                 ...
7408         }
7409         
7410         i = 0 is dead code and will be removed by SSA. However, when
7411         linear scan gets to the code, i will still appear to be live
7412         throughout the entire block. This prevents good register allocation.
7413
7414 2004-07-06  Martin Baulig  <martin@ximian.com>
7415
7416         * debug-mini.c (mono_debug_init_method): Allow
7417         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
7418         (mono_debug_add_icall_wrapper): New method.
7419
7420         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
7421
7422 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
7423
7424         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
7425         optimization.
7426
7427 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
7428
7429         * aot.c (mono_aot_load_method): Fix loading of debug info.
7430
7431 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7432
7433         * aot.c: Add logging support.
7434
7435 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7436
7437         * mini.h: Add prototype for mono_print_method_from_ip.
7438
7439         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
7440
7441         * inssel.brg: 64 bit fixes.
7442
7443         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
7444         inssel-long32.brg.
7445
7446         * Makefile.am: Add SPARC64 support.
7447
7448 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7449
7450         * aot.c: Fix alignment problems on 32 bit platforms.
7451
7452 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7453
7454         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
7455         SPARC64.
7456
7457         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
7458         problems.
7459
7460         * mini.h: Bump AOT file version. Some 64 bit fixes.
7461
7462 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7463
7464         * inssel-sparc.brg: Add new rule to avoid register moves.
7465
7466         * inssel.brg: Add ldind_to_load_membase helper function.
7467
7468 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
7469
7470         * mini.c: OffsetToStringData intrinsic.
7471         
7472 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7473
7474         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
7475
7476         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
7477         regression tests.
7478
7479         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
7480 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7481
7482         * mini.c: reinstated mono_compile_get_interface_var()
7483         on x86, too, since the change breaks the Gtk# build there as well.
7484
7485 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7486
7487         * driver.c: remove loop from the default optimizations: it seems to
7488         interact badly with some of the other options (see bug #60613).
7489
7490 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
7491
7492         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
7493         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
7494
7495 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
7496
7497         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
7498         vararg-using methods.
7499
7500 2004-06-21  Martin Baulig  <martin@ximian.com>
7501
7502         * mini/mini-exceptions.c
7503         (mono_handle_exception): Added `gpointer original_ip' argument.
7504         After calling mono_unhandled_exception(), call
7505         mono_debugger_unhandled_exception() and if that returns true,
7506         restore the context and return.
7507
7508 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
7509
7510         * mini-ppc.c: prefer the use of relative branches so
7511         they won't need to be patched in aot code (patch from Patrick Beard).
7512
7513 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
7514
7515         * aot.c: patch from Patrick Beard to make the output assembly
7516         more correct for the MacOSX assembler. Small tweak to
7517         generate sane images on Linux/PPC, too.
7518
7519 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7520
7521         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
7522         case until bug #59509 is fixed (shows up in #60332).
7523
7524 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7525
7526         * mini.c: make sure the needed wrappers are compiled, too, with
7527         precomp.
7528
7529 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
7530
7531         * driver.c: remove NPTL reference in --version output.
7532
7533 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7534
7535         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
7536         generate valid assembly for the Mach-O assembler.
7537
7538 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
7539
7540         * driver.c: don't include abcrem in the all optimization specifier
7541         since it slows down jit compilation too much for now.
7542
7543 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
7544
7545         * mini.c: use BIGMUL only if both operands have the same signage.
7546         * iltests.il: Test for bug 60056. (errors related to signage in
7547         BIGMUL).
7548
7549         r=lupus.
7550
7551 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
7552
7553         * mini.c, aot.c: memory leak fixes.
7554
7555 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
7556
7557         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
7558
7559 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
7560
7561         * Makefile.am: remove the -static hack completely, it links in
7562         statically glib as well.
7563
7564 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
7565
7566         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
7567         * exceptions.cs: make it compile with new mcs/csc.
7568
7569 2004-06-03 Massimiliano Mantione <massi@ximian.com>
7570         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
7571         and added relevant test case.
7572
7573 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
7574
7575         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
7576         regressions in gtk-sharp.
7577
7578 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
7579
7580         * exceptions.cs: New regression tests.
7581
7582         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
7583
7584 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
7585
7586         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
7587
7588 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
7589
7590         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
7591
7592         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
7593
7594 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
7595
7596         * mini.c (mono_jit_runtime_invoke): Init class in this
7597         method instead of trusting mono_jit_compile_method to
7598         do the work (because wrappers can be in object class)
7599
7600 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
7601
7602         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
7603
7604         * basic-long.cs: New regression test.
7605
7606 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
7607
7608         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
7609         and div/rem checks.
7610
7611 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
7612
7613         * Makefile.am: fix miguel's change to build mono statically against
7614         libmono (track build dependencies).
7615
7616 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
7617
7618         * cfold.c: Some glib versions do not have G_MININT32.
7619
7620 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
7621
7622         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
7623         with precision of tan, atan, sin and cos, and implemented related
7624         regressions tests (fixes bug 54467, but one new problem appeared and
7625         is not fixed yet).
7626
7627 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
7628
7629         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
7630
7631         * exceptions.cs: Add test for constant folding && division by zero.
7632
7633         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
7634         since driver.c is in libmono too, so the optimization was useless.
7635
7636         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
7637         variable to driver.c so the compiler can emit more efficient code to
7638         access them.
7639
7640 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7641
7642         * Makefile.am: don't distribute generated inssel.[ch] files.
7643
7644 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
7645
7646         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
7647         into the default appdomain. Fixes #58707.
7648
7649         * jit-icalls.c: Remove the broken approximation for truncl, doing
7650         no conversion is better.
7651
7652         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
7653         Fixes #58863.
7654
7655 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
7656
7657         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
7658         of the mcrxr instruction which is not available on some processors
7659         even if it's documented to be. Implement add and sub overflow correctly
7660         (still not complete for long unsigned). Speed up icalls a bit.
7661
7662 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
7663
7664         * mini.c (mono_jit_compile_method_with_opt): Make sure that
7665         we run .cctor in the current domain instead of target_domain.
7666         
7667         Fixes bug #58558, .cctor not being called in -O=shared.
7668
7669 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
7670
7671         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
7672
7673 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
7674
7675         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
7676         which can be done with an imm8, do it that way.
7677         (mono_arch_output_basic_block): ditto for a jmp
7678         (mono_arch_emit_prolog): Computate maximum offset of a label.
7679
7680 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
7681
7682         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
7683         now tries to allocate prefered physical reg's for virtual
7684         regs. This reduces the number of emited spills/loads with
7685         20-30% on our core assemblies.
7686
7687 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7688
7689         * jit-icalls.c: truncl() is not needed and trunc() is
7690         the correct thing to do anyway (bug #58287).
7691
7692 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
7693
7694         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
7695         if available.
7696
7697 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
7698
7699         * driver.c: enable loop optimizations by default.
7700
7701 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
7702
7703         * mini-x86.c: fix calc of max loop size when aligning loops start.
7704
7705 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
7706
7707         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
7708         the stack.
7709
7710 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
7711
7712         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
7713         should set carry.
7714
7715         * basic-long.cs: Add tests for add/subtract of immediates with carry.
7716
7717         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
7718         
7719         * mini.c (inline_method): Allways inline some wrappers even if the cost
7720         is too large. Fixes #58785.
7721
7722         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
7723         
7724 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
7725
7726         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
7727         (crichton@gimp.org). Beginning of support for sparc/linux.
7728
7729         * mini-sparc.c: Optimize retrieval of LMF address.
7730
7731 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
7732
7733         * exceptions-ppc.c:  handle alloca in methods with clauses.
7734
7735 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
7736
7737         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
7738
7739 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
7740
7741         * mini.c: Delegate most of the abort signal work to 
7742           mono_thread_request_interruption, which also handles Stop and Suspend
7743           states.
7744
7745 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
7746
7747         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
7748         supports the save/restore lmf opcodes.
7749
7750 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
7751
7752         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
7753         by gcc-3.4 as well.
7754
7755         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
7756
7757 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
7758
7759         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
7760         methods which contain array accesses.
7761
7762         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
7763         boundaries. Fixes #58537.
7764
7765         * iltests.il: Add regression test for #58537.
7766
7767 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
7768
7769         * mini-x86.c (mono_arch_local_regalloc): Last part of
7770         fix for bug #58633 (releasing register to early).
7771
7772 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
7773
7774         * basic-long.cs: Add new regression test.
7775
7776 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
7777
7778         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
7779         register too early on the chain.
7780
7781 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
7782
7783         * mini.c (create_helper_signature): Use a helper function to reduce
7784         the code which needs to be written. Also set the calling convention of
7785         icalls on windows. Fixes #57840.
7786
7787 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
7788
7789         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
7790         exceptions-ppc.c: added helper function to get the instruction address
7791         from a signal handler context.
7792
7793 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7794
7795         * helpers.c: use g_get_tmp_dir. Invokes happyness 
7796         from gonzalo.
7797
7798 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7799
7800         * helpers.c: Add new env variable to pass args to objdump.
7801         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
7802
7803 2004-05-17  Radek Doulik  <rodo@ximian.com>
7804
7805         * Makefile.am (common_sources): added abcremoval.h so it get
7806         disted and daily mono packages on go-mono.com will build again
7807
7808 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
7809
7810         * abcremoval.c: Fixed coding style, added copyright header.
7811
7812         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
7813
7814         * mini.h: Added prototype for abc removal main function.
7815
7816         * build_relations_propagation_table.pl: Added copyright header.
7817
7818 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
7819
7820         * basic-long.cs: reg test for complex ceq_long bug.
7821
7822 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
7823
7824         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
7825         reg in long and clob case (bug #58343). Fixed/added comments.
7826
7827 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
7828
7829         * mini.c (mono_jit_runtime_invoke): Follow new convention
7830         of calling the invoke method with an function pointer.
7831
7832 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
7833
7834         * ChangeLog: Fix author of memory leak patch.
7835
7836 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
7837
7838         * Makefile.am: fix make dist as well...
7839
7840
7841 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
7842
7843         * cfold.c: Made so that conversions from pointer to int4 are no-ops
7844         on archs where pointers are 4 bytes long.
7845
7846         * Makefile.am: Added abcremoval.c source file.
7847
7848         * abcremoval.c: Added abcremoval.c.
7849
7850         * abcremoval.h: Added abcremoval.h.
7851
7852         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
7853
7854         * inssel.brg: Enabled bounds check removal.
7855
7856         * mini.c: Added support for abcrem optimization.
7857
7858         * mini.h: Added abcrem optimization label.
7859
7860         * driver.c: Added support for abcrem optimization.
7861
7862         * propagated_relations_table.def: Added propagated_relations_table.def.
7863
7864 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
7865
7866         * mini.c, cfold.c: fix style.
7867
7868 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7869
7870         * mini.c: handle issue with the low-level implementation of
7871         some long opcodes (bug #54209).
7872
7873 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
7874
7875         * basic.cs: test for my new cmov stuff.
7876
7877 2004-05-13      Patrik Torstensson
7878
7879         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
7880         opt and added peephole documentation.
7881
7882 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
7883
7884         * tramp-ppc.c: rewrote the generic trampoline code.
7885
7886 2004-05-11      Patrik Torstensson
7887
7888         * mini-x86.c: optimize long shl/shr asm code (one less branch)
7889
7890 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
7891
7892         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
7893
7894         * mini.h mini.c dominators.c: Applied patch from Derek Woo
7895         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
7896
7897         * mini.c: Add new icalls for AsAny marshalling.
7898
7899 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
7900
7901         * tramp-ppc.c, mini-ppc.c: more cleanups.
7902
7903 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7904
7905         * mini.c: no warnings.
7906
7907 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7908
7909         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
7910
7911 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
7912
7913         * mini.c: In the thread abort signal handler, if the thread is in the
7914         process of being stoped, don't throw the Abort exception, just stop the
7915         thread.
7916
7917 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
7918
7919         * tramp-ppc.c: removed old code.
7920
7921 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7922
7923         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
7924         do some simple speed optimizations on ppc.
7925
7926 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
7927
7928         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
7929         and large offsets in load/store.
7930
7931 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
7932
7933         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
7934         it causes regressions.
7935
7936 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
7937
7938         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
7939         support.
7940
7941 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
7942
7943         * jit-icalls.c: remove warnings.
7944         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
7945         speedups for unsafe code.
7946
7947 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
7948
7949         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
7950
7951 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
7952
7953         * basic-calls.cs: Add new regression test.
7954
7955         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
7956         more portable.
7957
7958         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
7959
7960         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
7961         is no longer used.
7962
7963 2004-05-06      Patrik Torstensson
7964
7965         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
7966         long reg allocation in any reg (not only eax:edx) and implemented 
7967         long shl/shr ops in asm instead of helpers.
7968
7969 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
7970
7971         * mini-sparc.h: Fix warnings.
7972
7973         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
7974         stack.
7975
7976         * mini-exceptions.c (mono_handle_exception): Call the filter in a
7977         separate statement for clarity.
7978
7979         * mini-sparc.c: Update status.
7980
7981 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
7982
7983         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
7984         here.
7985
7986 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7987
7988         * inssel-ppc.brg: another small pre-release workaround:
7989         we don't do overflow detection for long_sub_un.
7990
7991 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7992
7993         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
7994         (also works around a weird ppc bug: 57957).
7995
7996 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
7997
7998         * tramp-ppc.c: trampoline fixes.
7999
8000 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
8001
8002         * mini-ppc.c: fixed typos.
8003
8004 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
8005
8006         * mini-ppc.c, exceptions-ppc.c: more code saves registers
8007         at the top of the stack. Fixed typos. Use a frame registers
8008         for all the methods with exception clauses.
8009
8010 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8011
8012         * exceptions-ppc.c: restore fp registers.
8013
8014 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
8015
8016         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
8017         order from the stack top (moved the stack room to save the
8018         return value for trace after the param area). Fixed corruption
8019         in restoring registers on unwind.
8020
8021 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
8022
8023         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
8024
8025 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8026
8027         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
8028         and prolog/epilog for methods that use it. Allow
8029         enough param area room for varargs methods. Fix miguel's
8030         breakage in exception handling.
8031
8032 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8033
8034         * Makefile.am: run genmdesc only on current arch.
8035
8036 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8037
8038         * exceptions-x86.c:
8039         * mini-x86.h: fix the build on windows.
8040
8041 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
8042
8043         * 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.
8044
8045         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
8046
8047         * mini-exceptions.c: New file.
8048         
8049         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
8050         Move some parts of the x86 exception handling code to an 
8051         arch-independent file so it can be shared with other ports.
8052
8053 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
8054
8055         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
8056
8057 2004-04-26  David Waite  <mass@akuma.org>
8058
8059         * driver.c: remove comma from end of enumeration declaration
8060
8061 2004-04-26  Jackson Harper  <jackson@ximian.com>
8062
8063         * driver.c: parse config file before loading first assembly. This
8064         allows the user gac to be enabled/disabled. 
8065         
8066 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
8067
8068         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
8069         simpler mechanism: we do not care what is encoded initially
8070         (branch absolute or relative), we care about the code and its
8071         target.  I kept the old code for reference for now.
8072
8073         The new code tries first to determine if the jump is anywhere in
8074         the -/+32 absolute meg range, if it succeeds, it encodes using the
8075         absolute branch;  If not, it tried to find something in the
8076         relative range, if not, it uses the handle_thunk code. 
8077
8078 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
8079
8080         * exceptions-ppc.c: use the correct ip register on macosx.
8081
8082 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
8083
8084         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
8085
8086 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
8087
8088         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
8089         Raise exception on integer divide by zero by hand since the hw
8090         doesn't support it. Handle NaNs in FP compares.
8091
8092 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
8093
8094         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
8095         code reducing duplication between the platforms and enabled
8096         signal exception handling (on linux for now).
8097
8098 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
8099
8100         * exceptions-ppc.c: more macosx support.
8101
8102 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8103
8104         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
8105
8106 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
8107
8108         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
8109
8110 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
8111
8112         * iltests.il: more tests.
8113
8114 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
8115
8116         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
8117         vars as well.
8118
8119 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
8120
8121         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
8122
8123 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
8124
8125         * liveness.c: Mark variables as volatile in all basic blocks reachable
8126         from exception clauses.
8127
8128 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
8129
8130         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
8131         inlining.
8132
8133 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
8134
8135         * iltests.il, basic.cs: more tests for regalloc.
8136
8137 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8138
8139         * iltests.il: Some tests for register allocation modifications
8140         I have locally.
8141
8142 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
8143
8144         * exceptions.cs: Add regression test for bug #56782.
8145
8146         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
8147         original stack trace if an exception is rethrown. Fixes #56782. Oh,
8148         the beauty of fixing the same thing in 5 different files...
8149
8150 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
8151
8152         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
8153         methods.
8154
8155 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
8156
8157         * mini.c: Add support for STRWLPARRAY marshalling convention.
8158
8159 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
8160
8161         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
8162         to init the context to setup the regs pointer).
8163
8164 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8165
8166         * exceptions-ppc.c: more exceptions work.
8167
8168 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8169
8170         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
8171         not allowed.
8172
8173 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
8174
8175         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
8176         can use the memory directly.
8177
8178         * cpu-pentium.md: Update documentation from a post from Zoltan. 
8179
8180         add x86_add_membase, x86_sub_membase, x86_mul_membase
8181
8182 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
8183
8184         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
8185         GENERAL_REGS they were also hardcoded for all PPC ports.
8186
8187         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
8188
8189         Remove hard-coded limit for floating point registers, use
8190         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
8191
8192         Notice that in MacOS X calling conventions you can fit a lot more
8193         floating point values in registers, so I should update the PInvoke
8194         test to excercise the passing of floating point values on the
8195         stack (currently broken).
8196         
8197 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
8198
8199         * tramp-ppc.c (create_trampoline_code): Added
8200         JUMP_TRAMPOLINE_SIZE. 
8201         (ppc_magic_trampoline): Follow the pattern from
8202         x86_magic_trampoline: if code is set to zero, return. 
8203         (create_trampoline_code): Always pass MonoMethod to the jump
8204         trampoline, before it was passing a null.
8205         (mono_arch_create_jump_trampoline): Implement the jump stub, could
8206         share the code with mono_arch_create_jit_trampoline. 
8207
8208         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
8209         implemented.
8210         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
8211         implemented.  
8212
8213         * cpu-g4.md: Added length for jmp instruction, the worst case
8214         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
8215         for save_lmf).
8216
8217 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
8218
8219         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
8220
8221 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
8222
8223         * mini.c: Only set bblock->real_offset when adding a new bblock, and
8224         before each IL instruction.
8225
8226         * mini.c (CEE_BOX): Fix warnings.
8227
8228 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8229
8230         * mini.c: removed a few unused vars and extra whitespace.
8231
8232 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
8233
8234         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
8235         checks.
8236         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
8237         index.
8238         (OP_GETCHR): use the above
8239         (CEE_LDELEMA): use the above.
8240
8241         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
8242         version of the generic impl.
8243         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
8244         (CEE_LDELEMA): use the above.
8245
8246 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
8247
8248         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
8249         Fixes #56317.
8250
8251         * iltests.il: Added new regression test for #56317.
8252
8253 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
8254
8255         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
8256         under NetBSD. Fixes #56450.
8257
8258         * liveness.c (update_gen_kill_set): Fix previous patch.
8259
8260 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8261
8262         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
8263
8264 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
8265
8266         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
8267         ldsfld and ldsflda.
8268
8269         * inssel-sparc.brg: Add more optimizations.
8270
8271         * mini-sparc.c: Replace multiply/divide with shifts if possible.
8272
8273 2004-04-01  Martin Baulig  <martin@ximian.com>
8274
8275         * mini.c (handle_box): New static function; moved the
8276         implementation of CEE_BOX here.
8277         (mono_method_to_ir): Added `constrained_call' variable.
8278         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
8279         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
8280         mono_method_get_constrained() to get the method.
8281
8282 2004-04-01  Martin Baulig  <martin@ximian.com>
8283
8284         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
8285         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
8286         (mono_method_to_ir): We don't need these macros anymore since
8287         mono_class_get_full() already takes care of it. 
8288
8289 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8290
8291         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
8292         use @function (as doesn't accept #function here) and check the return
8293         value of system and stop if fails.
8294
8295 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8296
8297         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
8298
8299 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
8300
8301         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
8302
8303         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
8304
8305         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
8306         #56223.
8307
8308         * basic-long.cs: Add test for negation of Int64.MinValue.
8309
8310 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
8311
8312         * mini-sparc.c: Update status.
8313
8314         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
8315
8316         * exceptions-sparc.c: Fix return value in filters.
8317
8318         * inssel-sparc.brg: Fix register allocation in some rules.
8319
8320 2004-03-28  Martin Baulig  <martin@ximian.com>
8321
8322         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
8323         if neccessary.  
8324
8325 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
8326
8327         * mini-x86.c (mono_arch_patch_code): Fix warnings.
8328         
8329         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
8330         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
8331         remove unused conv_u4 opcode.
8332
8333         * mini-x86.c: Remove valgrind workaround since it slows down things
8334         even when mono is not run under valgrind.
8335
8336 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
8337
8338         * mini-sparc.c: Update status.
8339
8340         * inssel-sparc.brg: Add some optimizations.
8341
8342         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
8343         future delay slot filling. Add support for varargs, tail calls and JMP.
8344
8345         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
8346         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
8347
8348         * inssel.brg: Fix register allocation in OP_ARGLIST.
8349
8350         * inssel.brg: Fix warnings.
8351
8352 2004-03-25  Martin Baulig  <martin@ximian.com>
8353
8354         * mini.c (inflate_generic_field): Removed.
8355         (mini_get_method): Removed, use mono_get_method_full(),
8356         (mini_get_class): Removed, use mono_class_get_full().
8357         (mono_method_to_ir): Pass our generic context to
8358         mono_field_from_token().        
8359
8360 2004-03-25  Martin Baulig  <martin@ximian.com>
8361
8362         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
8363         of a `MonoMethod *'.
8364         (mini_get_method): Take a `MonoGenericContext *' instead
8365         of a `MonoMethod *'.
8366         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
8367         a new local variable called `generic_context' which holds the
8368         current `MonoGenericContext *'; use it to lookup things.
8369
8370 2004-03-24  Martin Baulig  <martin@ximian.com>
8371
8372         * mini.c (mini_get_class): New static method; if we're inside a
8373         generic instance, inflate the class if neccessary.
8374         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
8375
8376 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
8377
8378         * iltests.il: New regression test for #55976.
8379
8380         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
8381         #55976.
8382
8383 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8384
8385         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
8386         output.
8387
8388 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8389
8390         * liveness.c: Consider SSA stores as well as loads when making vars
8391         volatile.
8392
8393         * exceptions.cs: New regression tests for register allocation.
8394         
8395 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
8396
8397         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
8398         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
8399           domain lock only to protect puntual access to data structures.
8400           Added access lock for sighash, jit_icall_hash_name, 
8401           jit_icall_hash_addr and domain->code_mp.
8402
8403 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
8404
8405         * driver.c: Print SIGSEGV handling method.
8406
8407         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
8408
8409         * mini.c (setup_jit_tls_data): Handle case when this is called
8410         multiple times for a thread.
8411
8412         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
8413         is different from fbxx_un. Fixes #54303. Also use constants instead of
8414         magic numbers in a lot of places.
8415
8416 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
8417
8418         * exceptions.cs: Fix cctor test when --regression is used.
8419
8420 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
8421
8422         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
8423         for Linux/ppc.
8424
8425 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
8426
8427         * inssel-ppc.brg: fixed register assignments for some rules.
8428
8429 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8430
8431         * exceptions.cs: Add test for exceptions in static constructors.
8432
8433         * mini.c (mono_jit_compile_method_with_out): Move the calling of
8434         static constructors outside the domain lock. Fixes #55720.
8435
8436 2004-03-17  Martin Baulig  <martin@ximian.com>
8437
8438         * mini.c (get_generic_field_inst): Removed, this'll never happen.
8439         (inflate_generic_field): Take the `MonoMethod *' instead of the
8440         `MonoClass *' and added support for generic method.
8441         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
8442         have a `field->parent->gen_params', only inflate the field if it's
8443         an open constructed type.
8444
8445 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8446
8447         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
8448         exception object instead of the preconstructed ones.
8449
8450 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8451
8452         * mini.c: reverted changed to sigsegv_signal_handler commited
8453         accidentally in the previous patch.
8454
8455 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8456
8457         * mini.c:
8458         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
8459         running --aot with an old assembly.
8460
8461 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
8462
8463         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
8464         point values.
8465
8466         * mini-sparc.c: Add support for v9 branches with prediction.
8467
8468 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
8469
8470         * mini.c (mini_init): #warning is GNUC only
8471
8472         * mini-sparc.h: implement __builtin_frame_address
8473         and __builtin_return_address for Sun C compiler
8474
8475 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
8476
8477         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
8478
8479 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
8480
8481         * basic-calls.cs: Add test for unaligned byref long argument passing.
8482
8483         * mini-ops.h: Add sparcv9 compare and branch instructions.
8484
8485         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
8486         v9 instructions if we have a v9 cpu.
8487
8488         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
8489         registers for global allocation.
8490
8491         * exceptions-sparc.c: Fixes.
8492         
8493 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
8494
8495         * liveness.c (mono_analyze_liveness): Optimized version.
8496
8497         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
8498
8499         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
8500         sparc work.
8501
8502         * basic-float.cs basic-calls.cs: New regression tests.
8503
8504 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
8505
8506         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
8507         sigaltstack implementation.
8508
8509         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
8510         
8511         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
8512         stuff if SIGSEGV_ON_ALTSTACK is not defined.
8513
8514 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
8515
8516         * mini.c: Fix warnings.
8517         
8518         * mini.c (mono_resolve_patch_target): New function which contains the
8519         arch independent part of the patching process.
8520
8521         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
8522         patching code to a separate function.
8523
8524 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
8525
8526         * mini.c (add_signal_handler): ifdef out on Windows
8527
8528 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
8529
8530         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
8531         cpu-sparc.md: Add exception handling support + other fixes.
8532
8533         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
8534         typed GC detection in --version.
8535
8536         * basic.cs exceptions.cs: New regression tests.
8537
8538         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
8539         the arch specific code can store data during a compilation.
8540
8541         * mini-ops.h: Add OP_SETFRET.
8542
8543         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
8544         function, register a separate icall for each arity, so the icalls can
8545         get a wrapper.
8546         
8547         * mini.c (mono_print_tree): Print negative offsets in a more readable
8548         form.
8549         
8550         * mini.c: Make signal handling work on sparc.
8551         
8552         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
8553
8554         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
8555
8556         * jit-icalls.c: Emulate truncl by aintl on solaris.
8557
8558         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
8559
8560 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
8561
8562         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
8563
8564 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
8565
8566         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
8567         a MarshalByRef type, inline a method that performs the check, taking into
8568         account that the object can be a proxy. Also implemented tow new opcodes:
8569         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
8570         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
8571         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
8572
8573 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
8574
8575         * mini-ppc.c: if a relative branch displacement is too big
8576         but it points to and area reachable with an absolute branch, 
8577         avoid the thunks.
8578
8579 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
8580
8581         * mini.c: optimize small copies in cpblk.
8582
8583 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
8584
8585         * basic-calls.cs basic-float.cs: New regression tests.
8586
8587         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
8588         negative offsets from %fp. Implement localloc. Fix local register 
8589         allocation. Fix the case when the this argument needs to be saved to
8590         the stack. Implement some missing opcodes.
8591
8592 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
8593
8594         * mini.c (mini_method_compile): Reenable global regalloc in methods
8595         with exception handlers.
8596
8597         * linear-scan.c (mono_varlist_sort): Fix warning.
8598
8599         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
8600
8601         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
8602         regalloc costs.
8603
8604         * liveness.c: Make all variables uses in exception clauses volatile, to
8605         prevent them from being allocated to registers. Fixes #42136.
8606
8607 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
8608
8609         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
8610         causes regressions.
8611
8612         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
8613         argument to mono_arch_regalloc_cost.
8614
8615         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
8616         precisely.
8617
8618 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
8619
8620         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
8621         Make the cost of allocating a variable to a register arch dependent.
8622
8623         * basic-calls.cs: Fix compilation of tests.
8624         
8625         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
8626         helper function to cut back on the number of #ifdefs needed.
8627
8628         * mini-ppc.c: Fix compilation.
8629
8630         * basic-calls.cs: New regression tests.
8631
8632         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
8633
8634         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
8635         of l0 since that is callee saved.
8636
8637         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
8638         to virtual calls.
8639
8640         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
8641         of delay instruction.
8642
8643         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
8644
8645         * mini.h (MonoCallInst): Add 'virtual' flag.
8646
8647         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
8648
8649 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
8650
8651         * *.cs: New regression tests.
8652
8653         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
8654         work.
8655
8656         * mini.c (mono_runtime_install_handlers): Fix build.
8657
8658         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
8659         'signal_stack_size' members.
8660
8661         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
8662         alternate signal stack.
8663
8664         * exceptions-x86.c: Add stack overflow handling.
8665
8666         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
8667         functions to arch independent code.
8668
8669         * mini.c (mono_print_tree): Print more detailed info for load_membase
8670         opcodes.
8671         
8672 2004-02-23  Martin Baulig  <martin@ximian.com>
8673
8674         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
8675
8676 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
8677
8678         * mini-x86.c: fixed reg allocation for div/rem.
8679
8680 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
8681
8682         * driver.c (mono_main): Report some configuratio options on --version.
8683
8684 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
8685
8686         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
8687         low in the address space. Correctly flush memory in thunks where we
8688         output native code.
8689
8690 2004-02-20  Martin Baulig  <martin@ximian.com>
8691
8692         * mini.c (mini_get_method): New static method; inflate all generic
8693         methods and methods in open generic instances.
8694         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
8695         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
8696
8697 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
8698
8699         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
8700
8701         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
8702
8703 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
8704
8705         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
8706
8707         * mini-sparc.c (flushi mono_arch_output_basic_block): make
8708         it compile using Sun's compiler.
8709
8710 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
8711
8712         * 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.
8713
8714         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
8715
8716 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
8717
8718         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
8719         code.
8720         * mini-ppc.c: handle calls outside of the allowed range with thunks
8721         allocated using the code manager.
8722         * tramp-ppc.c: use the code manager to hold generated native code.
8723         Fixed the magic trampoline to just patch vtable entries.
8724
8725 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
8726
8727         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
8728         independent file.
8729
8730 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
8731
8732         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
8733         PPC.
8734
8735         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
8736         if we have a working __thread implementation.
8737
8738         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
8739         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
8740
8741 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
8742
8743         * mini-x86.c: Fix compilation under gcc 2.
8744         
8745 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
8746
8747         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
8748         contains a call to the wrapped function.
8749
8750         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
8751         OP_<CALL>_IMM opcodes, and use them under X86.
8752         
8753         * mini.c (mono_jit_find_compiled_method): Fix warning.
8754
8755         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
8756
8757         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
8758
8759         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
8760         functionality to mini.c.
8761
8762         * mini.c (mono_create_jump_trampoline): New function to create a jump
8763         trampoline. Return a compiled method instead of a trampoline if it
8764         exists. Add a cache for jump trampolines.
8765
8766         * mini.c (mono_jit_find_compiled_method): New function to return a
8767         compiled method if it exists.
8768
8769         * mini-x86.c: Call mono_create_jump_trampoline instead of 
8770         mono_arch_create_jit_trampoline.
8771
8772         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
8773         a jump trampoline. Fixes #52092.
8774         
8775 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
8776
8777         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
8778         which is not up-to-date. Add check_corlib_version () instead.
8779
8780         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
8781         have to call it.
8782         
8783         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
8784         since newer valgrind versions do not need it.
8785
8786         * mini.c (mono_jit_compile_method_with_opt): New helper function to
8787         compile a method with a given set of optimizations.
8788
8789         * mini.c: Compile icall wrappers on-demand instead of at startup.
8790
8791         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
8792         wrapper for an icall.
8793
8794 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
8795
8796         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
8797         #54063.
8798
8799         * iltests.il: Add test for non-empty stack before switch instruction.
8800
8801 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
8802
8803         * mini.c: Add support for new stringbuilder marshalling conventions.
8804
8805         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
8806
8807 2004-02-01  Martin Baulig  <martin@ximian.com>
8808
8809         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
8810         in `ginst->mtype_argv'.
8811
8812 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
8813
8814         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
8815         facilitate grepping.
8816
8817 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
8818
8819         * mini.c: fixed buglet in initobj generic implementation for references.
8820
8821 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
8822
8823         * Makefile.am: make the version script conditional.
8824         * jit-icalls.c: handle missing truncl().
8825
8826 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
8827
8828         * exceptions.cs: Add more tests for double->int conversion.
8829
8830         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
8831         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
8832
8833 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
8834
8835         * driver.c: make --verbose --version emit an error
8836         if the loaded corlib doesn't match the runtime version.
8837
8838 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
8839
8840         * mini-ppc.h: export ppc_patch().
8841         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
8842         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
8843         on par or better than on MacOSX.
8844
8845 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
8846
8847         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
8848         mono_lookup_pinvoke_call.
8849
8850         * mini-x86.c: Under windows, the default pinvoke calling convention is
8851         stdcall. Fixes #52834.
8852
8853         * mini.c (optimize_branches): Add an upper bound to the number of
8854         iterations to prevent infinite loops on strange loops. Fixes #53003.
8855
8856 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
8857
8858         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
8859         and ISINST. Fixes #52093.
8860
8861         * objects.cs (test_0_vector_array_cast): New tests.
8862         
8863 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
8864
8865         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
8866         checking in Array.Set ().
8867
8868         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
8869         #52590.
8870
8871         * object.cs (test_0_multi_array_cast): New regression test.
8872
8873 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
8874
8875         * exceptions-ppc.c: fix build on Linux/PPC.
8876
8877 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
8878
8879         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
8880         running under valgrind.
8881         (x86_magic_trampoline): Fix build bustage.
8882
8883         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
8884         negative values as well. This is needed for the encoding of the line number
8885         info, since sometimes the line numbers are not in increasing order.
8886
8887 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
8888
8889         * cpu-pentium.md (localloc): Increase the size of the localloc 
8890         instruction since it is a loop under Win32.
8891
8892         * debug-mini.c (record_line_number): Get rid of unneccesary memory
8893         allocation.
8894
8895 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
8896
8897         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
8898         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
8899         Max Horn (max@quendi.de). Fix file names in comments.
8900
8901 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
8902
8903         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
8904         avoid stack overflow.
8905         (replace_usage): Avoid uninitialized variable warnings.
8906
8907         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
8908         and taking the address of valuetype variables.
8909
8910 2004-01-03  Patrik Torstensson
8911
8912         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
8913         for other purposes than FP later on.
8914
8915 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
8916
8917         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
8918         of tail calls.
8919
8920 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
8921
8922         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
8923
8924 2003-12-30  Patrik Torstensson <p@rxc.se>
8925
8926         * mini-x86.h: Decreased number of availiable fp regs.
8927         Solves corner cases with FP spilling.
8928
8929 2003-12-23  Patrik Torstensson <p@rxc.se>
8930
8931         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
8932         for floating point stack tracking / spilling on x86. 
8933         Fixes bug #49012.
8934         
8935         * basic-float.cs: added float mul overflow test.
8936
8937 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
8938
8939         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
8940
8941 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
8942
8943         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
8944         supports for cond branches that overflow the immediate
8945         overflow offset. mcs can compile simple programs.
8946
8947 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
8948
8949         * exceptions-ppc.c: exception handling support wip:
8950         finally handlers get run on exception.
8951
8952 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
8953
8954         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
8955         profiling.
8956
8957 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
8958
8959         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
8960         initial support for stack walking and unwinding.
8961
8962 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
8963
8964         * driver.c (mono_main): Make corlib-out-of-sync message more 
8965         descriptive. Also remove verify_corlib call.
8966
8967 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
8968
8969         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
8970         not overlap with other call's arguments, too.
8971
8972 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
8973
8974         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
8975         move to arch-specific code the choice of arch-specific
8976         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
8977         * mini.c: ensure emulation calls will not interleave
8978         with other calls.
8979
8980 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
8981
8982         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
8983         the magic trampoline stack frame is dropped before executing
8984         the new method.
8985
8986 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
8987
8988         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
8989         and integer to fp conversions. Added support for overflowing
8990         arguments on the stack. Reserve a couple more registers as temps.
8991         Added support for aot compilation (as output still needs to be
8992         tweaked, though).
8993
8994 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
8995
8996         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
8997         Don't overwrite return register in some corner cases.
8998
8999 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
9000
9001         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
9002         static constructors when AOT compiling.
9003
9004         * driver.c (mono_main): Call mono_check_corlib_version.
9005
9006 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
9007
9008         * cpu-g4.md, basic.cs: fixed div target register.
9009
9010 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
9011
9012         * mini-ppc.c, basic.cs: shl_imm fix with test.
9013
9014 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
9015
9016         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
9017         structures by value. Misc fixes.
9018         * objects.cs: more tests.
9019
9020 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
9021
9022         * mini-ppc.c: lconv.ovf.i implemented.
9023
9024 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9025
9026         * mini.c:
9027         (mini_init): don't error out if someone already called g_thread_init.
9028
9029 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
9030
9031         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
9032         to be any type per the spec. Fix abnormal memory usage when
9033         the same object is repeatedly thrown.
9034
9035 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
9036
9037         * mini.c: check for overruns in IL code.
9038
9039 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
9040
9041         * TODO: Add/remove some todo entries.
9042
9043 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
9044
9045         * driver.c (mono_main): Call mono_verify_corlib.
9046
9047 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
9048
9049         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
9050         This has been moved to mini.c
9051         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
9052         type being casted is marshalbyref it could be a proxy, so instead of
9053         emitting the type check code, emit a call to a runtime method that will
9054         perform the check by calling CanCastTo if needed.
9055
9056 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
9057
9058         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
9059         methods with large stack frames under Win32.
9060
9061 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
9062
9063         * Makefile.am: Distribute regression tests.
9064
9065         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
9066         at the end instead of inserting each variable into the sorted list.
9067
9068         * linear-scan.c (mono_varlist_sort): New helper function.
9069         
9070 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
9071
9072         * mini.c: ensure arguments and locals are within bounds.
9073
9074 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
9075
9076         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
9077         related fixes.
9078
9079 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
9080
9081         * mini.c (mono_cprop_copy_values): Fix crash.
9082
9083         * aot.c: Set verbosity back to 0.
9084         
9085 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
9086
9087         * regalloc.c: complete memory leak fix by Laurent Morichetti
9088         (l_m@pacbell.net).
9089
9090 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
9091
9092         * driver.c (main_thread_handler): Revert the previous patch.
9093
9094         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
9095         under valgrind.
9096
9097         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
9098         memory from the memory pool.
9099
9100         * driver.c (main_thread_handler): Turn on all optimizations when
9101         --aot is used.
9102
9103         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
9104         an array for better performance.
9105
9106         * regalloc.c (mono_regstate_assign): Fix memory leak.
9107
9108         * debug-mini.c (mono_debug_serialize_debug_info): New function to
9109         serialize the debug info.
9110
9111         * debug-mini.c (mono_debug_add_aot_method): New function to load the
9112         debug info from the serialized representation.
9113
9114         * aot.c: Save debug info into the generated file and load it when 
9115         loading a method.
9116
9117         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
9118
9119 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
9120
9121         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
9122         More FP-related fixes.
9123
9124 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
9125
9126         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
9127         and register allocation buglet. Hello world now runs.
9128
9129 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
9130
9131         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
9132         * tramp-ppc.c: fixed class init trampoline.
9133         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
9134
9135 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
9136
9137         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
9138         mini.c: more ppc changes/fixes.
9139
9140 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
9141
9142         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
9143         Also optimize the case when the arguments are the same in the caller 
9144         and in the callee.
9145
9146         * iltests.il: Add tests for tail calls with valuetype arguments.
9147
9148 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
9149
9150         * mini-ppc.c: fixes for struct return type.
9151
9152 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
9153
9154         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
9155         mono_spillvar_offset() to arch-specific code.
9156
9157 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
9158
9159         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
9160
9161 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
9162
9163         * exceptions-x86.c: Fix stack space leaks.
9164         
9165         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
9166         registers from the lmf if the method has save_lmf set.
9167
9168 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
9169
9170         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
9171         of icall wrappers into InvokeInDomain, since these are now per-domain.
9172
9173 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
9174
9175         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
9176         make some opcode emulation and intrinsic ops enabled/disabled 
9177         according to the architecture. More fixes.
9178
9179 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
9180
9181         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
9182
9183 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
9184
9185         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
9186         arch-specific handling for 'this' and struct return type to
9187         arch-specific code.
9188
9189 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9190
9191         * aot.c: prevent divide by zero error when reporting (it happened with
9192         Accessibility.dll).
9193
9194 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
9195
9196         * mini.h (inst_switch): Remove unused macro.
9197
9198 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9199
9200         * aot.c:
9201         (load_aot_module): free 'info->methods' and 'info' properly. No more
9202         "free(): invalid pointer blah" messages when you have an old aot
9203         compiled assembly.
9204
9205 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
9206
9207         * jit-icalls.c, mini.c: Added support for context static fields.
9208
9209 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
9210
9211         * mini.c (mono_method_blittable): Methods which set LastError are not 
9212         blittable either. Fixes #51108.
9213         
9214 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
9215
9216         * mini.c: flush icache.
9217         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
9218
9219 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
9220
9221         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
9222
9223 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
9224
9225         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
9226         safe on IA32.
9227
9228         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
9229         vararg calls.
9230
9231         * inssel.brg (CEE_MKREFANY): Fix AOT case.
9232
9233 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
9234
9235         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
9236         instruction when the result is discarded.
9237
9238         * iltests.il (test_0_div_regalloc): New regression test.
9239
9240         * arrays.cs: Fix compilation error.
9241
9242 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
9243
9244         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
9245         float rules to inssel-x86.brg: sane architectures with FP registers
9246         don't need to implement these rules.
9247
9248 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
9249
9250         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
9251
9252 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
9253
9254         * mini.h, inssel-long32.brg: fixed endianess issues in int64
9255         implementation of 32 bit systems.
9256
9257 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
9258
9259         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
9260         (Jeroen Zwartepoorte).
9261
9262 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
9263
9264         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
9265         the caller and the callee matches.
9266         
9267         * mini.c (mono_method_to_ir): Add comment.
9268
9269         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
9270         signbit is missing on some platforms.
9271
9272 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
9273
9274         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
9275
9276         * mini.c (setup_jit_tls_data): Call the new function.
9277         
9278         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
9279
9280         * mini-x86.c: Add experimental support for fast access to the lmf
9281         structure under NPTL/Linux 2.6.x.
9282
9283 2003-11-06  Martin Baulig  <martin@ximian.com>
9284
9285         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
9286         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
9287         the debugger.
9288
9289 2003-11-02  Martin Baulig  <martin@ximian.com>
9290
9291         * mini.c (inflate_generic_field): New static method.
9292         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
9293         generic instance and the field is declared in a generic type, call
9294         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
9295
9296 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
9297
9298         * mini.h mini.c (mono_method_same_domain): New function to return
9299         whenever the caller and the callee are in the same domain.
9300
9301         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
9302
9303 2003-10-30  Martin Baulig  <martin@ximian.com>
9304
9305         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
9306         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
9307         method parameters.
9308         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
9309         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
9310
9311 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
9312
9313         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
9314         propagation.
9315
9316         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
9317         object here, so it is in the correct appdomain etc.
9318
9319 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
9320
9321         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
9322         already done.
9323         (mono_method_to_ir): Avoid freeing the type created returned from
9324         mono_type_create_from_typespec, since it is put into an internal cache
9325         by the function. Fixes pointer.exe.
9326
9327         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
9328         trampolines for icalls and pinvokes as well. Fixes #33569.
9329
9330 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
9331
9332         * mini.c: Update after appdomain changes.
9333
9334         * mini.c (mono_jit_compile_method_inner): Allways compile native
9335         method wrappers in the root domain, since there can only be one
9336         instance of them, whose address is stored in method->info.
9337
9338 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
9339
9340         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
9341         environment variable. Instead detect automatically whenever running
9342         under valgrind using the magic macro RUNNING_ON_VALGRIND from
9343         valgrind.h.
9344
9345 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
9346
9347         * trace.c, trace.h: New files that implement the new trace option
9348         parsing. 
9349
9350         * driver.c: Document new --trace options.
9351
9352         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
9353         mini-x86.c: Apply:
9354
9355         -       if (mono_jit_trace_calls)
9356         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
9357
9358         * mini.h: prototypes.
9359         
9360 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
9361
9362         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
9363
9364         * mini.c inssel.brg: Implement typedefbyref opcodes.
9365
9366         * mini.c (mono_jit_compile_method): Remove unused local variable.
9367
9368         * mini.c (mono_jit_compile_method_inner): Ditto.
9369         
9370 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
9371
9372         * tramp-x86.c (x86_class_init_trampoline): Fix build.
9373         
9374         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
9375
9376 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
9377
9378         * mini.c (mono_no_aot): Remove unused global variable.
9379
9380         * mini.c: Thread safety fixes.
9381
9382 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
9383
9384         * mini.c (mono_create_class_init_trampoline): Add a lock around
9385         class_init_hash_addr.
9386
9387         * arrays.cs (test_0_newarr_emulation): Add new regression test for
9388         #30073.
9389
9390         * mini.c: Decompose the NEWARR instruction before decomposing its
9391         arguments. Fixes #30073.
9392
9393 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
9394
9395         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
9396         convention.
9397
9398 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
9399
9400         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
9401
9402         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
9403
9404         * driver.c: Add support for compiling icall wrappers to --compile.
9405
9406 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
9407
9408         * inssel.brg: The empty value in class->interface_offsets is -1, not
9409         0. Fixes #49287.
9410
9411 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
9412
9413         * objects.cs: New test for 'is' operator on an array of interfaces.
9414
9415 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9416
9417         * tramp-ppc.c: update trampoline code to support jumps
9418         and class initialization.
9419
9420 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
9421
9422         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
9423
9424         * inssel.brg (OP_UNBOXCAST): Fix #46027.
9425
9426         * inssel.brg (OP_UNBOX): Remove unused rule.
9427
9428         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
9429         region instead of one for each method. Fixes #47813.
9430
9431 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
9432
9433         * exceptions.cs (test_0_nested_finally): New regression test for
9434         nested exception handlers.
9435
9436         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
9437
9438         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
9439
9440         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
9441         inlining.
9442
9443         * mini.c (mono_method_check_inlining): Make the inlining limit 
9444         configurable by an environment variable.
9445         
9446         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
9447
9448         * mini.h: Bump AOT file version.
9449
9450         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
9451         token, store the image along with the token, since the token might not 
9452         refer to the same image as the method containing the relocation, 
9453         because of inlining.
9454
9455 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
9456
9457         * mini.c (mono_precompile_assemblies): New function to compile
9458         all methods in all loaded assemblies.
9459
9460         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
9461
9462         * regalloc.h regalloc.c (MonoRegState): Change the type of 
9463         iassign and fassign to int*, since they can contain large negative
9464         values if the register is spilled. Also added some comments. Fixes
9465         #45817.
9466
9467         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
9468         under Win32. Fixes #42964.
9469
9470 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
9471
9472         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
9473
9474         * aot.c: Added support for AOT compiling methods which contain calls
9475         to wrappers. Currently, only remoting-invoke-with-check wrappers are
9476         handled.
9477         
9478         * driver.c (compile_all_methods): Run the compilation in a thread
9479         managed by mono. Fixes #44023.
9480
9481         * mini.c (mono_codegen): Print full method name in verbose output.
9482
9483         * mini-x86.c (mono_arch_patch_code): Fix warning.
9484         
9485         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
9486         jumps, since the method we are jumping to might be domain-specific.
9487
9488         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
9489
9490 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9491
9492         * inssel.brg: string chars are unsigned.
9493
9494 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
9495
9496         * TODO: New todo item.
9497
9498         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
9499         which calls mono_runtime_class_init and patches the call site to
9500         avoid further calls.
9501         (mono_arch_create_class_init_trampoline): New arch specific function 
9502         to create a class init trampoline.
9503         (create_trampoline_code): Generalized so it can create
9504         class init trampolines as well.
9505
9506         * mini.c (helper_sig_class_init_trampoline): New helper variable.
9507         (mono_create_class_init_trampoline): New function to create and cache
9508         class init trampolines.
9509         (mono_find_class_init_trampoline_by_addr): New function to lookup the
9510         vtable given the address of a class init trampoline. Used by the
9511         patching process.
9512         (mono_codegen): Generate a call to a trampoline instead of
9513         mono_runtime_class_init in LDSFLD[A].
9514         (mono_codegen): Add relocations for the new trampoline.
9515         
9516         * mini.h mini-x86.c aot.c: Added a new relocation type: 
9517         MONO_PATCH_INFO_CLASS_INIT.
9518
9519         * mini.h: Bump AOT version number.
9520
9521         * aot.c: Create a copy of the loaded code instead of using the original
9522         so methods which call each other will be close in memory, improving
9523         cache behaviour.
9524         
9525         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
9526         patch since it breaks the regression tests.
9527         
9528         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
9529         for the register saving instruction sequence since the 
9530         frame_state_for function in glibc 2.3.2 don't seem to detect it.
9531
9532 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
9533
9534         * TODO: Fix todo item && remove another.
9535
9536 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
9537
9538         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
9539         previous checkin.
9540
9541         * aot.c: Moved the check for MONO_LASTAOT into the initialization
9542         function of the module.
9543
9544         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
9545         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
9546         --no-aot command line option.
9547
9548 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
9549
9550         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
9551         by Bernie Solomon (bernard@ugsolutions.com).
9552
9553         * inssel.brg: Refactor the interface offset table related code into
9554         its separate functions and add support for the AOT case.
9555
9556 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
9557
9558         * aot.c (mono_aot_get_method_inner): Fix memory leak.
9559         
9560         * aot.c: Added mono_aot_verbose variable and made all debugging
9561         output depend on the value of this variable.
9562
9563         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
9564         method_label and info_label.
9565
9566         * mini.h mini-x86.c aot.c: Added a new relocation type 
9567         MONO_PATCH_INFO_IID for klass->interface_id.
9568
9569         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
9570         the MonoJitInfo structure.
9571
9572         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
9573         a non-root appdomain in shared mode.
9574
9575 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
9576
9577         * aot.c: make aot loader less verbose. Remove free of unused variable.
9578
9579 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
9580
9581         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
9582
9583         * .cvsignore: Added *.dll.
9584
9585         * mini.c (mono_print_tree_nl): New function callable while debugging.
9586
9587         * mini.c (mono_print_code): Export this.
9588
9589         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
9590         patched code.
9591
9592 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
9593
9594         * mini.h (MonoCompile): Added 'jit_info' field.
9595
9596         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
9597         the cfg structure, since it is needed by the AOT compiler.
9598
9599         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
9600
9601         * aot.c: A major rewrite. Changes include:
9602         - save exception tables for methods which have them.
9603         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
9604         to g_module_symbol.
9605         - reworked the file format so it is now much smaller and needs
9606         fewer relocation entries.
9607         
9608 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
9609
9610         * aot.c (load_aot_module): Fix build bustage on platforms without
9611         Boehm GC.
9612
9613 2003-09-04  Martin Baulig  <martin@ximian.com>
9614
9615         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
9616
9617 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
9618
9619         * TODO: Some new optimization ideas.
9620
9621         * aot.c: Move AOT module loading logic here from mono_assembly_open.
9622
9623         * aot.c: Save the optimization flags used to compile the code into
9624         the AOT module.
9625
9626         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
9627         support emitting domain specific code.
9628         
9629         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
9630         no longer domain neutral. It can be made domain neutral by compiling 
9631         with --optimize=shared.
9632
9633         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
9634         between appdomains.
9635
9636         * driver.c mini.h mini.c: New --no-aot debugging option which disables
9637         loading of AOT code.
9638
9639         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
9640         
9641         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
9642         if there is no domain neutrality information.
9643
9644 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
9645
9646         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
9647         format version into the generated library.
9648
9649         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
9650         callee method into the caller since one of them could be shared.
9651
9652         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
9653         system exceptions from AOT code now works.
9654
9655         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
9656         method if it is domain neutral and the callee is not.
9657
9658         * graph.c (cfg_emit_one_loop_level): Fix warning.
9659
9660 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
9661
9662         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
9663         last checkin.
9664
9665 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
9666
9667         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
9668         is needed  by code which is executed before mono_runtime_init ().
9669         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
9670         
9671         * mini.c (mono_thread_abort): Fix warning.
9672         (mono_jit_compile_method): Call static constructor in the AOT case too.
9673
9674         * aot.c (mono_compile_assembly): Fix warning.
9675
9676 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9677
9678         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
9679
9680 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
9681
9682         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
9683
9684         * cpu-pentium.md: Fix the length of call opcodes so they include the
9685         ESP restoring instruction. Fixes #47968.
9686
9687 2003-08-28  Martin Baulig  <martin@ximian.com>
9688
9689         * mini-x86.c (mono_arch_call_opcode): Added support for
9690         MONO_TYPE_GENERICINST.
9691
9692         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
9693
9694 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
9695
9696         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
9697         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
9698
9699         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
9700         metadata_section.
9701
9702 2003-08-26  Martin Baulig  <martin@ximian.com>
9703
9704         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
9705         when reporting an error, set this to the actual error location.
9706         (mono_method_to_ir): Report the correct error location if
9707         get_basic_blocks() returned an error.
9708
9709 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
9710
9711         * mini.c (mono_type_blittable): OBJECT is not blittable.
9712         (mono_method_blittable): Methods which have marshalling descriptors
9713         are not blittable either. Fixes #47842.
9714
9715 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
9716
9717         * driver.c mini.c: Use an environment variable instead of a global 
9718         variable. Also fix the build.
9719
9720         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
9721         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
9722         reporting this. 
9723
9724         * driver.c mini.c: Added --with-valgrind option to turn off some
9725         code which prevents mono from running under valgrind.
9726
9727         * mini.c (mono_emit_call_args): Fixed warning.
9728
9729         * mini.c (mono_emulate_opcode): Fixed warning.
9730
9731 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9732
9733         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
9734         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
9735         regalloc.c, regalloc.h: specify available registers in arch-specific
9736         code and support floats in the regallocator (patch by Laurent Morichetti 
9737         <l_m@pacbell.net>)
9738
9739 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
9740
9741         * mini.c: mono_thread_current() can be called only after
9742         mono_runtime_init(): rearrange code to not call it early on.
9743
9744 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9745
9746         * mini.c: allocate jump tables in the code mempools.
9747
9748 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9749
9750         * mini.c, mini.h: make sure per-thread data allocated by the jit is
9751         freed.
9752
9753 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
9754
9755         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
9756         12 to 16.  This fixes bug #47453.
9757
9758
9759 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
9760
9761         * mini-ppc.c: fixed indexed load and unsigned compares.
9762
9763 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
9764
9765         * mini.c: reenabled installation of handler for
9766           thread abort signal.
9767
9768 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9769
9770         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
9771         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
9772         until it's fixed and actually useful.
9773
9774 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
9775
9776         * inssel-long32.brg: couple more opcodes implemented.
9777
9778 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
9779         
9780         * mini-sparc.c: Even more opcodes implemeted.
9781
9782 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
9783
9784         * mini-sparc.c: More opcodes implemented.
9785
9786 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
9787
9788         * mini-sparc.c: More opcodes implemented.
9789
9790 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
9791
9792         * inssel-sparc.brg: Add some needed rules.  Direct
9793         copy from PPC.
9794         * Makefile.am: Use inssel-sparc.brg
9795         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
9796         an assert happy for now.
9797
9798 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
9799
9800         * mini-sparc.c: Fixed compile errors.
9801         * exceptions-sparc.c: Same.  We now produce a mono binary 
9802         on sparc-linux.  Yea.
9803
9804 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
9805
9806         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
9807         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
9808         They compile, but do not work.
9809
9810 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9811
9812         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
9813         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
9814         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
9815         (ct@gentoo.org).
9816
9817 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9818
9819         * mini.c: more opcodes implemented and better support for generics.
9820
9821 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
9822
9823         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
9824         * mini.c, mini.h: first cut at generics support: some new instructions 
9825         added and changed the behaviour of some of the existing ones.
9826
9827 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
9828
9829         * mini.c: Removed definition of metadata_shared mutex here.
9830
9831 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
9832
9833         * mini-x86.c: make vararg calls work for instance methods.
9834
9835 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
9836
9837         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
9838         returns the arguments in a separte list, now.
9839
9840 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
9841
9842         * aot.c, mini.c: updates for array type representation changes.
9843
9844 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
9845
9846         * mini.c: register function to perform jit shutdown.
9847
9848 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9849
9850         * mini.c: use a faster allocator if possible.
9851
9852 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
9853
9854         * aot.c: some cleanups and portability changes.
9855
9856 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
9857
9858         * mini.c: use faster allocation for CEE_BOX if possible.
9859
9860 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
9861
9862         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
9863         Moved inlined mempcy code to its own function so that is can be
9864         reused. Added an inline memset function as well (optimized initobj).
9865         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
9866
9867 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
9868
9869         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
9870
9871 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
9872
9873         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
9874         arch code can setup the cpu for CLR execution, if needed.
9875         We use it on x86 to set the precision of FP operations.
9876
9877 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
9878
9879         * mini.c: disable some optimizations if we can guess they'll cost too
9880         much for a given method.
9881
9882 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
9883
9884         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
9885         
9886 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
9887         * mini.h mini.c mini-x86.c: Added instruction level coverage 
9888         info collection support.
9889
9890 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
9891
9892         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
9893         is now implemented in the profiling API. Get rid of a couple of
9894         unnecessary global variables.
9895
9896 2003-06-15  Nick Drochak <ndrochak@gol.com>
9897
9898         * basic-long.cs: tests for negative values for bigmul, and unsigned.
9899         * cpu-g4.md: add op_bigmul and op_bigmul_un
9900         * cpu_pentium.md: add op_bigmul_un
9901         * inssel-long32.brg: add rule for unsigned bigmul
9902         * mini-ops.h: define OP_BIGMUL_UN
9903         * mini-x86.c: THE BUG: handle (un)signed properly
9904         * mini.c: choose unsigned opcode if needed.
9905         This set of patches fixes bug #44291
9906
9907 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
9908
9909         * mini.c (optimize_branches): improved to handle all kinds of
9910         conditional branches.
9911
9912 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
9913
9914         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
9915         don't raise exceptions.
9916
9917 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9918
9919         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
9920         to arch-specific files.
9921
9922 2003-06-09  Martin Baulig  <martin@ximian.com>
9923
9924         * Makefile.am (libs): Added $(LIBGC_LIBS).
9925
9926 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
9927
9928         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
9929         and OP_ATAN (fixes bug#44293).
9930
9931 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
9932
9933         * Makefile.am, mini-x86.c: rename cpu description array to
9934         pentium_desc, since some compilers define the 'pentium' preprocessor
9935         symbol.
9936
9937 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
9938
9939         * mini.c (mini_select_instructions): add explicit branch if the
9940         following block is not the false target of a conditional branch -
9941         we need this with any optimization that reorder or remove bblocks
9942
9943         * mini.c (optimize_branches): bug fixes
9944
9945 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
9946
9947         * mini.c (mono_method_to_ir): inline static readonly fields
9948
9949         * ssa.c (fold_tree): start cfold support for long (very simple
9950         cases only)
9951
9952         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
9953
9954 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
9955
9956         * inssel.brg: fixed memcpy (bug #44219).
9957
9958 2003-06-05  Dick Porter  <dick@ximian.com>
9959
9960         * driver.c: Set the glib log levels to not abort if g_message
9961         recurses.
9962
9963         g_set_prgname() has to happen before mini_init() so that the
9964         process handle gets the info.
9965         
9966 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
9967
9968         * driver.c: add intrins to the default optimizations to get wider
9969         exposure.
9970
9971 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
9972
9973         * mini.h: some large basic blocks will overflow a 16-bit
9974         integers for symbolic registers.
9975
9976 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
9977
9978         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
9979         (mono_arch_output_basic_block): fix bug 43499 
9980
9981 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
9982
9983         * mini.c: kill duplicated definition of mono_debug_format.
9984
9985 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
9986
9987         * mini-x86.c, arrays.cs: fixed register allocation bug.
9988
9989 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
9990
9991         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
9992
9993         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
9994
9995 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9996
9997         * mini.c:
9998         (print_method_from_ip): also print source location information if
9999         available.
10000
10001 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
10002
10003         * mini.c (mono_find_block_region): bug fix in region code
10004         (mini_method_compile): enable removing unreachable code again, but
10005         only in methods without exception clauses.
10006
10007 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
10008
10009         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
10010         Implemented arglist opcode and handling of TypedReference type.
10011         Fixed x86 call convention when a structure is returned.
10012         Minimal support for calling static vararg methods.
10013
10014 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
10015
10016         * mini.c (mini_method_compile):  always remove unreachable code,
10017         because the code in them may be inconsistent  (access to dead
10018         variables for example).
10019
10020 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
10021
10022         * driver.c, debug-mini.c: warning fixes.
10023
10024 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
10025
10026         * Makefile.am, jit.h, mini.h: install header for embedding mono.
10027
10028 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
10029
10030         * mini.c: thread-static fields are registered in mono_class_vtable(),
10031         so ensure the function is called before checking for them.
10032
10033 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
10034
10035         * mini.c (optimize_branches): fix for bug 43586
10036
10037         * jit-icalls.c (mono_llmult_ovf): added an additional check for
10038         overflow (fixes Bug #43639)
10039
10040 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10041
10042         * mini.c, objects.cs: allow the use of stobj for primitive types.
10043
10044 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10045
10046         * mini.c: be less strict about argument checking until we support
10047         running the verifier.
10048
10049 2003-05-27  Nick Drochak <ndrochak@gol.com>
10050
10051         * basic-long.cs: tests for (ulong)int * (ulong)int also
10052         * mini.c: use the same trick for (ulong)int * (ulong)int
10053
10054 2003-05-27  Nick Drochak <ndrochak@gol.com>
10055
10056         * basic-long.cs: add regression test for (long)int * (long)int
10057         * cpu-pentium.md: add op_bigmul specification
10058         * inssel-long32.brg: add OP_BIGMUL rule
10059         * mini-ops.h: add OP_BIGMUL
10060         * mini-x86.c: register allocator: handle case where src1 needs to be
10061         in EAX.
10062         * mini.c: substitute special BIGMUL opcode in the tree for 
10063         (long)int * (long)int
10064
10065 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
10066
10067         * jit-icalls.c: call the type ctor on field access if needed.
10068
10069 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
10070
10071         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
10072         to a method (including results of ldelema, bug#43207).
10073
10074 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
10075
10076         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
10077         colors to show exception handler blocks.
10078
10079         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
10080         (fix for pinvoke7.cs).
10081
10082 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10083
10084         * mini.h, mini.c: ensure correct initialization order for types that
10085         require it. Prepare for lazy compilation of jit icall wrappers.
10086         Provide a name for opcode emulation to reduce unneeded mallocing.
10087
10088 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
10089
10090         * mini-x86.c: better register restoring code and profiling
10091         support for tail calls.
10092
10093 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10094
10095         * mini.h, driver.c: prepare for leaf methods optimization.
10096
10097 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
10098
10099         * mini.c: get targets of branches before converting a method.
10100
10101 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
10102
10103         * mini.c (optimize_branches): added some experimental code (disbaled) 
10104
10105 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
10106
10107         * mini.c (optimize_branches): fix branch to branch optimization 
10108
10109         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
10110
10111         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
10112
10113         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
10114
10115         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
10116         if needed.
10117
10118 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
10119
10120         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
10121         enable use of interface variables again.
10122
10123         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
10124         I1 to registers because there is no simply way to sign extend 8bit
10125         quantities in caller saved registers on x86.
10126
10127         * inssel-float.brg: set costs of some rules to 2 so
10128         that monobure always select the arch. specific ones if supplied,
10129         regardless of the order we pass the files to monoburg.
10130
10131 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
10132
10133         * mini.c, mini-x86.c: since the magic trampoline for jumps
10134         can't patch the code directly, we do it as soon as the
10135         method gets compiled.
10136
10137 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
10138
10139         * mini-x86.c, mini.h: introduce a new patching method
10140         to support CEE_JMP and tail calls.
10141         * mini.c: obey tail.call. Don't precompile methods target
10142         of CEE_JMP.
10143         * tramp-x86.c: new trampoline code to handle methods
10144         reached through a jump.
10145
10146 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
10147
10148         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
10149         bit values to registers
10150
10151 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
10152
10153         * mini.c (mono_compile_get_interface_var): share interface
10154         variables if possible.
10155
10156 2003-05-16  Martin Baulig  <martin@ximian.com>
10157
10158         * debug-mini.c (mono_init_debugger): New function to initialize
10159         the debugger.  This is not in the debugger since it needs to
10160         access some of mini's internals.
10161
10162 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
10163
10164         * mini.c (mono_method_to_ir): inlining fixes/cleanups
10165
10166 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
10167
10168         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
10169         for value type handling.
10170
10171 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
10172
10173         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
10174         (mono_method_check_inlining): enable inlining of all kinds of wrappers
10175
10176 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
10177
10178         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
10179           the constructor through a proxy.
10180
10181 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10182
10183         * jit-icalls.c, inssel.brg: fixes to array element address
10184         calculations.
10185
10186 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
10187
10188         * mini-x86.c (is_regsize_var): allocate pointer to registers
10189
10190 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10191
10192         * driver.c: fixed typo, added intrins to the set of optimizations
10193         tested with regressions.
10194
10195 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
10196
10197         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
10198         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
10199         test case.
10200
10201 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
10202
10203         * inssel.brg: remove some common pop instructions without side effects
10204
10205 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10206
10207         * inssel-x86.brg: fixed thinko in int to double conversions.
10208
10209 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
10210
10211         * mini.c, jit-icalls.c: added runtime thread-static variable support.
10212
10213 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
10214
10215         * inssel-long32.brg: two more missing instructions.
10216
10217 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
10218
10219         * mini.c (mono_emit_call_args): set the cil_code for all arguments
10220         if not already set.
10221
10222 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
10223
10224         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
10225         correctly.
10226
10227         * basic-float.cs: Added tests for negative zero.
10228
10229 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10230
10231         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
10232         a couple of missing operations for long casts, with test cases.
10233
10234 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10235
10236         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
10237
10238 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
10239
10240         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
10241         code size estimation.
10242
10243 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
10244
10245         * mini.c (mono_jit_create_remoting_trampoline): make it work with
10246         abstract methods (fix bug 42542)
10247
10248         * aot.c: add ability to handle array types
10249         
10250 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
10251
10252         * mini.c: Call the _specific versions of the object allocation
10253         functions if possible.
10254
10255 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
10256
10257         * driver.c: call setlocale ().
10258
10259 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
10260
10261         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
10262         windows build.
10263
10264 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
10265
10266         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
10267
10268         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
10269         wrappers (fix bug 42122)
10270
10271 2003-05-04  Martin Baulig  <martin@ximian.com>
10272
10273         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
10274
10275         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
10276         s/mini_set_defaults/mono_set_defaults/g.
10277
10278 2003-05-04  Martin Baulig  <martin@ximian.com>
10279
10280         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
10281
10282 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10283
10284         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
10285         (reported by Don Roberts).
10286
10287 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
10288
10289         * mini.c: temporarily work around two bugs for this release.
10290
10291 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10292
10293         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
10294         that contains -export-dynamic and it makes using the ld script
10295         useless.
10296         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
10297
10298 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
10299
10300         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
10301         specific cpu.
10302
10303 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
10304
10305         * mini.c: make sure leave calls all the needed finally blocks,
10306         even when the target jumps out of multiple exception clauses.
10307
10308 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10309
10310         * ldscript, Makefile.am: add linker script to reduce the number of
10311         exported symbols (should also fix the issues with libwine defining
10312         some of the same symbols in io-layer).
10313
10314 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
10315
10316         * driver.c (mini_main): Avoid assertion when no file name is given on 
10317         the command line.
10318
10319 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
10320
10321         * driver.c: added --version/-V command line option.
10322         Added the inline optimization in the regression tests.
10323
10324 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10325
10326         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
10327         to the type in the method signature (fixes bug#42134).
10328
10329 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
10330
10331         * mini.c: when inlining, check this is not null only when needed (bug #42135).
10332
10333 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
10334
10335         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
10336
10337 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10338
10339         * driver.c: fixed bug #42100.
10340
10341 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
10342
10343         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
10344
10345 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
10346
10347         * mini.c: moved most of the code required to do inlining to its own
10348         function so it can be reused. Inline also ctors if appropriate.
10349
10350 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
10351
10352         * Makefile.am: Link with -export-dynamic so shared libs loaded by
10353         the runtime can call mono API functions.
10354
10355 2003-04-27  Martin Baulig  <martin@ximian.com>
10356
10357         * debug-mini.c (mono_debug_init_method): Added
10358         `guint32 breakpoint_id' argument; if the method has a breakpoint,
10359         send a notification to the debugger.
10360
10361         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
10362         running in the Mono Debugger, just pass the breakpoint number to
10363         mono_debug_init_method().
10364
10365         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
10366
10367 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
10368
10369         * mini.c: allow some more unsafe compares.
10370
10371 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10372
10373         * mini-x86.c, Makefile.am: make distcheck works (partially from
10374         a patch by Richard Lee <r.h.lee@attbi.com>).
10375         * regset.c, regset.h: removed, they are unused.
10376
10377 2003-04-25  Dick Porter  <dick@ximian.com>
10378
10379         * driver.c: Usage reports the name as 'mono' not 'mini'
10380         * exceptions-x86.c: Build and run on freebsd
10381
10382 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
10383
10384         * Makefile.am: install the program with the 'mono' name and
10385         the library as libmono instead of mini and libmini.
10386
10387 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10388
10389         * driver.c: provide the APIs for the embedding interface of the old jit.
10390
10391 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
10392
10393         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
10394
10395 2003-04-23  Martin Baulig  <martin@ximian.com>
10396
10397         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
10398
10399         * driver.c: Added `--debug' command line argument to enable
10400         debugging support.
10401
10402 2003-04-23  Martin Baulig  <martin@ximian.com>
10403
10404         * debug.[ch]: Removed.  The code is now in
10405         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
10406
10407         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
10408         last six months.
10409
10410 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
10411
10412         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
10413
10414 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10415
10416         * mini.c:
10417         (mini_cleanup): moved mono_runtime_cleanup call after the call to
10418         mono_domain_finalize.
10419         (mini_method_compile): use mono_method_profile* if the the option is
10420         enabled.
10421
10422 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
10423
10424         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10425         methods with their wrapper.
10426
10427         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10428         methods with their wrapper.
10429
10430         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
10431         their wrapper.
10432
10433         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
10434         wrapper.
10435
10436         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
10437         methods.
10438
10439 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
10440
10441         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
10442
10443 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
10444
10445         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
10446         of the mempool. This is slightly faster and uses less memory
10447
10448 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10449
10450         * mini.c: avoid O(n) allocation for variables.
10451
10452 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10453
10454         * mini.c: handle items on the stack after inlining methods.
10455
10456 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
10457
10458         * mini.c: make the method->opcode optimization dependent
10459         on MONO_OPT_INSTRINS and do it lazily.
10460
10461 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10462
10463         * driver.c: print overall results at the end of regression run.
10464
10465 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
10466
10467         * inssel.brg: don't overwrite symbolic registers.
10468
10469 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
10470
10471         * inssel-x86.brg: fix conversion from long to float.
10472
10473 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
10474
10475         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
10476
10477 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
10478
10479         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
10480
10481         * driver.c: Added --print-vtable option as in the old JIT.
10482
10483 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
10484
10485         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
10486
10487 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
10488
10489         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
10490
10491 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
10492
10493         * mini.c regalloc.c regalloc.h: Fix memory leak.
10494
10495 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
10496
10497         * aot.c (mono_aot_get_method): register all used strings
10498
10499 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10500
10501         * mini.c: always intern strings references with ldstr at compile time.
10502
10503 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10504
10505         * Makefile.am: add BUILT_SOURCES.
10506
10507 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
10508
10509         * driver.c: give a better error message when the assembly to execute
10510         doesn't have an entry point.
10511
10512 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
10513
10514         * Makefile.am: added hack for automake
10515
10516         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
10517         correct sematics.
10518
10519         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
10520
10521 22003-04-07  Martin Baulig  <martin@ximian.com>
10522
10523         * Makefile.am: Added Makefile.am.
10524
10525         * debugger-main.c: Removed, this is now in the debugger where it
10526         belongs.
10527
10528         * mini.pc.in: Call this package `mini' for the moment.
10529
10530
10531
10532
10533
10534