4c06c69d72435464228da7c02fef853fd49d774e
[mono.git] / mono / mini / ChangeLog
1 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
4
5         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
6
7         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8         arch specific functions for its parts. Call the peephole pass after local
9         regalloc so the prolog can compute a more accurate max_offset.
10         
11         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12         the corresponding OP_I/OP_L opcodes.
13
14         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
15
16         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
17
18 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
21         as they are handled in mini.c.
22
23         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
24         
25         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
26         case since it is handled in mini.c.
27
28         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
29
30         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
31
32         * *.c: Use the new opcodes in the IR and back end code.
33
34         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
35
36         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
37
38 2008-02-06  Mark Probst  <mark.probst@gmail.com>
39
40         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
41         an assert because it has a race condition.
42
43 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
44
45         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
46
47         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
48
49         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
50
51         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
52         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
53
54 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
55
56         * cpu-amd64.md (move): Correct the maximum size of move.
57
58 2008-02-05  Mark Probst  <mark.probst@gmail.com>
59
60         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
61         the generic class init trampoline to return quickly if the class
62         is already inited.
63
64 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
65
66         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
67         issues where an 32 bit callsite cannot be patched by a 64 bit address.
68
69 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
70
71         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
72         branch.
73
74 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
75
76         * objects.cs: Add some soft-float tests.
77
78         * mini.c: Fix a couple more soft-float issues.
79
80         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
81
82         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
83         avoid a REX prefix.
84
85 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
86
87         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
88         exception happens while compiling a virtual method.
89
90 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
91
92         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
93         
94         * mini-sparc.c: Fix build.
95
96         * mini-sparc.c (get_call_info): Add support for generic sharing.
97
98         * mini-exceptions.c: Add a FIXME.
99
100 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
101
102         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
103         altstack handling code.
104
105         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
106         
107         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
108
109         * mini-s390.c: Add support for generic sharing.
110
111         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
112         Fix CAS on s390.
113         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
114
115         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
116
117         * mini-s390x.c: Add support for generic sharing.
118         
119         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
120         Fix CAS on ia64.
121         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
122
123         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
124         can be used since it takes a 16 bit signed immediate.
125
126         * inssel-s390x.brg: Fix OP_SETRET.
127
128         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
129
130         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
131
132         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
133
134         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
135
136         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
137         in one place.
138
139         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
140         stuff.
141
142         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
143         of the unused mono_arch_patch_delegate_trampoline stuff.
144
145 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
146
147         * basic-long.cs: Move the fp related tests to basic-float.cs.
148
149         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
150
151         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
152
153         * basic-calls.cs: Add a test for proper float argument passing.
154
155         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
156         if the context corresponds to an exception received through a signal.
157
158         * exceptions.cs: Add a test for nullref handling at the start of a try
159         clause.
160
161         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
162
163         * jit-icalls.c (mono_break): New JIT icall.
164
165         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
166
167         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
168
169 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
170
171         * cpu-*.md: Get rid of unused opcodes.
172
173         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
174
175         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
176         by all platforms.
177
178         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
179         define.
180
181         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
182         the arch independent trampoline code in mini-trampolines.c.
183
184         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
185
186         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
187
188         * mini-s390.h: Remove an unused define.
189         
190         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
191         the arch independent trampoline code in mini-trampolines.c.
192
193         * mini-arm.c (mono_arch_emit_prolog): Fix build.
194
195 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
196
197         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
198
199         * mini-s390.c (mono_arch_emit_prolog): Fix build.
200
201         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
202
203         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
204
205         * cpu-amd64.md: Use smaller sizes for int opcodes.
206
207         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
208
209         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
210         objects.cs.
211
212         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
213         debugging.
214
215         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
216         instead of though a pointer to save an indirection when accessing elements of
217         the array.
218
219         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
220         some typos.
221         (NOT_IMPLEMENTED): New helper macro.
222         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
223         of a bb.
224
225         * *.c: Use the new helper macro.
226
227 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
228
229         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
230
231 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
232
233         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
234         stack slots.
235
236 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
237
238         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
239         profiling is enabled.
240         
241         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
242         the end.
243         (mono_arch_emit_prolog): Add more first bblock optimizations.
244
245         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
246         in order if possible.
247         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
248         bblock, since the arguments are still in their original registers.
249
250         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
251
252 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
253
254         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
255         as well.
256
257         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
258         offset 0.
259
260         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
261
262         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
263         process async exceptions received while in unmanaged code.
264
265         * mini.c (mini_init): Install a callback with the runtime which will be called
266         when a thread receives an async exception while in unmanaged code.
267
268         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
269
270         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
271
272 2008-01-16  Wade Berrier  <wberrier@novell.com>
273
274         * cpu-g4.md:
275         * cpu-arm.md:
276         * cpu-s390x.md:
277         fix build
278
279 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
280
281         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
282         compilation with sun cc.
283
284         * cpu-*.md: Fix the build.
285
286         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
287
288         * mini-amd64.h: Add some comments to the MonoLMF structure.
289
290         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
291         
292         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
293         in the LMF structure if possible. This saves two instructions in the
294         managed->native wrappers.
295
296         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
297
298 2008-01-16  Mark Probst  <mark.probst@gmail.com>
299
300         * generic-sharing.c: New type argument lookup code which uses the
301         runtime generic context template.
302
303 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
304
305         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
306
307         * mini-arm.c (add_general): Fix arm eabi parameter passing.
308         (mono_arch_output_basic_block): Fix localloc implementation.
309
310         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
311
312         * mini-ia64.c (peephole_pass): Fix ia64 build.
313
314         * mini-amd64.c (peephole_pass): Fix a warning.
315         
316         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
317         at a constant offset from sp/fp.
318
319         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
320         instead of obtaining it from *lmf in the managed method case.
321
322 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
323
324         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
325
326 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
327
328         * mini.h (MonoInstList): New type.
329         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
330         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
331         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
332         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
333         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
334         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
335         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
336         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
337         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
338         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
339         MONO_INST_LIST_FOR_EACH_ENTRY,
340         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
341         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
342         mono_inst_list_first, mono_inst_list_last,
343         mono_inst_list_next, mono_inst_list_prev): New instruction
344         list handling interfaces.
345         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
346         list head 'ins_list'.
347         (MonoInst): Replace next pointer with list head 'node'.
348         (MonoCallInst): Make 'out_args' a MonoInstList.
349         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
350         (MonoCompile): Delete reverse_inst_list and
351         reverse_inst_list_len.
352         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
353         mono_arch_lowering_pass, mono_arch_local_regalloc,
354         mono_arch_output_basic_block, mono_arch_emit_prolog):
355         Convert to new instruction lists.
356         (insert_after_ins): Delete.
357         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
358         instruction lists.
359         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
360         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
361         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
362         mono_emulate_opcode, mono_emit_load_got_addr,
363         inline_method, mono_method_to_ir, mono_print_bb_code,
364         print_dfn, decompose_pass, nullify_basic_block,
365         replace_out_block_in_code, remove_block_if_useless,
366         merge_basic_blocks, move_basic_block_to_end,
367         try_unsigned_compare, optimize_branches, mono_print_code,
368         mini_select_instructions, remove_critical_edges): Likewise.
369         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
370         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
371         mono_arch_output_basic_block, mono_arch_emit_prolog):
372         Likewise.
373         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
374         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
375         mono_arch_output_basic_block): Likewise.
376         (inst_list_prepend, insert_after_ins): Delete.
377         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
378         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
379         instruction lists.
380         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
381         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
382         mono_arch_emit_prolog): Likewise.
383         * cfold.c (mono_constant_fold): Likewise.
384         * liveness.c (visit_bb, mono_analyze_liveness,
385         optimize_initlocals): Likewise.
386         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
387         * graph.c (mono_draw_code_cfg): Likewise.
388         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
389         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
390         mono_ssa_cprop): Likewise.
391         * abcremoval (get_relations_from_previous_bb, process_block):
392         Likewise.
393         * local-propagation (mono_cprop_invalidate_values,
394         mono_local_cprop_bb): Likewise.
395         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
396         peephole_pass, mono_arch_output_basic_block,
397         mono_arch_emit_prolog): Likewise.
398         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
399         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
400         mono_arch_emit_prolog): Likewise.
401         (insert_after_ins): Delete.
402         * aliasing.c (print_code_with_aliasing_information,
403         mono_build_aliasing_information, mono_aliasing_deadce):
404         Convert to new instruction lists.
405         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
406         peephole_pass, NEW_INS, mono_arch_lowering_pass,
407         mono_arch_local_regalloc, mono_arch_output_basic_block):
408         Likewise.
409         (insert_after_ins): Delete.
410         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
411         peephole_pass, mono_arch_output_basic_block): Convert to
412         new instruction lists.
413         * mini-codegen (InstList, inst_list_prepend,
414         insert_after_ins): Delete.
415         (insert_before_ins, get_register_force_spilling,
416         get_register_spilling, free_up_ireg, free_up_reg,
417         create_copy_ins, create_spilled_store, alloc_int_reg,
418         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
419         to new instruction lists.
420         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
421         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
422         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
423         (insert_after_ins): Delete.
424         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
425         mono_arch_local_regalloc, mono_arch_output_basic_block,
426         mono_arch_call_opcode): Convert to new instruction lists.
427         (insert_after_ins): Delete.
428         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
429         peephole_pass, mono_arch_output_basic_block,
430         mono_arch_emit_prolog): Convert to new instruction lists.
431
432 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
433
434         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
435
436         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
437         Fixes #353182.
438
439         * Makefile.am (version.h): Make this work with non-bash shells.
440
441 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
442
443         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
444
445 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
448         the InitializeArray optimization.
449
450 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
451
452         * mini.c driver.c: Don't include os/gc_wrapper.h.
453
454 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
455
456         * mini.c (print_jit_stats): Print GC statistics if available.
457
458 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
459
460         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
461
462 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
463
464         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
465
466 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
467
468         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
469         
470         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
471
472         * driver.c (mono_main): Ditto.
473
474 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
475
476         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
477
478         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
479         in the vtable can't be encoded.
480         (compile_method): Ditto.
481
482 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
483
484         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
485         defined.
486
487         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
488         lmf->rbp.
489
490         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
491         the top LMF entry belongs to the current method.
492
493         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
494
495 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
496
497         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
498         
499         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
500
501         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
502
503         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
504
505         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
506
507         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
508         implementation.
509
510         * basic-float.cs: Add an ulong->double cast test.
511
512 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
513
514         * mini.c (mono_method_to_ir): Fix a warning.
515
516 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
517
518         * mini-ops.h: Add OP_SWITCH.
519
520         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
521         CEE_SWITCH in back-end code, use OP_SWITCH instead.
522
523 2007-12-11  Geoff Norton  <gnorton@novell.com>
524
525         * mini-s390x.c: Minor change to the MAX() define to allow
526         it to compile with other gcc versions.
527
528 2007-12-11  Geoff Norton  <gnorton@novell.com>
529
530         * cpu-s390x.md:
531         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
532
533 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
534
535         exceptions-arm.c (mono_arch_get_restore_context): Restore
536         the frame pointer.
537
538         exceptions-arm.c (throw_exception): Save the frame pointer.
539         This is a partial fix for #323747. Only the client side is
540         fixed.
541
542 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
543
544         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
545         was using an unrelated variable to log the class which
546         needed the cctor to be called. This was crashing on arm.
547
548 2007-12-09  Robert Jordan  <robertj@gmx.net>
549
550         * mini-x86.c (mono_arch_emit_epilog):
551         Consider all kinds of 64-bit types. Fixes #323114.
552
553 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
554
555         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
556
557 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
558
559         * mini-amd64.c (peephole_pass): Add a missing instruction check.
560
561 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
562
563         * mini.c: run type ctor before allocating an object, not only
564         when running it's constructor method (fixes at least part of bug #342507).
565
566 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
567         
568         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
569         
570         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
571         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
572         function.
573
574         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
575         mono_generic_class_init_trampoline () the same as it is done with the other
576         trampolines.
577
578         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
579         aot-runtime.c aot-compiler.c: Implement AOT support.    
580
581 2007-12-07  Mark Probst  <mark.probst@gmail.com>
582
583         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
584         build for archs which don't have the vtable trampoline defined
585         yet.
586
587 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
588
589         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
590
591         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
592
593         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
594
595         * tramp-<ARCH>.c: Use the new helper function.
596
597 2007-12-07  Mark Probst  <mark.probst@gmail.com>
598
599         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
600         trampoline call, which takes a vtable argument.
601
602         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
603         OP_TRAMPCALL_VTABLEs like other calls.
604
605         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
606         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
607         call.  Implemented a support function which fetches the vtable
608         from a register set.
609
610         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
611         Implemented a generic class init trampoline, using the
612         OP_TRAMPCALL_VTABLE opcode.
613
614         * mini.c: Implemented static field access when sharing generic
615         code.  This implies initing the class using the new
616         OP_TRAMPCALL_VTABLE call.
617
618 2007-12-07  Mark Probst  <mark.probst@gmail.com>
619
620         * mini.c: Don't compile methods with sharing enabled if their
621         classes are disabled for sharing.
622
623 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
624
625         * inssel.brg: Add a missing sign extension to the GETCHR and array access
626         opcodes. Fixes #346563.
627
628         * objects.cs: Add a new test.
629
630         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
631
632         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
633         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
634
635 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
636
637         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
638
639 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
640
641         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
642         code stream.
643
644 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
645
646         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
647
648         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
649         optimization in the AOT case.
650         
651 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
652
653         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
654         
655         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
656
657         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
658
659         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
660
661         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
662         is created by the inlined delegate ctor.
663
664         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
665
666         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
667
668 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
669
670         * cpu-x86.md: Fix the length of ckfinite.
671
672 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
673
674         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
675         
676         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
677         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
678
679         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
680
681         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
682         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
683
684 2007-11-28  Martin Baulig  <martin@ximian.com>
685
686         * mini-x86.c
687         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
688         after creating the trampoline.
689
690 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
691
692         * aot-runtime.c (load_aot_module): Check runtime version if needed.
693
694         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
695         the same version.
696
697         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
698         instead of the calling method to help AOT.
699
700         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
701
702 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
703
704         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
705         is defined.
706
707 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
708
709         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
710         
711         * aot-compiler.c (compile_method): Correct check for generic method definitions.
712         (encode_method_ref): No need to handle generic method definitions specially.
713
714         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
715
716         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
717         decode_klass_info.
718
719         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
720         encode_klass_info.
721         (compile_method): Enable generic sharing.
722
723 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
724
725         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
726         (mini_method_compile): Add preliminary support for AOTing shared generic code.
727
728         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
729         generic code.
730
731         * mini-trampolines.c: Fix a warning.
732
733         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
734         NEW_PCONST.
735         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
736         (generic_class_is_reference_type): Remove unused function.
737
738         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
739         in the generic vtable trampoline case.
740
741         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
742         
743         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
744         return an AOT method based on a vtable slot.
745
746         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
747
748         * mini.c (mini_get_vtable_trampoline): Export this.
749
750 2007-11-22  Martin Baulig  <martin@ximian.com>
751
752         * debug-debugger.h
753         (MonoDebuggerInfo): Move `debugger_version' up.
754
755 2007-11-22  Martin Baulig  <martin@ximian.com>
756
757         * mini-amd64.c
758         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
759
760         * mini-trampolines.c
761         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
762         after compiling the method.
763
764 2007-11-20  Martin Baulig  <martin@ximian.com>
765
766         * debug-mini.c
767         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
768         (mono_debugger_remove_breakpoint): Likewise.
769         (mono_debugger_check_breakpoints): Likewise.
770
771         * debug-debugger.c: Implement the new breakpoint interface here.
772
773 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
774
775         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
776         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
777
778         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
779
780 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
781
782         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
783
784         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
785         mini.c.
786
787         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
788         mini.c.
789
790         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
791         returning a vtype in a register.
792
793         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
794         here from the arch specific code.
795
796         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
797         mini.c.
798
799         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
800         (mono_arch_emit_prolog): Increment maximum prolog size.
801
802         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
803         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
804
805         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
806         MonoGenericSharingContext.
807
808         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
809         MonoGenericSharingContext. Allocate memory from the cfg mempool.
810
811 2007-11-15  Mark Probst  <mark.probst@gmail.com>
812
813         * mini.c, mini.h, generic-sharing.c: Functions for producing code
814         which extract fields out of the runtime generic context.  Full
815         sharing of the NEWARR opcode.
816
817 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
818
819         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
820         --enable-minimal=ssa.
821
822 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini-trampolines.c (mono_delegate_trampoline): Update after 
825         mono_marshal_get_delegate_invoke () signature change.
826
827 2007-11-13  Mark Probst  <mark.probst@gmail.com>
828
829         * mini.c: Removed the shared context in favor of the generic
830         sharing context.  Allocate the MonoJitInfo structure with room for
831         the generic sharing context if it's needed.
832
833         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
834         domain-internals.h now.
835
836         * mini-x86.c: Pass the generic sharing context to get_call_info ().
837
838         * generic-sharing.c: Several changes for working without a shared
839         context and instead operating on open types instead.
840
841 2007-11-12  David S. Miller  <davem@davemloft.net>
842
843        * inssel-sparc.brg: Fix double instruction emit.
844
845 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
846
847         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
848         Get/Set/Address methods.
849         
850         * mini.c debug-debugger.c mini-trampolines.c: Update after 
851         mono_marshal_get_delegate_invoke signature change.
852
853 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
854
855         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
856         This can happens with dynamic methods. Fixes the other bug in #322722.
857
858 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
859
860         * tramp-arm.c (mono_arch_patch_callsite): Support patching
861         BX call sequence.
862
863         * mini-arm.c (arm_patch): Implement patching of BX call
864         sequence. Fixes one of the bugs in #322722.
865
866 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
867
868        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
869        under Linux.  We only need to flush every 32-byte cache line.    
870
871 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
872
873         * mini.c:
874         move_basic_block_to_end: Add branches when needed, eventually creating
875         a new BB.
876         optimize_branches: added a parameter that tells if it's ok to create
877         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
878         and avoid calling move_basic_block_to_end when it's not ok.
879         Fixes bug 318677.
880
881 2007-11-07  Mark Probst  <mark.probst@gmail.com>
882
883         * mini.c: Abort inlining call to InitializeArray if something
884         looks wrong.  Let the icall handle it, which now has proper safety
885         checks.
886
887 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
888
889         * mini.c (mono_spill_call): add support for soft-float.
890
891         * mini.c (mono_method_to_ir): add support for soft-float
892         to inlined functions that return float.
893
894         * mini.c (mono_method_to_ir): add support for soft-float
895         to cee_stsfld opcode on float fields.
896
897 2007-11-05  Geoff Norton  <gnorton@novell.com>
898
899         * mini-x86.h: Fix the structure access for X86 Leopard.
900
901
902 2007-11-05  Martin Baulig  <martin@ximian.com>
903
904         * mini-trampolines.c
905         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
906         after compiling the method to notify the debugger.
907
908 2007-11-05  Martin Baulig  <martin@ximian.com>
909
910         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
911
912 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
913
914         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
915         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
916
917 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
920         native-to-managed wrappers.
921         
922 2007-11-01  Geoff Norton  <gnorton@novell.com>
923
924         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
925         members.
926
927 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
928
929         * mini.c, mini-x86.c: when getting back from unmanaged code
930         to managed via a marshaled delegate we also need to set the
931         right domain.
932
933 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
934
935         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
936         for amd64.
937
938 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
939
940         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
941         let the debugger or other external agents to tell the JIT when
942         a sw breakpoint has been inserted in the code that the JIT needs
943         to be able to inspect.
944
945 2007-10-31  Martin Baulig  <martin@ximian.com>
946
947         * debug-debugger.h
948         (MonoDebuggerInfo): Remove `runtime_class_init'.
949
950 2007-10-30  Martin Baulig  <martin@ximian.com>
951
952         * debug-mini.h
953         (mono_debugger_thread_created): Added `MonoThread *' argument.
954         (mono_debugger_extended_notification): New public method.
955         (mono_debugger_trampoline_compiled): New public method.
956
957         * debug-mini.c
958         (MonoDebuggerThreadInfo): Added `thread' and
959         `extended_notifications' fields.
960
961         * debug-debugger.c
962         (debugger_executable_code_buffer): New static variable.
963
964         * debug-debugger.h
965         (MonoDebuggerInfo): Added `executable_code_buffer',
966         `executable_code_buffer_size', `breakpoint_info_area',
967         `breakpoint_table' and `breakpoint_table_size'.
968
969 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
970
971         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
972         that IP  either is an unused value or the vtable pointer. IMT 
973         calls use vtable + offset now. Reduced by almost half the size
974         of IMT entries.
975
976 2007-10-26  Jonathan Chambers <joncham@gmail.com>
977
978         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
979         defines to access param registers. Replace long usage with
980         gsize as sizeof(long) != sizeof(void*) on Win64.
981
982         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
983         on Win64. Fix intrinsic, use _AddressOfReturnAddress
984         instead of non-existant _GetAddressOfReturnAddress.
985
986         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
987         param registers. Save/restore %rdi and %rsi in MonoLMF.
988
989         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
990         param registers. Modify (throw_exception) signature to take 
991         %rdi and %rsi on Win64. 
992
993         Code is contributed under MIT/X11 license.
994
995 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
996
997         * helpers.c: unlink debugging output files.
998
999 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
1000
1001         * mini.c: Move mono_create_ftnptr () to object.c.
1002
1003 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
1006         optional. This function can now be used to disassemble code generated
1007         outside the JIT such as trampolines and IMT thunks.
1008
1009         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
1010
1011         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
1012         vtable pointer from a ldr instruction.
1013
1014         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
1015         new IMT call sequence.
1016
1017         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
1018         call sequence for interface invocations.
1019
1020         * mini-arm.c (mono_arch_emit_imt_argument): added, required
1021         for imt support. This function is empty since IMT on ARM requires no
1022         special handling on the IR side.
1023
1024         * mini-arm.c (mono_arch_find_imt_method): added, required for
1025         imt support.
1026
1027         * mini-arm.c (mono_arch_find_this_argument): added, required
1028         for imt support.
1029
1030         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
1031         a ldr instruction to load a value stored in the code stream.
1032
1033         * mini-arm.c (mono_arch_build_imt_thunk):added, required
1034         for imt support.
1035
1036
1037 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * mini.c (mini_init): Install the jump trampoline callback.
1040
1041 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1042
1043         * mini-trampolines.c: handle synchronized methods with the common
1044         vtable trampoline (bug #335601).
1045
1046 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
1049
1050         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
1051         64 bit platforms.
1052
1053         * mini-ia64.h mini-ia64.c: Add support for IMT.
1054
1055         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
1056         prolog. Fixes #331958.
1057
1058 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
1061
1062 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1063
1064         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
1065         trampoline.
1066
1067 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
1068
1069         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
1070         trampoline.
1071
1072 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
1073
1074         * mini-x86.c, mini-x86.h: x86 support for the common vtable
1075         trampoline.
1076
1077 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
1078
1079         * mini-trampolines.c: changed the magic rampoline to understand
1080         the common vtable trampoline method: the method to invoke is
1081         determined by the vtable displacement of the call.
1082
1083 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1084
1085         * mini.c, mini.h: register the common vtable trampoline if the
1086         architecture supports it.
1087
1088 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1089
1090         * cpu-amd64.md: use the correct max length for tls_get.
1091
1092 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
1095         CEE_STELEM_ANY. Fixes #333696.
1096
1097 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
1098
1099         * exceptions-x86.c: provide more graceful handling of the case where
1100         we followed a bogus function pointer from managed code (bug #332866).
1101
1102 2007-10-11  Mark Probst  <mark.probst@gmail.com>
1103
1104         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
1105         replaces the generic_shared flag and will carry more information
1106         in the future.
1107
1108         * generic-sharing.c: Added mini_type_stack_size() which allows
1109         allows open types if given a generic sharing context.
1110         mini_get_basic_type_from_generic() takes a
1111         MonoGenericSharingContext* instead of a MonoCompile* now.
1112
1113         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
1114         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
1115         mini-sparc.c, mini-x86.c: Trivial changes required by the two
1116         changes above.  Just passing arguments through to the right
1117         places.
1118
1119 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
1120
1121         * mini-arm.c: unify the call emission to emit_code_seq().
1122
1123 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
1124
1125         * tramp-arm.c: reduced the trampoline size.
1126
1127 2007-10-10  Mark Probst  <mark.probst@gmail.com>
1128
1129         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
1130         variable handling out of arch-specific code.
1131
1132 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
1133
1134         * mini-arm.c: implemented fast delegate dispatch.
1135
1136 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
1139         that fp elimination is turned off if the space required by locals is too
1140         big. Fixes #331958.
1141
1142 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
1143
1144         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
1145         ARM to the new style trampoline.
1146
1147 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
1150
1151         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
1152
1153 2007-10-09  Martin Baulig  <martin@ximian.com>
1154
1155         * debug-debugger.h
1156         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
1157         `field_info_offset_offset'.     
1158
1159 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
1160
1161         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
1162         removed more internal usage of the r11 register and made it available
1163         to the register allocator.
1164
1165 2007-10-08  Mark Probst  <mark.probst@gmail.com>
1166
1167         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
1168         when sharing generics and treat type variables as references.
1169
1170 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
1171
1172         * mini-ppc.c: started removing the internal uses of register r11
1173         to eventually allow the register allocator to manage it as an
1174         additional available register.
1175
1176 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
1177
1178         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
1179
1180 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
1181
1182         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
1183         specific trampolines as they are not performance critical as a jump
1184         target (maybe align as before only for AOT code?). This saves about
1185         200 KB of native code on x86 for monodevelop startup.
1186
1187 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
1188
1189         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
1190         monodevelop startup.
1191
1192 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
1195
1196         * mini-sparc.h mini-sparc.c: Implement IMT support.
1197
1198         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
1199         its smaller and doesn't clobber sparc_g1.
1200
1201         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
1202
1203 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
1204
1205         * mini-ppc.c: optimized the size of the IMT thunks a bit.
1206
1207 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
1208
1209         * mini-ppc.c: implemented fast delegate invocation.
1210
1211 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
1212
1213         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
1214
1215 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
1216
1217         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
1218         code to the new style trampoline in preparation for IMT support.
1219
1220 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
1221
1222         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
1223         systems already. This also reduces the specific trampiline sizes and
1224         prepares for the use of r12 as the IMT identifier register.
1225
1226 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
1227
1228         * mini-mips.h: endianess fix (simplified from a patch by
1229         Thomas Kunze <thommy@tabao.de>, bug #323737).
1230
1231 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
1232
1233         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
1234         to access ucontext fields and enable netbsd support
1235         (partially from Magnus Henoch <mange@freemail.hu>).
1236
1237 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
1238
1239         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
1240         use the preprocessor from the CPP env var if it is set.
1241
1242 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
1243
1244         * mini-trampolines.c: fixed an assertion and moved it earlier in the
1245         code, before interface_offset gets used.
1246
1247 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
1248
1249         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
1250         mono_class_setup_vtable () before accessing klass->vtable.
1251
1252 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
1255         hackish.
1256
1257 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
1258
1259         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
1260         IMT slots (this saves hundreds of KB of memory in programs like
1261         IronPython and Monodevelop).
1262
1263 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
1264
1265         * mini.c: print the delegate counter.
1266
1267 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
1268
1269         * mini-x86.c: make it easier to enable the debugging code for IMT
1270         slots.
1271
1272 2007-09-28  Martin Baulig  <martin@ximian.com>
1273
1274         * debug-debugger.h
1275         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
1276         `mono_method_klass_offset' and `mono_method_token_offset'.
1277
1278 2007-09-20  Mark Probst  <mark.probst@gmail.com>
1279
1280         * mini.c: First generics sharing implementation.  Can only share
1281         in very simple cases.  If sharing doesn't work it falls back to
1282         dedicated compilation.
1283
1284         * mini.h: Flag in MonoCompile to specify whether generic
1285         compilation is shared.  Flags enum for marking which generic inst
1286         of a context is used.  Prototypes for helper functions.
1287
1288         * generic-sharing.c: Helper functions for generic method sharing.
1289
1290         * optflags-def.h: Optimization flag (gshared) for enabling generic
1291         method sharing added.
1292
1293         * Makefile.am: generic-sharing.c added.
1294
1295 2007-09-19 Daniel Nauck <dna@mono-project.de>
1296
1297         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
1298
1299 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
1300         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
1301         fixes bug 325507.
1302
1303 2007-09-19  Martin Baulig  <martin@ximian.com>
1304
1305         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
1306         mono_debug_cleanup() is now part of mono_cleanup().
1307
1308 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * driver.c (mono_main): Fix a warning.
1311
1312 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * aot-compiler.c: Optimize various parts when processing large assemblies.
1315         Fixes ##325568.
1316
1317         * mini.c (mono_patch_info_hash): Improve hash function.
1318
1319 2007-09-14  Jonathan Chambers <joncham@gmail.com>
1320
1321         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
1322         
1323         Code is contributed under MIT/X11 license.
1324
1325 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * mini.c (mini_init): Fix a leak.
1328
1329         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
1330
1331 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
1332
1333         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
1334
1335 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
1338
1339 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
1340
1341         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
1342         variance tests.
1343
1344         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
1345
1346         * mini.c (handle_alloc): Enable managed allocators in AOT code.
1347
1348         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
1349
1350         * aot-runtime.c (decode_patch_info): Ditto.
1351
1352 2007-09-12  Jonathan Chambers <joncham@gmail.com>
1353
1354         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
1355         static case. Cache delegates in architecture specific code, 
1356         based on number of parameters.
1357         
1358         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
1359         in architecture specific code, based on number of parameters.
1360         
1361         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
1362         caching happen in architecture specific code now.
1363         
1364         Code is contributed under MIT/X11 license.
1365
1366 2007-09-12  Jonathan Chambers <joncham@gmail.com>
1367
1368         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
1369         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
1370         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
1371
1372         Code is contributed under MIT/X11 license.
1373
1374 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
1375         * mini.c: (mono_thread_abort) Fixed bug #82416.
1376
1377 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
1378
1379         * mini.: hook the new managed GC allocation feature into the JIT.
1380
1381 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
1382
1383         * mini.c: implementation for the new runtime tls opcode.
1384
1385 2007-09-11  Martin Baulig  <martin@ximian.com>
1386
1387         * debug-debugger.h
1388         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
1389         `mono_method_inflated_offset'.
1390
1391 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * driver.c mini.h mini.c: Add a new devel command line option for injecting
1394         async exceptions into a method.
1395
1396         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
1397         purpose of testing whenever the unwinder works at every instruction.
1398
1399 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
1400
1401         * mini.c: check accessibility of method used in ldftn (fixes
1402         bug #82635).
1403
1404 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
1405
1406         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
1407
1408         * inssel.brg: Fix a warning.
1409
1410 2007-09-03  Martin Baulig  <martin@ximian.com>
1411
1412         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
1413         now takes the `main_method' as argument.
1414
1415 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * cpu-sparc.md (endfilter): Add missing src1:i argument.
1418
1419 2007-08-30  Jonathan Chambers <joncham@gmail.com>
1420
1421         * driver.c: include the cil-coff.h header on Windows.
1422         
1423         Code is contributed under MIT/X11 license.
1424
1425 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
1426
1427         * mini.c, driver.c: don't include the cil-coff.h header.
1428
1429 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
1430
1431         * mini.c: flag places that needs fixes fo soft-float support.
1432
1433 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
1434
1435         * mini.h, inssel-float.brg: fix soft-float constant loads on big
1436         endian systems (partially from Dean Jenkins, bug #81924).
1437
1438 2007-08-28  Mark Probst  <mark.probst@gmail.com>
1439
1440         * mini.c (check_linkdemand): Remove embedded reference object in
1441         call to LinkDemandSecurityException.
1442         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
1443         with an IntPtr instead of a reference object.
1444
1445 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * mini.c (handle_initobj): Handle alignment properly.
1448
1449         * inssel.brg (mini_emit_memset): Ditto. 
1450
1451         * inssel.brg (mini_emit_memcpy): Ditto. 
1452
1453         * inssel-sparc.brg: Ditto.              
1454
1455         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
1456
1457 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
1460         exceptions raised in unmanaged code. Fixes part of #82594.
1461
1462 2007-08-24  Mark Probst  <mark.probst@gmail.com>
1463
1464         * mini.c (mono_method_to_ir), declsec.c
1465         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
1466
1467 2007-08-22  Martin Baulig  <martin@ximian.com>
1468
1469         * debug-mini.h
1470         (MonoDebuggerThreadInfo): New typedef.
1471         (mono_debugger_thread_table): New global variable.
1472         (mono_debugger_thread_created): New public function.
1473         (mono_debugger_thread_cleanup): New public function.
1474
1475         * debug-debugger.h
1476         (MonoDebuggerInfo):
1477         - removed `get_current_thread' and `lookup_assembly'.
1478         - removed `data_table'.
1479         - added `thread_table'.
1480
1481         * mini.c
1482         (mono_thread_start_cb): Call mono_debugger_thread_created().
1483         (mono_thread_attach_cb): Likewise.
1484         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
1485         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
1486         initial domain.
1487
1488         * driver.c (mono_main): Move mono_debug_init() up, before calling
1489         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
1490
1491 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1492
1493         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
1494         together when passing several arguments of type double (gives a small
1495         speedup and saves a few bytes of generated code).
1496
1497 2007-08-20  Jb Evain  <jbevain@novell.com>
1498
1499         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
1500
1501 2007-08-20  Jb Evain  <jbevain@novell.com>
1502
1503         * mini.c (mono_method_to_ir): throw MethodAccessException
1504         and FieldAccessException instead of InvalidProgramException.
1505
1506 2007-08-20  Mark Probst  <mark.probst@gmail.com>
1507
1508         * mini.c: CoreCLR security checks.
1509
1510         * mini.h: Removed MonoSecurityMode (moved to
1511         metadata/security-manager.h) and mono_security_mode global var
1512         (replaced by set/get functions in security-manager.h).
1513
1514         * driver.c: Added "core-clr-test" security mode for testing.  Used
1515         set-function for setting security mode.
1516
1517 2007-08-17  Mark Probst  <mark.probst@gmail.com>
1518
1519         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
1520         the new jit_info_table.
1521
1522         * driver.c: Test code for the new jit_info_table (enabled by the
1523         define MONO_JIT_INFO_TABLE_TEST).
1524
1525 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
1528         detection of call <REG> instruction sequence. Fixes build on freebsd.
1529
1530 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * mini-exceptions.c: Fix a warning.
1533
1534 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
1537         stack overflow handling code on amd64 too.
1538
1539         * mini-exceptions.c (mono_setup_altstack): Make this use 
1540         mono_thread_get_stack_bounds ().
1541
1542         * mini-x86.h: Disable sigaltstack on solaris x86.
1543
1544 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
1545
1546         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
1547
1548 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
1549
1550         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
1551
1552 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
1555
1556         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
1557
1558 2007-08-03  Neale Ferguson <neale@sinenomine.net>
1559
1560         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
1561         due to alignment.
1562
1563 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
1564
1565         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
1566         to be emitted (bug #82281).
1567
1568 2007-08-01  Martin Baulig  <martin@ximian.com>
1569
1570         Merged the `debugger-dublin' branch.
1571
1572         * debug-debugger.h (MonoDebuggerInfo):
1573         Removed the `old_*' compatibility entries.
1574         Added `debugger_version' and `data_table'.
1575         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
1576         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
1577
1578         * debug-mini.c
1579         (MiniDebugMethodBreakpointInfo): Add `address_list'.
1580         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
1581         instead of a `gconstpointer'.
1582         (mono_debugger_insert_method_breakpoint): Return a
1583         `MonoDebugMethodAddressList *'.
1584
1585 2007-06-28  Martin Baulig  <martin@ximian.com>
1586
1587         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
1588
1589 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
1592         __builtin_frame_address () since it is broken on older gcc versions.
1593
1594 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
1595
1596         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
1597         on the stack overflow handling and made the managed stack overflows
1598         catchable in most cases using soft guard pages.
1599         * exceptions-x86.c: added code to restore the protection in the soft
1600         guard pages at the end of exception handling.
1601
1602 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
1605
1606 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
1607
1608         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
1609         exception handling.
1610
1611 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
1612
1613         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
1614         signal handling support until it has been ported to the new mechanism.
1615         * mini.c: fixed stack overflow detection and use the new
1616         architecture code  to handle signals on the altstack.
1617
1618 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
1619
1620         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
1621         stack overflows on the alt stack.
1622
1623 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
1624
1625         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
1626         stack overflows on the alt stack.
1627
1628 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
1629
1630         * exceptions-ppc.c: cleanup preparing for altstack support.
1631
1632 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
1633
1634         * exceptions-arm.c: cleanup preparing for altstack support.
1635
1636 2007-07-27  Mark Probst  <mark.probst@gmail.com>
1637
1638         * mini.c (print_jit_stats): Output hazard pointer stats.
1639
1640 2007-07-26  Mark Probst  <mark.probst@gmail.com>
1641
1642         * driver.c, mini.c: Replaced security mode flags with a single
1643         enum variable.
1644
1645 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1646
1647         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
1648
1649 2007-07-25  Mark Probst  <mark.probst@gmail.com>
1650
1651         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
1652         (which doesn't do anything yet) for activating Core CLR
1653         (Silverlight) security.
1654
1655 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
1656
1657         * mini-codegen.c: work around a possible gcc bug on arm.
1658
1659 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
1660
1661         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
1662         message for platforms that don't support AOT compilation.
1663
1664 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
1665
1666         * mini.h, mini.c, driver.c: temporary smcs hack.
1667
1668 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
1669
1670         * mini-arm.h, mini-arm.c: arm EABI fixes.
1671
1672 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
1675         case.
1676
1677         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
1678         trampolines taking a method argument.
1679
1680         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
1681
1682         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
1683         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
1684
1685         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
1686         JIT compilation throws an exception. Fixes #82050.
1687
1688 2007-07-19  Mark Probst  <mark.probst@gmail.com>
1689
1690         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
1691         with the MONO_EXCEPTION_ defines.
1692
1693 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
1696         #82117.
1697         
1698         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
1699         the cause of an assertion.
1700
1701 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
1702
1703         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
1704         removed.
1705
1706 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
1707
1708         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
1709         assert. Should fix #82103.
1710
1711 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
1712
1713         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
1714         here too. Fixes #82095.
1715
1716         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
1717         addresses.
1718
1719         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
1720
1721         * mini-amd64.h: Enable IMT for amd64.
1722         
1723         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
1724
1725 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
1728
1729 2007-07-12  Mark Probst  <mark.probst@gmail.com>
1730
1731         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
1732         as soon as check_linkdemand sets an exception_type.
1733
1734 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
1735
1736         * mini-x86.c: fixed offsets for IMT call sequence.
1737         * mini-x86.h: enable IMT again.
1738
1739 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * trace.c (mono_trace_enter_method): Decode MonoType too.
1742
1743         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
1744
1745         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
1746
1747         * mini-amd64.c: Add preliminary IMT implementation.
1748         
1749 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
1750
1751         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
1752         understand the new IMT-base interface invocation (thanks to
1753         Daniel Nauck for the report and the remote debugging session).
1754
1755 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
1756
1757         * mini-x86.c: size and speed optimizations for the IMT bsearch.
1758
1759 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * Makefile.am (aotcheck): Make this actually use the AOTed code.
1762
1763 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
1764
1765         * mini-trampolines.c: implement AOT IMT support.
1766         * mini-x86.h: enable IMT support for wider testing.
1767
1768 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * inssel.brg (emit_imt_argument): Add aot support here.
1771
1772         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
1773
1774 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
1775
1776         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
1777         of the IMT implementation, partially from massi, with my
1778         implementation of the bsearch sequence. Disabled by default until
1779         the AOT code is implemented.
1780
1781 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
1784
1785         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
1786
1787 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1788
1789         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
1790         arch-independent IMT JIT code from Massimiliano
1791         Mantione (massi@ximian.com) with small cleanups from me.
1792
1793 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
1794
1795         * Makefile.am: fix svn invocation to get the svn revision to be
1796         independent of the local language (build fix).
1797
1798 2007-07-09  Mark Probst  <mark.probst@gmail.com>
1799
1800         * mini.c (inline_method): Reset cfg->exception_type if the
1801         inlining is aborted.  Fixes: 82049.
1802
1803 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
1804
1805         * mini.c: remove assert from exception handling code when exception_ptr
1806         is not set.
1807
1808 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini.c (mono_codegen): Add an assert.
1811
1812         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
1813         enter and leave code.
1814         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
1815
1816 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1817
1818         * mini-ppc.c: fixed memory corruption for localloc(0)
1819         (bug #81852).
1820
1821 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1822         
1823         * mini.c: Fix warnings.
1824
1825 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
1826
1827         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
1828         to emit better double->int conversions.
1829
1830 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
1831
1832         * mini.c: the provided Min/Max optimizations are valid for unisgned
1833         ints.
1834
1835 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
1836
1837         * 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
1838
1839 2007-06-28  Miguel de Icaza  <miguel@novell.com>
1840
1841         * mini.c (mono_running_on_valgrind): Add support for reporting the
1842         method and  its boundaries to valgrind.
1843
1844 2007-06-28  Martin Baulig  <martin@ximian.com>
1845
1846         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
1847
1848 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
1849
1850         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
1851
1852         * generic.2.cs: Add new test case.
1853
1854 2007-06-25  Martin Baulig  <martin@ximian.com>
1855
1856         Merged the `debugger-dublin' branch.
1857
1858         * debug-mini.c
1859         (mono_debugger_insert_method_breakpoint): New public method.
1860         (mono_debugger_remove_method_breakpoint): Likewise.
1861         (mono_debugger_check_breakpoints): New static method.
1862         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
1863
1864         * debug-debugger.h (MonoDebuggerInfo):
1865         Renamed (to keep backward compatibility in the vtable):
1866         `insert_breakpoint' -> `old_insert_breakpoint'.
1867         `remove_breakpoint' -> `old_remove_breakpoint'.
1868         `create_string' -> `old_create_string'.
1869         `lookup_class' -> `old_lookup_class'.
1870         `lookup_type' -> removed; changed into a dummy field.
1871         `lookup_assembly' -> `old_lookup_assembly'.
1872         Added (same functionality, but different signature):
1873         `create_string', `lookup_class', `lookup_assembly'
1874         Added new:
1875         `get_method_addr_or_bpt', `remove_method_breakpoint',
1876         `runtime_class_init'.
1877
1878         * debug-debugger.c: Merged the `debugger-dublin' branch.
1879
1880 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
1883         well.
1884         (peephole_pass): Likewise.
1885
1886 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
1887
1888         * driver.c: hopefully make setaffinity work also for ancient
1889         versions of linux.
1890
1891 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
1892
1893         * driver.c : win32 build fix.
1894
1895 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
1896
1897         * driver.c: check for the MONO_NO_SMP env var and bind to a single
1898         processor if it is set.
1899
1900 2007-06-21  Martin Baulig  <martin@ximian.com>
1901
1902         * debug-mini.h: New file.
1903
1904         * debug-mini.c
1905         (mono_debugger_insert_breakpoint_full): Moved here from
1906         ../metadata/mono-debug-debugger.c.
1907         (mono_debugger_remove_breakpoint): Likewise.
1908         (mono_debugger_breakpoint_callback): Likewise.
1909
1910 2007-06-15  Raja R Harinath  <rharinath@novell.com>
1911
1912         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1913         changes in MonoGenericClass.
1914
1915 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
1918
1919 2007-06-14  Raja R Harinath  <rharinath@novell.com>
1920
1921         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1922         removal of MonoGenericMethod.
1923
1924 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1925
1926         * mini-exceptions.c: hooks for the exception events profiling API.
1927
1928 2007-06-14  Randolph Chung  <tausq@debian.org>
1929
1930         * Makefile.ma: Add hppa target.
1931         * mini-arch.h: Include mini-hppa.h
1932         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
1933         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
1934         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1935
1936 2007-06-14  Randolph Chung  <tausq@debian.org>
1937
1938         * inssel.brg: Add rules for "chained" compare-branch operations so that
1939         a single compare op can affect multiple branches.  Adjust cost for
1940         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
1941         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
1942         cost for some rules so that they can more easily be overridden by
1943         per-arch rules (with fixes from lupus).
1944         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1945
1946 2007-06-13  Randolph Chung  <tausq@debian.org>
1947
1948         * mini-ops.h: Reorder branch ops so that they match the order of the
1949         corresponding CEE_* ops.  The code expects them this way.
1950         Add new ops for HPPA target.
1951         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1952
1953 2007-06-13  Randolph Chung  <tausq@debian.org>
1954
1955         * mini-exceptions.c: Handle cases where the stack grows towards
1956         larger addresses.
1957         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1958
1959 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
1960
1961         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
1962         counter.
1963         * driver.c: explain where a non-matching corlib is found.
1964
1965 2007-06-13  Mark Probst  <mark.probst@gmail.com>
1966
1967         * mini.c (print_jit_stats): Output dynamic code allocation stats.
1968
1969 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
1970
1971         * mini-exceptions.c: Generate a method profile leave event during
1972         an exception to ensure that the profiler gets notified.
1973
1974 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
1977         branch.
1978
1979         * cpu-amd64.md: Add long_and/or/xor opcodes.
1980
1981 2007-06-06  Wade Berrier  <wberrier@novell.com>
1982
1983         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
1984         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
1985         length of instruction shr_imm (expected 8, got 10)
1986
1987 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
1990
1991 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1992
1993         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
1994         MonoInternalHashTable again (fixed bug in the internal hash table
1995         code).
1996
1997 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1998
1999         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
2000         Have to figure out what makes it crash the SWF regression.
2001
2002 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
2005
2006 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
2007
2008         * mini.c: optimize out the type check when storing null in a
2009         reference array.
2010
2011 2007-06-04  Mark Probst  <mark.probst@gmail.com>
2012
2013         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
2014         MonoInternalHashTable.
2015
2016 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
2017
2018         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
2019         signed integer methods.
2020
2021 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
2024         permanently since the current approach doesn't work.
2025
2026 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
2027
2028         * inssel.brg (stmt): Only call delegate->invoke_impl if 
2029         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
2030
2031 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
2034         the sreg2==rdx case.
2035         
2036         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
2037         account if it contains a rex prefix.
2038         (peephole_pass): Handle OP_FMOVE as well.
2039
2040 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
2043         as it causes regressions.
2044
2045 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
2048         static case as well.
2049
2050         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
2051
2052         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
2053         (mono_arch_get_this_arg_from_call): Ditto.
2054
2055         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
2056
2057         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
2058         invoke_impl field.
2059
2060         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
2061         (mono_arch_get_this_arg_from_call): Ditto.
2062
2063         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
2064         
2065         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
2066         try to create optimized invoke code and use that for further invocations. 
2067         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
2068
2069         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
2070
2071 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
2072
2073         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
2074         sealed classes or methods.
2075         *devirtualization.cs: tests for the new optimization
2076
2077 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
2080         by the update_volatile () function.
2081
2082 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
2085         require it.
2086
2087         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
2088
2089 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
2090
2091         * mini.c: Add configure checks for header files.
2092         * mini-x86.c: Add configure checks for header files.
2093         * trace.c: Add configure checks for header files.
2094         * aot-runtime.c: Add configure checks for header files.
2095         * aot-compiler.c: Add configure checks for header files.
2096         * driver.c: Add configure checks for header files.
2097         * mini-codegen.c: Add configure checks for header files.
2098         
2099         Code is contributed under MIT/X11 license.
2100
2101 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
2104         icompare_imm -128 + op_iclt. Fixes #81703.
2105
2106 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
2109
2110 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
2111
2112         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
2113         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
2114         so that all isinst checks now use "interface_bitmap".
2115
2116 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * cpu-amd64.md (jmp): Fix a warning.
2119
2120         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
2121
2122         * basic.cs: Add new regression test.
2123
2124         * basic.cs: Remove test which is now in basic-long.cs.
2125
2126         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
2127
2128         * basic-long.cs: Add new test.
2129         
2130 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
2133
2134 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
2137
2138         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
2139         places.
2140         
2141         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
2142         throwing code a bit.
2143
2144         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
2145         the exception throwing code a bit.
2146
2147         * mini-x86.c (get_call_info): Allocate result from a mempool.
2148
2149 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * aot-compiler.c (find_typespec_for_class): Fix the assert.
2152
2153         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
2154
2155         * mini.h (MonoCompile): Add 'token_info_hash' field.
2156
2157         * mini.c: Save token->method associations during compilation so the AOT 
2158         compiler can use it.
2159         
2160         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
2161         which reference generic classes and methods.
2162
2163 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
2166
2167         * aot-compiler.c (compile_method): Fix a typo in a comment.
2168
2169         * aot-runtime.c (decode_cached_class_info): Skip generic types.
2170
2171         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
2172         everything generic.
2173
2174         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
2175
2176 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * mini.h (MonoCompile): Add 'args' field.
2179
2180         * mini.c (mono_compile_create_vars): Store variables representing the arguments
2181         into cfg->args.
2182
2183         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
2184
2185 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * mini.c (mono_compile_get_interface_var): Remove this unused function.
2188
2189         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
2190
2191         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
2192         opcodes for some opcodes.
2193
2194         * mini.h *.brg *.c: Use the new opcodes.
2195
2196 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
2197
2198         * mini.h: Bumped aot revision.
2199
2200         * inssel.brg: modified code generation of type checks for interfaces
2201         to use the new "MonoClass.interface_bitmap" instead of the old
2202         "MonoClass.interface_offsets".
2203
2204 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
2207
2208 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
2211         64 bit platforms.
2212
2213 2007-04-27  Neale Ferguson <neale@sinenomine.net>
2214
2215         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
2216
2217 2007-04-27  Wade Berrier  <wberrier@novell.com>
2218
2219         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
2220         mini.h) to fix build.
2221
2222 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
2225         
2226         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
2227         causes the corlib unit tests to fail.
2228
2229 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
2230
2231         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
2232
2233         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
2234
2235         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
2236         opcodes to the comparison relations.
2237
2238         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
2239         opcodes to their types.
2240         
2241         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
2242
2243         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
2244         it in cfg->arch.cinfo.
2245
2246         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
2247
2248         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
2249         cfg->cil_offset_to_bb.
2250
2251 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
2254         created becase of initlocals.
2255
2256 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * mini-alpha.c cpu-alpha.md: More alpha port work from 
2259         Sergey Tikhonov <tsv@solvo.ru>.
2260
2261 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
2262
2263         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
2264
2265 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
2266
2267         * cpu-s390.md (break): Correct the length of break instruction.
2268
2269 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
2270
2271         * mini.c: fix a couple of soft-float issues and comments.
2272
2273 2007-04-15  Miguel de Icaza  <miguel@novell.com>
2274
2275         * trace.c (is_filenamechar): - is also a filename char.
2276
2277 2007-04-15  Neale Ferguson <neale@sinenomine.net>
2278
2279         * mini-s390.c: Correct checking for enum type in return value processing.
2280
2281 2007-04-14  Raja R Harinath  <rharinath@novell.com>
2282
2283         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
2284         (version.h): Makefile is in the build directory.
2285
2286 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
2287
2288         * mini-amd64.h: fix for assertion failure on Solaris/amd64
2289
2290 2007-04-11  Martin Baulig  <martin@ximian.com>
2291
2292         * mini.c (can_access_member): Fix handling of generic classes;
2293         fixes #81259.
2294
2295 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
2296
2297         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
2298
2299 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
2300
2301         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
2302
2303 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
2304
2305         * mini-codegen.c: make sure the right spill amount is
2306         used for fp or integer registers (fixes the float_sub_spill() on ppc).
2307
2308 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
2309
2310         * mini-ppc.c: fixes for the fp_branch_nan test.
2311
2312 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * basic.cs: Comment out new test which still fails on ia64.
2315
2316 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
2317
2318         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
2319
2320 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
2321
2322         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
2323
2324 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
2327         on 64 bit machines. Fixes part of #80738.
2328
2329         * basic.cs: Add regression test.
2330
2331 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * inssel.brg basic.cs: Revert previous change to fix build.
2334
2335         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
2336         platforms.
2337         
2338         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
2339
2340         * basic.cs: Add new regression test.
2341
2342 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
2345         many arguments.
2346
2347 2007-03-16  Neale Ferguson <neale@sinenomine.net>
2348
2349         * cpu-s390x.md: Correct length of break instruction.
2350
2351 2007-03-16  Neale Ferguson <neale@sinenomine.net>
2352
2353         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
2354         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
2355
2356 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
2357
2358         * *.c: Begin WIN64 port.
2359         * mini.c:  Use correct register in profiler.
2360         * mini-amd64.c: No inline assembly on Win64.
2361         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
2362         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
2363         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
2364         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
2365         mono_arch_ip_from_context for Win64.
2366         
2367         Contributed under MIT/X11 license.
2368
2369 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * exceptions-amd64.c (seh_handler): Ditto.
2372
2373         * exceptions-x86.c (seh_handler): Fix a memory leak.
2374
2375 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
2376
2377         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2378         mini-s390x.c: fixed peephole optimizations to deal
2379         correctly with 1 and 2 byte reload avoidance.
2380
2381 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
2382
2383         * cpu-s390.md, cpu-s390x.md: update localloc length.
2384
2385 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
2386
2387         * cpu-g4.md: added missing descriptions.
2388
2389 2007-03-14  Miguel de Icaza  <miguel@novell.com>
2390
2391         *  Makefile.am: Add support so the tail tests are not executed on
2392         PowerPC as that is a known limitation of the PowerPC port.
2393
2394 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
2395
2396         * runmdesc.bat:  Move to msvc directory.
2397         
2398 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
2399
2400         * runmdesc.bat:  Run executable that was produced by the current
2401         target and sent via an argument.
2402         
2403 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
2406         #81102.
2407
2408         * generics.2.cs: Add regression test.
2409
2410 2007-03-09  Wade berrier  <wberrier@novell.com>
2411
2412         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
2413
2414 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
2417         AOT code depends on this.
2418
2419 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
2420
2421         * mini.c: more precise tracking of types in the eval stack
2422         (part of fix for bug #81044).
2423
2424 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
2427
2428         * aot-compiler.c (encode_patch): Remove an obsolete comment.
2429
2430 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
2433
2434         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
2435
2436 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
2439         a pointer on 64 bit systems. Fixes #80190.
2440
2441         * iltests.il: Add new regression test.
2442
2443 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
2444
2445         * mini.c: inline a constant for Environment.IsRunningOnWindows.
2446
2447 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
2448
2449         * trace.c: Remove an erroneous alignemnt check when tracing.
2450           Fixes --trace on OSX86.
2451
2452 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
2453
2454         * mini-$(arch).h: initialize SP in context for all the archs.
2455
2456 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
2457
2458         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
2459         regressions in the thread tests.
2460
2461 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
2464         - fixed implementation of LOCALLOC opcode
2465         - implemented non-un compare for floats
2466         - code cleanup
2467         - implementation of FDIV and CKFINITE opcodes
2468         - fixes for latest mono updates
2469         - additional arch opcodes
2470
2471 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
2472
2473         * Makefile.am: simplify and merge rules for cross-compilation.
2474
2475 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
2476
2477         * local-propagation.c: Actually *apply* the fix for bug 80591...
2478
2479 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
2480
2481         * mini-exceptions.c: backuot part of the last change
2482         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
2483
2484 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
2485         * inssel.brg: Fix bug 59286.
2486
2487
2488 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
2489
2490         * mini-exceptions.c: patch from Zoltan to correctly check for
2491         stack boundaries (using the stack register, not the frame register),
2492         fixes bugs #80724, #79717.
2493
2494 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
2497         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
2498
2499         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
2500         presence of frame pointer elimination.
2501
2502 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
2503         
2504         * mini-x86.h: NetBSD UCONTEX_REG defines.
2505
2506 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * inssel-amd64.brg: Fix amd64 build.
2509
2510 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
2511
2512         * mini.h: remove extern to workaround what looks likes gcc bug 26905
2513         on amd64.
2514
2515 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
2518         ends.
2519
2520         * mini-<ARCH>.c: Use mono_is_regsize_var ().
2521
2522 2007-01-30 Mark Mason <mason@broadcom.com>
2523
2524            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
2525            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
2526            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
2527            beginning support for CEE_JMP [not quite working yet]
2528            * tramp-mips.c: LMF handling now works
2529         
2530 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
2533
2534         * mini.h (NULLIFY_INS): New macro.
2535
2536 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
2537
2538         * mini.c: statistical profiler fix for windows, patch
2539         from Tor Lillqvist (tml@novell.com).
2540
2541 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
2542         * local-propagation.c: Fix bug 80591.
2543
2544 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
2545
2546         * Makefile.am: put back the --export-dynamic option as with
2547         the previous gmodule flags (thanks to Robert Jordan).
2548
2549 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
2552
2553         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
2554         simplify and speed up the local register allocator. Also rename some fields
2555         like iassign->vassign.
2556         
2557         * regalloc.c: Remove some functions which are no longer used since their
2558         inlined version is in mini-codegen.c.
2559         
2560         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
2561
2562         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
2563
2564 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
2567         narrowing. Fixes #80622.
2568
2569         * iltests.il: Add new regresssion test. 
2570
2571 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
2572
2573         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
2574         debug-debugger.c, debug-debugger.h: warning fixes.
2575         * driver.c: updated copyright year and made it fit in one line.
2576
2577 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
2578
2579         * aot-runtime.c: updated to use mono-dl instead of gmodule.
2580
2581 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
2582
2583         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
2584
2585         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
2586
2587         * iltests.il: Add new test for bug #80507.
2588
2589 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
2590
2591         * mini-arm.h: use soft-float also on vfp for now.
2592
2593 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
2594
2595         * mini.c: fix some more soft-float issues.
2596
2597 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
2600
2601 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
2602         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
2603         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
2604         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
2605
2606 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
2607
2608         * mini-arm.c: typo fix.
2609
2610 2007-01-23  Neale Ferguson <neale@sinenomine.net>
2611
2612         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
2613
2614 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
2617         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
2618
2619         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
2620
2621         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
2622
2623         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
2624         
2625         * inssel.brg: Fix a warning.
2626
2627         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
2628
2629         * abcremoval.c ssa.c ssapre.c: Update after this change.
2630         
2631         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
2632
2633         * dominators.c (df_set): Use mono_bitset_union_fast.    
2634
2635 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
2636
2637         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
2638         mini-codegen.c: reduce relocations and memory usage for the cpu
2639         description.
2640
2641 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
2644
2645         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
2646         to reduce their size.
2647
2648 2007-01-19 Mark Mason <mason@broadcom.com>
2649
2650         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
2651         * mini-mips.c: more configuration macros, support long conditional branches, additional
2652         asserts, fix epilog instrumentation.
2653         * mini-mips.h: use standard stack walk
2654         * cpu-mips.md: increase size of div, rem and conditional branches
2655         
2656 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
2657
2658         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
2659         to cpu spec data.
2660
2661 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
2664         (compile_method): Ditto.
2665
2666         * aot-runtime.c (decode_klass_info): Ditto.
2667
2668         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
2669         needed by the code generated by inssel.brg. Also fix a warning.
2670
2671 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
2672
2673         * mini.c: deal with enums that become genericinsts by
2674         being nested in a generic class (bug #79956).
2675
2676 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
2677
2678         * mini.c: match the generic definition to check for
2679         private access with generic types (bug #78431).
2680
2681 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
2682
2683         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
2684         to make life easier for people cross-compiling that insist on not
2685         using scratchbox.
2686
2687 2007-01-17 Mark Mason <mason@broadcom.com>
2688
2689         * inssel-long.brg: patch to deal with mips missing flags
2690         * inssel-long32-mips.brg: implement overflow checks
2691         * insset-mips.brg: implement overflow checks
2692         * mini-mips.h: implement conditional exception handling
2693         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
2694           Remove unused code, minor cleanups.
2695         * exceptions-mips.c: minor cleanups
2696         * mini-ops.h: add mips conditional exception ops
2697         * cpu-mips.md: add mips conditional exception ops
2698
2699         
2700 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
2701
2702         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
2703         to deal with mips missing of flags.
2704
2705 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
2706
2707         * exceptions-ppc.c: execute fault handlers.
2708
2709 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
2710
2711         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
2712
2713 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
2714
2715         * mini.c: handle also floating point values in initialize_array.
2716
2717 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
2718
2719         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
2720         array initialization and make it conditional on the intrins option.
2721
2722 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
2723
2724         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
2725         relocations and put the patch info names close to the enum definition.
2726
2727 2007-01-15 Mark Mason <mason@broadcom.com>
2728
2729         * basic.cs, exceptions.cs: break up large tests to increase debugability.
2730
2731 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
2732
2733         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
2734
2735 2007-01-12  Raja R Harinath  <rharinath@novell.com>
2736
2737         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
2738
2739 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
2740
2741         * Makefile.am: distribute the mips sources.
2742
2743 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
2744
2745         * mini-codegen.h: handle bug #80489 here, by excluding ecx
2746         directly.
2747
2748 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
2749
2750         * cpu-x86.md: back out for now as this triggers other regressions.
2751
2752 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
2753
2754         * cpu-x86.md: force src1 and dest regpair for long shift instructions
2755         to eax:edx, so ecx can't get allocated to them (bug #80489).
2756
2757 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
2758
2759         * mini.c, mini-exceptions.c: enabled running fault handlers
2760         (bug #80469).
2761
2762 2007-01-03  Miguel de Icaza  <miguel@novell.com>
2763
2764         * driver.c: If nothing fail, do not use the string "failed",
2765         because it makes it very annoying to view test result logs on the
2766         web. 
2767
2768 2006-12-30  Miguel de Icaza  <miguel@novell.com>
2769
2770         * debug-debugger.c (mono_debugger_main): Rename "main" to
2771         "main_method" to prevent a warning.
2772
2773         Remove a warning for unused field.
2774
2775 2006-12-28  Martin Baulig  <martin@ximian.com>
2776
2777         * debug-debugger.c
2778         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
2779
2780 2006-12-22  Martin Baulig  <martin@ximian.com>
2781
2782         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
2783         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
2784         seperate `.mdb_debug_info' section, so we can access it from the
2785         debugger even if the binary is stripped.
2786
2787         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
2788         from the `.mdb_debug_info' here to prevent the linker from
2789         removing that section.
2790
2791         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
2792         mdb-debug-info64.s.
2793
2794 2006-12-19  Robert Jordan  <robertj@gmx.net>
2795
2796         * mini-x86: enable the code to return small structures in
2797         registers for FreeBSD as well. Fixes bug #80278.
2798         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
2799
2800 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2801
2802         * mini-x86.c: align the stack when calling the profiler
2803         function instrumenting the prolog (on OSX).
2804
2805 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
2806
2807         * mini.c: emit a break opcode where Debugger.Break () is called.
2808
2809 2006-12-13  Miguel de Icaza  <miguel@novell.com>
2810
2811         * mini.c (mono_method_to_ir): Provide useful information on this
2812         assert, to prevent others from debugging like I did.
2813
2814 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2815
2816         * mini.c: enable code which was incorrectly commented
2817         (bug #80235).
2818
2819 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2820
2821         * mini-x86.c: enable on OSX, too, the code to return small
2822         structures in registers.
2823
2824 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
2825
2826         * mini-x86.c: remove the use of the dynamic code manager here, too.
2827
2828 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
2829
2830         * mini.h, debug-debugger.c, tramp-*.c: fixed 
2831         mono_debugger_create_notification_function() to use
2832         mono_global_codeman_reserve () instead of a dynamic code manager.
2833
2834 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
2835
2836         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
2837         ves_array_element_address() jit icall and use a generated
2838         managed method instead (which is about 4 times faster for a rank 3
2839         array access).
2840
2841 2006-11-29  Mark Mason  <mason@broadcom.com>
2842
2843         * basic-calls.cs: additional tests for passing
2844         structures as function arguments.
2845
2846 2006-11-29  Mark Mason  <mason@broadcom.com>
2847
2848         * mini-mips.h: disable custom exception handling
2849         * mini-mips.c: throw/rethrow should use jalr to call
2850         exception stubs.  Fixed bug with passing structures
2851         by value. More support for tracing floating point
2852         functions.
2853
2854 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2855
2856         * mini.c: fixed typo in the soft-float ldind.r4 handling
2857         (bug #80086).
2858
2859 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2860
2861         * mini.c, mini.h, driver.c: added --runtime command line
2862         option to select a different runtime than the autodetected one.
2863         * jit.h: added API for embedders to initialize with a specific
2864         runtime version.
2865
2866 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
2867
2868         * mini.c: handle also boxing of r4 values (bug #80024).
2869
2870 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
2871
2872         * mini-ppc.c: force indirect calls until we reserve
2873         enough address space for all the generated code.
2874
2875 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
2876
2877         * exceptions-arm.c: workaround bugs in the libc definition
2878         of struct ucontext.
2879
2880 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
2881
2882         * inssel.brg: fixes from me and Mark Mason.
2883
2884 2006-11-23  Dick Porter  <dick@ximian.com>
2885
2886         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
2887         semaphore display now we've fixed the initial value
2888
2889 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2890
2891         * inssel.brg: partially revert the last change to fix the build.
2892
2893 2006-11-21  Mark Mason  <mason@broadcom.com>
2894
2895         * inssel.brg: Add and use compare-and-branch macros to support
2896         architectures that do not have condition code registers (ie. MIPS).
2897         * *-mips.{c,brg,md}: Fix copyright statements
2898
2899 2006-11-20  Mark Mason  <mason@broadcom.com>
2900
2901         * Makefile.am: remove mini-codegen.c from list of MIPS sources
2902         * mini.c: Allow GET_CONTEXT to be specified by the arch port
2903         * mini.h: Added declaration for mono_print_ins()
2904         * mini-codegen.c: added ins_spec initializer for MIPS
2905         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
2906         vreg to be virtual and hreg to be non-virtual.
2907         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
2908         is not yet working/implemented correctly.
2909         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
2910         non-static, fixup calls to print_ins() from other parts in the file.
2911
2912 2006-11-20  Mark Mason  <mason@broadcom.com>
2913
2914         * basic-calls.cs: added tests for passing structures as arguments
2915         to calls.
2916
2917 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
2918
2919         * inssel-long32.brg: optimize signed division by power of two.
2920
2921 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
2922
2923         * mini-arm.c: added support for interworking with thumb code
2924         (mono must be still be built using the ARM instruction encoding).
2925
2926 2006-11-19  Miguel de Icaza  <miguel@novell.com>
2927
2928         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
2929         verifier has different rules for it.   Fixes a few verifier issues
2930         in the test suite.
2931
2932         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
2933         at the end, so people know what happened.
2934
2935 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2936
2937         * brach-opts.c: in optimize_exception_target() make sure we
2938         are in a catch clause (fixes bug #79871).
2939
2940 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2941
2942         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
2943         more soft-float support fixes.
2944
2945 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
2946
2947         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
2948         that are passed half on the stack and half in registers.
2949
2950 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
2951
2952         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
2953         more mips integration work from Mark E Mason 
2954         <mark.e.mason@broadcom.com>.
2955
2956 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2957
2958         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
2959         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
2960         tramp-mips.c: added sources for the mips port, not
2961         integrated in the build yet. Contributed by
2962         Mark E Mason <mark.e.mason@broadcom.com>.
2963
2964 2006-11-14  Neale Ferguson <neale@sinenomine.net>
2965
2966         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
2967
2968 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2969
2970         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
2971         put the soft-float rules in its own file since it seems to
2972         break s390 compilation.
2973
2974 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2975
2976         * mini-arm.c: fixed wrnings.
2977
2978 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
2979
2980         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
2981         inssel-arm.brg: ARM support for soft-float.
2982
2983 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2984
2985         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
2986         loads and stores of 32 bit fp values.
2987
2988 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
2991
2992         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
2993         works. Fixes #79852 and #79463.
2994
2995 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2996
2997         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
2998         more soft-float support WIP and fixes.
2999
3000 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
3001
3002         * mini-arm.c: some VFP updates.
3003
3004 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
3005
3006         * mini-exceptions.c: 0 is a valid local var offset in some
3007         architectures, don't assert (bug #78508).
3008
3009 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
3010
3011         * exceptions-arm.c: fixed off by one error in stack walk code.
3012
3013 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
3014
3015         * mini.h, mini.c: more precise tracking of type load exceptions.
3016
3017 2006-11-03  Robert Jordan  <robertj@gmx.net>
3018
3019         * Makefile.am: [WIN32] Add monow.exe target.
3020         * driver.c: [WIN32] Don't detach the console when debugging.
3021         Fixes bug #79797.
3022         
3023 2006-10-30  Miguel de Icaza  <miguel@novell.com>
3024
3025         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
3026
3027 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * aot-compiler.c (emit_method_info): Add a case missed earlier.
3030
3031         * driver.c (mini_regression): Fix --regression with AOT.
3032
3033         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
3034
3035 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
3038
3039         * mini-sparc.h: Don't use sigaction on sparc/linux.
3040
3041         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
3042
3043         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
3044
3045         * mini-exceptions.c: Add proper include files for getpid ().
3046
3047 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
3050         address instead of a MonoJitInfo* to avoid decoding the exception info for the
3051         method.
3052
3053         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
3054         name cache to reduce its size.
3055
3056         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
3057
3058 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-x86.c: Save/restore the current LMF structure more efficiently using
3061         the mono_lmf TLS variable.
3062
3063         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
3064         trampoline lmf frames.  
3065
3066         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
3067
3068 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
3069
3070         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
3071         the mono_lmf TLS variable.
3072
3073         * mini-exceptions.c: Access the LMF structure through accessors.
3074
3075         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
3076         variable instead of in jit_tls->lmf.
3077
3078         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
3079         
3080         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
3081         trampoline lmf frames.
3082
3083         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
3084
3085 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
3086
3087        * mini.c trace.c mini-x86.c: Revert these too.
3088         
3089        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
3090        signature change.
3091
3092 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
3093
3094         * genmdesc.c: removed now dead code.
3095
3096 2006-10-09  Robert Jordan <robertj@gmx.net>
3097
3098         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
3099
3100 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
3101
3102         * mini.h: do not leave gaps in the opcode values.
3103
3104 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
3105
3106         * jit-icalls.h: flag functions as internal here, too.
3107
3108 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
3109
3110         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
3111         functions with the internal attribute.
3112
3113 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
3114
3115         * aot-compiler.c: fclose the file descriptor in the profile read loop.
3116
3117 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
3118
3119         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
3120         for soft-float.
3121
3122 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
3125         tail calls as on other platforms.
3126
3127         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
3128
3129         * iltests.il: Add a few tailcall tests.
3130
3131 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
3132
3133         * driver.c: fix loop for old compilers (bug #79521).
3134
3135 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
3138
3139         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
3140
3141         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
3142         metadata without any code.
3143
3144         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
3145         more precise debugging information using gdb.
3146
3147 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * inssel-ia64.brg: Make the helper methods static.
3150
3151 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
3152
3153         * inssel-x86.brg: make the helper methods static.
3154
3155 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
3156
3157         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
3158
3159 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
3160
3161         * mini.c: updates for monoburg changes.
3162         * inssel.brg: make a few helper functions static as they should.
3163
3164 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
3165
3166         * Makefile.am: Move mini-codegen.c to common_sources.
3167
3168 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
3169
3170         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
3171         instructions.
3172         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
3173         mini-ppc.h: port to use the common local register allocator.
3174
3175 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
3176
3177         * mini.h: Remove the comment too then.
3178
3179 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
3180
3181         * mini.h: put back backend.data which is to be used shortly and
3182         doesn't increase the size of MonoInst. If any 64 bit arch aligned
3183         pointers on 4 byte boundaries it'd have much bigger issues running
3184         and you can ifdef it out anyway.
3185
3186 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
3187
3188         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
3189         MonoInst size by 4 bytes on 64 bit machines.
3190
3191 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
3192
3193         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
3194         replacement with more meaningful field names. Arch maintainers, please
3195         check the assigned names are good enough for your arch.
3196
3197 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
3200         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
3201
3202 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
3203
3204         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
3205         relocations and memory requirements, put the optimization flags
3206         definitions in their own file.
3207
3208 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
3211
3212         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
3213
3214 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
3215
3216         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
3217
3218 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
3219
3220         * inssel.brg: use the correct function to get the size of an item
3221         in an array, given an element class.
3222         * aot-compiler.c: do not access class->class_size directly.
3223
3224 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
3225
3226         * mini.h, debug-mini.c: added a debugging function to print
3227         info about local variables and arguments in a jitted method.
3228
3229 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
3232
3233         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
3234
3235 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
3238         inner and outer loops when passing vtypes.
3239
3240 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
3241
3242         * mini-ppc.c: take into account the cpu errata for cache flushing
3243         which caused some random errors (bug #79381).
3244
3245 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
3246
3247         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
3248         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
3249
3250 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
3253         loaded.
3254
3255         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
3256         freebsd ports tree.
3257
3258         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
3259         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
3260
3261         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
3262         displacement.
3263
3264 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
3267
3268 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
3271         macro does not have to be changed during debugging.
3272
3273         * 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>.
3274
3275         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
3276
3277         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
3278         
3279         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
3280         MONO_ARCH_NO_EMULATE_MUL is defined.
3281
3282         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
3283
3284         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
3285
3286         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
3287
3288         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
3289         
3290 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
3291
3292         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
3293         stuff to mini-exceptions.c where it is used.
3294
3295         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
3296         setup code, the real one is in mini-exceptions.c.
3297
3298         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
3299         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
3300         some changes from the freebsd ports tree.
3301
3302         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
3303         constants.
3304         
3305         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
3306
3307 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
3308
3309         * mini.c: on Linux, check for /proc to be mounted
3310         (bug# 79351, novell bug#201204).
3311
3312 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
3313
3314         * mini.c: handle cases where pthread_attr_getstack() behaves
3315         incorrectly (bug #78096).
3316
3317 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
3318
3319         * mini-arm.c: support larger stack frames (bug #79272).
3320
3321 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
3324
3325         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
3326         tokens.
3327
3328         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
3329         mono_class_from_name () to find a class from its name.
3330
3331         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
3332
3333 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
3334
3335         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
3336
3337 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
3338
3339         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
3340
3341 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
3344         callinfo->trampoline.
3345
3346         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
3347         fixes #79271.
3348         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
3349         future.
3350
3351 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
3352
3353         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
3354
3355 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
3358         stats.method_trampolines, it is already done by the generic trampoline code.
3359
3360         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
3361         
3362 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
3365
3366         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
3367
3368         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
3369
3370         * mini.c (print_jit_stats): Print mscorlib mempool size too.
3371         
3372         * mini.c (print_jit_stats): Print new stats.
3373
3374         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
3375
3376 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
3379         Address on two dimensional arrays. Fixes #78729.
3380
3381         * mini.h (MonoCompile): Add a 'skip_visibility' field.
3382
3383         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
3384         a method.
3385
3386         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
3387
3388         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
3389         #79130.
3390         
3391         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
3392         a race condition.
3393         (mini_get_ldelema_ins): Ditto.
3394
3395 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
3398         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
3399         Fixes #79213.
3400
3401 2006-08-29 Neale Ferguson <neale@sinenomine.net>
3402
3403         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
3404         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
3405
3406         * exceptions-s390x.c: Cosmetic change.
3407
3408         * tramp-s390.c: Fix warning.
3409
3410         * cpu-s390.md: Correct length of mul_imm.
3411
3412 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
3413
3414         * aot-compiler.c: added binary writer with ELF backend
3415         implementation (only on Linux/x86 for now).
3416
3417 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * Makefile.am: Don't run net 2.0 AOT tests.
3420
3421         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
3422         (mono_compile_assembly): Skip net 2.0 assemblies as well.
3423
3424         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
3425
3426 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
3427
3428         * aot-compiler.c: simplified and refactored the asm-writing code
3429         to allow different backends.
3430
3431 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3434
3435         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
3436         little. Share patches of type TYPE_FROM_HANDLE as well.
3437
3438         * mini.c (mono_patch_info_equal): New helper function.
3439         (mono_patch_info_hash): Ditto.
3440
3441         * aot-compiler.c (emit_method_code): Fix s390 build.
3442
3443         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
3444         is not handled because it is stored as a flag and not as a type ctor. Fixes
3445         #79016.
3446
3447 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * aot-compiler.c: Fix computation of GOT slot statistics.
3450         
3451         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
3452         Also remove support for not PIC AOT.
3453
3454         * mini.h: Bump AOT file format version.
3455
3456         * objects.cs: Add a test for #78990.
3457
3458         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
3459         (peter.dettman@iinet.net.au). Fixes #79087.
3460
3461         * basic-long.cs: Add a test for the above.
3462
3463 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
3466         
3467         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
3468         code somewhat.
3469
3470 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
3473         exceptions.
3474
3475 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
3476
3477         * mini.c: Don't verify COM proxy invoke calls
3478         
3479
3480 2006-08-10  Dick Porter  <dick@ximian.com>
3481
3482         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
3483         which process is holding semaphores locked.
3484
3485 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * mini-ia64.c mini-amd64.c: Fix #79027.
3488
3489         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
3490
3491         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
3492
3493         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
3494         implicit arguments in a vararg call. Fixes #79027.
3495
3496 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
3497
3498         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
3499         (mono_get_array_new_va_signature): Ditto.
3500
3501 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * aot-runtime.c: Call init_plt lazily.
3504
3505         * inssel-long.brg: Fix unsigned long->int conversion.
3506
3507         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
3508
3509         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
3510         that most data is now in the .rss/.data section.
3511
3512 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
3515
3516         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
3517
3518         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
3519
3520         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
3521
3522         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
3523         virtual call. Fixes #79010.
3524
3525         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
3526         and use the result as the this argument in the real call.
3527
3528         * generics.2.cs: Add a new test for #79010.
3529         
3530 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * mini-x86.c: Fix a warning.
3533
3534         * aot-compiler.c: Add a bunch of statistics.
3535
3536         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
3537
3538 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
3541
3542 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
3543
3544         * 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>.
3545
3546 2006-07-13  Miguel de Icaza  <miguel@novell.com>
3547
3548         * mini.c (mono_method_to_ir): Obtain the original method in the
3549         CIL stream and use this to perform validation.
3550
3551         Fixed: #78816
3552
3553 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
3554
3555         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
3556         (mono_arch_call_opcode): Ditto.
3557
3558         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
3559         #78826.
3560
3561         * mini.c (mono_patch_info_dup_mp): New helper function.
3562         
3563         * aot-compiler.c (compile_method): Fix some of the memory allocated during
3564         compilation. Fixes #78827.
3565
3566 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
3567
3568         * declsec.c: Use original security informations for
3569           MONO_WRAPPER_MANAGED_TO_MANAGED.
3570
3571 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
3572
3573         * mini.c: Allow Com Interop methods/classes and
3574         don't verify COM wrapper calls
3575         
3576
3577 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * inssel-long32.brg: Fix long->i4 checked conversion.
3580
3581         * exceptions.cs: Add a test for the above.
3582
3583 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
3584
3585         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
3586
3587         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
3588         leaks.
3589
3590         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
3591         #78775.
3592
3593 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
3594
3595         * mini.c: Fix solaris/x86 exception handling.
3596
3597         * Makefile.am: Get rid of $(ICU_LIBS).
3598
3599 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
3602         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
3603         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
3604
3605         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
3606
3607         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
3608         this function causes a SIGSEGV.
3609
3610 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * mini.c: Remove unused solaris/x86 includes.
3613
3614 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
3617
3618 2006-06-20  Jb Evain  <jbevain@gmail.com>
3619
3620         * cpu-g4.md: fix max length of start_handler instruction.
3621
3622 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
3623         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
3624
3625 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
3626         * ssa.c: Fixed bug 78653 for SSA based deadce.
3627         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
3628         MonoInst.flags, used in SSA based deadce.
3629         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
3630         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
3631
3632 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
3633
3634         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
3635         it can end up using non executable memory on ppc64 systems
3636         running ppc32 userspace (fix from Johannes Berg).
3637
3638 2006-06-14  Dick Porter  <dick@ximian.com>
3639
3640         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
3641         4.1.1
3642
3643 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
3644         * mini.c: Made so that inline is locally disabled if it would
3645         trigger a .cctor, because too many apps depend on this behavior
3646         (which seems to be also the one of the MS CLR).
3647
3648 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
3651         No idea why this worked before.
3652
3653         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
3654         which branch to outer exception clauses since they could skip the
3655         inner finally clauses. Fixes #78633.
3656
3657         * exceptions.cs: Add a test for the above.
3658
3659         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
3660         Fixes #78629.
3661
3662         * iltests.il: Add a test for the above.
3663
3664 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
3667         after the end of a try bblock, to prevent asserts in mini_method_compile ().
3668
3669         * iltests.il: Add a test for the above.
3670
3671 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
3674         
3675         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
3676         methods as instrinsics.
3677
3678 2006-06-09  Wade Berrier <wberrier@novell.com>
3679
3680         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
3681         (simple-cee-ops.h ssapre-mini-ops.h)
3682
3683 2006-06-09  Neale Ferguson <neale@sinenomine.net>
3684
3685         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
3686         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
3687         instruction).
3688         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
3689         * cpu-s390x.md: Fix max. length values for a couple of instructions.
3690
3691 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
3692
3693         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
3694
3695 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
3696
3697         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
3698         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
3699         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
3700         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
3701         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
3702         of opcodes, so that bug 78549 should not happen again.
3703         * ssapre.c: Updated to use the renamed files.
3704
3705 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
3708         in OP_ATOMIC_EXCHANGE_I4.
3709
3710 2006-06-07  Wade Berrier <wberrier@novell.com>
3711
3712         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
3713         in mono_debugger_create_notification_function)
3714
3715 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
3716
3717         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
3718         
3719         * mini.c (type_from_stack_type): Disable some changes which do not
3720         seem to work.
3721
3722         * driver.c: Reenable opts.
3723
3724         * mini.h (MonoStackSlot): New structure to keep track of the verification state
3725         of the evaluation stack.
3726         
3727         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
3728         evaluation stack trace at entry to the bblock.
3729
3730         * mini.c (merge_stacks): New function to perform verification of stack merges.
3731         Turned off by default.
3732
3733         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
3734         STACK_MP.
3735         
3736 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
3737
3738         * local-propagation.c: Fixed bug 78549.
3739
3740 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
3741
3742         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
3743
3744 2006-06-02  Miguel de Icaza  <miguel@novell.com>
3745
3746         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
3747         tramp-arm.c, tramp-ia64.c
3748         (mono_debugger_create_notification_function): Update signature to
3749         new signature and use new protocol for creating the notification
3750         function.  
3751
3752         Should fix the build.
3753
3754 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
3755
3756         * exceptions-ppc.c (mono_jit_walk_stack)
3757         (ves_icall_get_frame_info): Fix the build
3758
3759 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
3762
3763 2006-05-31  Raja R Harinath  <rharinath@novell.com>
3764
3765         * il2tests.2.il: New file for generics CIL tests.  Add test for
3766         #78019.
3767         * Makefile.am: Update.
3768
3769         Fix #78019
3770         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
3771         to nullable types.
3772
3773 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
3774
3775         * aliasing.c: Fixed bug 78311.
3776
3777 2006-05-29  Martin Baulig  <martin@ximian.com>
3778
3779         * mini-exceptions.c (mono_find_jit_info): When computing the
3780         native offset, check whether we're actually inside the method's
3781         code; call mono_debug_print_stack_frame() to format the frame.
3782         (ves_icall_System_Exception_get_trace): Call
3783         mono_debug_print_stack_frame() to format the stack frame.
3784         (ves_icall_get_trace): Update to the new debugging API.
3785         (mono_jit_walk_stack_from_ctx): Likewise.
3786         (ves_icall_get_frame_info): Likewise.
3787
3788         * mini.c (get_method_from_ip): Use the new debugging API.
3789         (mono_print_method_from_ip): Likewise.
3790
3791         * exceptions-ppc.c
3792         (mono_jit_walk_stack): Use the new debugging API.
3793         (ves_icall_get_frame_info): Likewise.   
3794
3795 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
3798
3799 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
3800
3801         * mini.c: Added "limitator" to inline for debugging.
3802
3803 2006-05-24  Martin Baulig  <martin@ximian.com>
3804
3805         * debug-debugger.c (mono_debugger_init): Create a private,
3806         malloc()-based code manager for the notification function and
3807         intentionally leak it on exit.  This fixes the crash-on-exit race
3808         condition.
3809
3810         * tramp-amd64.c
3811         (mono_debugger_create_notification_function): Added
3812         `MonoCodeManager *' argument.
3813
3814         * tramp-x86.c
3815         (mono_debugger_create_notification_function): Added
3816         `MonoCodeManager *' argument.
3817
3818 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
3819
3820         * aliasing.c: Fixed 64 bit issue.
3821         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3822         default since all known bugs are fixed (one more time!).
3823
3824 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
3825
3826         * mini.c: write barrier support.
3827
3828 2006-05-23  Martin Baulig  <martin@ximian.com>
3829
3830         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
3831         check at the top of the file.
3832
3833 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
3834
3835         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
3836         reverting changes without reason and without changelog entries.
3837
3838 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
3841         to a few opcodes. Fixes #78439.
3842
3843         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
3844         consistency with other archs.
3845
3846         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
3847
3848 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
3849
3850         * debug-debugger.c: fix the build.
3851
3852 2006-05-17  Martin Baulig  <martin@ximian.com>
3853
3854         * debug-debugger.c
3855         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
3856         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
3857         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
3858         (debugger_attach): Call GC_mono_debugger_add_all_threads().
3859
3860 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
3861
3862         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
3863
3864 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
3865
3866         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
3867         MONO_TYPE_GENERICINST.
3868         
3869         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
3870         MONO_TYPE_GENERICINST.
3871
3872 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
3875         #78325.
3876
3877 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
3878
3879         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
3880         mempool.
3881         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
3882
3883 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
3884
3885         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
3886         mono_trace_cleanup ().
3887
3888         * iltests.il: Fix problem with the newly added test.
3889
3890         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
3891         due to register constraints, free up the previous hreg. Fixes #78314.
3892
3893         * iltests.il: Add new test for #78314.  
3894
3895         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
3896         Interlocked.Add. Fixes #78312.
3897
3898         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
3899         
3900 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * inssel.brg (mini_emit_virtual_call): Fix a warning.
3903
3904 2006-05-05  Martin Baulig  <martin@ximian.com>
3905
3906         * debug-mini.c (mono_debug_open_block): New method.
3907
3908         * mini-amd64.c
3909         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3910         the beginning of each basic block.
3911
3912         * mini-x86.c
3913         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3914         the beginning of each basic block.
3915
3916 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3917
3918         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3919         default until I understand why they break the build on amd64.
3920
3921 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
3922
3923         * mini.c (mini_cleanup): Call mono_cleanup ().
3924
3925         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
3926         errors.
3927
3928 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3929
3930         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
3931         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3932         default since all known bugs are fixed, and I cannot reproduce bug
3933         77944... I'm asking Matt Hargett to test again after this commit.
3934
3935 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
3936
3937         * mini-codegen.c: Fixed typo that thrashed inline.
3938
3939 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
3940
3941         * dominators.c (compute_dominators): Avoid using a worklist since
3942         it is not correct in some cases. Instead, iterate over all bblocks as
3943         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
3944
3945 2006-04-28  Miguel de Icaza  <miguel@novell.com>
3946
3947         * mini.c (mono_jit_compile_method_inner): Use
3948         mono_prepare_exception_from_error that resets the value
3949         internally.
3950
3951 2006-04-27  Miguel de Icaza  <miguel@novell.com>
3952
3953         * mini.c: Move the mini_loader_error_to_exception to metadata. 
3954         
3955 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3956
3957         * aliasing.c: Fixed bug 78210.
3958
3959 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3960
3961         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3962         default until all their problems (or the ones they trigger) are fixed.
3963
3964 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
3965
3966         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
3967         
3968         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
3969         as loaded only after resolving patches since that could invoke the same method.
3970
3971         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
3972
3973         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
3974         functions.
3975
3976         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
3977         AOT loader.
3978
3979         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
3980         stack.
3981
3982         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
3983         made from AOT code through the PLT table.
3984
3985         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
3986         holding the plt offset when a call is made to the aot plt trampoline.
3987         
3988 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
3991         amd64 AOT support.
3992
3993         * Makefile.am (common_sources): Fix build breakage.
3994
3995         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
3996         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
3997         intra-assembly calls if possible.
3998         
3999         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
4000
4001         * mini-trampolines.c: Handle PLT entries.
4002
4003         * mini.c: Avoid creating a GOT var for calls.
4004
4005         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
4006         from mscorlib code.
4007
4008         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
4009         from mscorlib code.
4010
4011         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
4012         AOT code.       
4013
4014         * mini.h: Bump AOT file format version.
4015         
4016         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
4017         covers more cases.
4018
4019 2006-04-25  Martin Baulig  <martin@ximian.com>
4020
4021         * driver.c: Disable copyprop, consprop and inline when running
4022         inside the debugger.
4023
4024 2006-04-25  Martin Baulig  <martin@ximian.com>
4025
4026         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
4027         with `get_current_thread' and added `detach'.
4028         (MonoDebuggerMetadataInfo): Added `thread_size',
4029         `thread_tid_offset', `thread_stack_ptr_offset' and
4030         `thread_end_stack_offset'.
4031
4032 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
4035         aot-runtime.c.
4036
4037         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
4038         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
4039
4040         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
4041
4042         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
4043
4044         * aot.c: Add support for ADJUSTED_IID.  
4045
4046 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
4047
4048         * aot.c (emit_method_order): Don't align method_order_end.
4049
4050         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
4051         the interface ID changes.
4052
4053 2006-04-21  Dick Porter  <dick@ximian.com>
4054
4055         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
4056         cleaning up a thread.  Fixes the new part of bug 77470.
4057
4058 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
4059
4060         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
4061         to managed wrapper.
4062                      
4063 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
4066         
4067         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
4068         SIGSEGV. Fixes #78072.
4069
4070         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
4071         unregister our SIGABRT handler.
4072
4073 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
4074
4075         * mini.c: Disabled inline where it can alter the call stack in a
4076         way visible from managed code.
4077         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
4078         default.
4079
4080 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
4083         on other platforms. Fixes #78089.
4084
4085 2006-04-13  Martin Baulig  <martin@ximian.com>
4086
4087         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
4088         determine whether we're inside the debugger.
4089
4090         * debug-debugger.h
4091         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
4092
4093 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
4094
4095         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
4096         handler clauses. Fixes #78024.
4097
4098         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
4099         in the CALL_MEMBASE opcodes. Fixes #78088.
4100         (mono_arch_get_vcall_slot_addr): Ditto.
4101
4102 2006-04-10  Martin Baulig  <martin@ximian.com>
4103
4104         * debug-debugger.c: The thread handling code has now been moved
4105         into ../metadata/threads.c.
4106
4107 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
4108
4109         * driver.c (mono_main): Fix --with-gc=none build.
4110
4111         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
4112         (mono_spillvar_offset_float): Ditto.
4113         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
4114         hreg, not when its !global, since on ia64, there is a third category: stacked
4115         registers.      
4116
4117 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
4118
4119         * mini.c: set MonoInst->klass for load field address and a few other
4120         places.
4121
4122 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
4125
4126 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
4129         the branch opt changes.
4130
4131 2006-04-06  Dick Porter  <dick@ximian.com>
4132
4133         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
4134         
4135         * wapihandles.c (mini_wapi_seminfo): 
4136         * driver.c (mono_main): Add semaphore info option
4137
4138 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
4141         branch optimization changes. Fixes #78009.
4142
4143 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
4144
4145         * mini.c: ignore accessibility of methods in managed->native wrappers.
4146
4147 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
4150         
4151         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
4152
4153 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini.c: Modify the branch optimizations to preserve the invariant that
4156         the entries inside the in_bb and out_bb arrays are unique.
4157         (mono_unlink_bblock): Avoid creation of new arrays.
4158
4159 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
4160
4161         * mini.c (mono_unlink_bblock): Fix regression caused by previous
4162         change (#77992).
4163
4164 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
4165
4166         * mini.c (optimize_branches): Remove the "optimizations" in
4167         the cbranch1/cbranch2 -> branch cases which were causing several
4168         problems in the past. Fixes #77986.
4169
4170 2006-03-31  Chris Toshok  <toshok@ximian.com>
4171
4172         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
4173         default optimizations :(
4174
4175 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
4178         branch.
4179
4180 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
4181
4182         * local-propagation.c: Added comments to structs and removed
4183         "Mono" prefixes from local tree mover types.
4184
4185 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * Makefile.am (arch_sources): Define this for each architecture so 
4188         libmono_la_SOURCES is defined in one place.
4189
4190 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
4191
4192         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
4193         from handles/.
4194
4195 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
4196
4197         * driver.c: print the GC name supplied by configure.
4198
4199 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
4200
4201         * local-propagation.c: Added tree mover, and moved here all the
4202         local propagation code from mini.c
4203         * mini.c: Added support for treeprop, and moved all the local
4204         propagation code to local-propagation.c
4205         * mini.h: Added support for treeprop
4206         * driver.c: Added support for treeprop, enabled consprop, copyprop,
4207         treeprop, inline and deadce by default
4208         * Makefile.am: Added local-propagation.c
4209
4210 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
4211
4212         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
4213
4214 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
4215
4216         * debug-debugger.c: make it compile without the Boehm GC.
4217
4218 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
4219
4220         * mini.c: fixed issue with mismatch when an icall is registered
4221         with multiple names but same address.
4222
4223 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
4224
4225         * declsec.c, mini-exceptions.c: use write barrier to set reference
4226         fields of managed objects.
4227
4228 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
4231         (can_access_internals): Fix a warning.
4232
4233         * mini.c (print_method_from_ip): Rename this to 
4234         mono_print_method_from_ip so it gets exported.
4235
4236         * trace.c: Deal with strings inside StringBuilder's containing garbage
4237         and fix memory leaks. Fixes #77848.
4238
4239 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
4242         fixes #77787.
4243
4244 2006-03-16 Neale Ferguson <neale@sinenomine.net>
4245         
4246         * mini-s390.c: Remove OP_X86_TEST_NULL.
4247
4248 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
4249
4250         * mini.c: use the correct GetHashCode() for the moving collector.
4251
4252 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
4253
4254         * liveness.c: Regalloc spill cost tuning.
4255
4256 2006-03-15 Neale Ferguson <neale@sinenomine.net>
4257         
4258         * mini-s390x.h: Correct S390_LONG macro.
4259
4260         * mini-s390x.c: Cleanup unused code.
4261
4262 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * jit-icalls.h: New file.
4265
4266         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
4267         icalls and include that instead of including jit-icalls.c.
4268
4269         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
4270         OP_X86 opcodes.
4271
4272 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
4273
4274         * mini.c: when checking for member accessibility, also check for
4275         friend assemblies and for explicit interface implementations.
4276
4277 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
4280
4281         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
4282
4283         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
4284         common cases are done first.    
4285
4286         * mini-ops.h: Only define platform specific opcodes on the given platform.
4287
4288         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
4289         branch.
4290         
4291 2006-03-14  Martin Baulig  <martin@ximian.com>
4292
4293         Revert Paolo's change from r57348:
4294
4295         * mini.h: don't use gboolean for bitfields.
4296         * mini.c: verifier changes for fields and methods accessibility.
4297
4298 2006-03-13  Neale Ferguson <neale@sinenomine.net>
4299
4300         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
4301
4302         * mini-s390x.c: Fix conv_r_un.
4303
4304         * cpu-s390, cpu-s390x.md: Fix lengths.
4305
4306 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
4307
4308         * mini.c: nested types have access to all the nesting
4309         levels, not just the enclosing types.
4310
4311 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
4312
4313         * mini.c: added a few more verification checks.
4314
4315 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * liveness.c: Merge optimizations from the linear-il branch.
4318
4319 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * mini-ia64.c (emit_call): Add a comment.
4322
4323         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
4324
4325         * tramp-ia64.c: Fix some warnings.
4326
4327 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
4328
4329         * mini.h: don't use gboolean for bitfields.
4330         * mini.c: verifier changes for fields and methods accessibility.
4331
4332 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
4333
4334         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
4335         lazy icall wrapper changes.
4336
4337         * dominators.c: Replace all the dominator algorithms with faster
4338         ones from the linear-il branch.
4339
4340         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
4341         the mempool.
4342
4343         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
4344         common cases are done first.
4345
4346         * mini-amd64.c: Fix some warnings.
4347
4348         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
4349         from the mempool.
4350
4351         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
4352         added code.
4353
4354         * mini.h: Add a missing prototype.
4355
4356 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * mini.c: Compile icall wrappers lazily.
4359
4360         * mini-codegen.c: Use printf instead of g_print since its much faster.
4361
4362         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
4363         function.
4364
4365         * mini.c (optimize_branches): Cache the negative result from 
4366         remove_block_if_useless ().
4367
4368         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
4369         Also fix some bblock linking issues.
4370
4371         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
4372         assembly files.
4373
4374         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
4375
4376         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
4377         accessed fields first, for better cache behavior.
4378         
4379 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
4380
4381         * mini.c: speedup IList<T> array accesses.
4382
4383 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
4386         inline_costs counter. Fixes #77190.
4387
4388 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
4391         trace messages. Fixes #77706.
4392
4393 2006-03-04  Martin Baulig  <martin@ximian.com>
4394
4395         * tramp-amd64.c, tramp-x86.c
4396         (mono_debugger_create_notification_function): Use
4397         mono_global_codeman_reserve() to allocate a buffer at runtime and
4398         return it.
4399
4400         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
4401
4402         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
4403         notification function at runtime and then call `initialize' in the
4404         `MONO_DEBUGGER__debugger_info' vtable.
4405
4406 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * iltests.il: Fix a visibility problem.
4409
4410 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
4411
4412         * driver.c, mini.c: add hooks for the counters API.
4413
4414 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
4415
4416         * driver.c: show disabled options.
4417
4418 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
4419
4420         * linear-scan.c: always use cost-driven selection.
4421
4422 2006-02-28  Raja R Harinath  <rharinath@novell.com>
4423
4424         * jit-icalls.c (helper_compile_generic_method): Revert change from
4425         2006-02-24.
4426
4427 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
4428
4429         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
4430
4431 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
4432
4433         * inssel.brg: style fixes, mostly to force the updated monoburg
4434         to run for people using svn.
4435
4436 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
4437
4438         * mini.c: match monoburg changes.
4439
4440 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
4441
4442         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
4443         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
4444         declaration in the header file.
4445
4446 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
4447
4448         * helpers.c: reduce relocations and mem usage.
4449
4450 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
4451
4452         * mini.h, mini-codegen.c: disable logging features if
4453         requested by configure.
4454
4455 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
4456
4457         * mini.c: tiny verifier changes.
4458
4459 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
4460
4461         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
4462         cpu-pentium.md: stack alignment changes for osx/x86,
4463         partially from Geoff Norton <gnorton@customerdna.com>.
4464
4465 2006-02-24  Raja R Harinath  <harinath@gmail.com>
4466
4467         * jit-icalls.c (helper_compile_generic_method): Update to changes
4468         in metadata/class.c.
4469
4470 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
4471         
4472         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
4473         
4474         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
4475         interface calls with large offsets.
4476
4477 2006-02-23  Raja R Harinath  <rharinath@novell.com>
4478
4479         * jit-icalls.c (helper_compile_generic_method): Document the
4480         special-case we depend on so that we can inflate the method twice
4481         with the same context with no bad side-effects.
4482
4483 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
4484
4485         * mini-x86.c, mini-amd64.c: fix for case when xen support
4486         is disabled.
4487
4488 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
4489
4490         * mini-x86.c, mini-amd64.c: generate code to access tls items
4491         in a faster way for Xen systems.
4492
4493 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
4494
4495         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
4496         updates and compilation fixes for the OSX/x86 port, mostly from
4497         Geoff Norton <gnorton@customerdna.com>.
4498
4499 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
4500
4501         * inssel.brg: faster interface call implementation
4502         to sync with the interface_offsets MonoVTable changes.
4503
4504 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
4505
4506         * mini.c: more verification checks.
4507
4508 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
4509
4510         * mini.c: added a few more verification checks.
4511
4512 2006-02-17      Neale Ferguson <neale@sinenomine.net>
4513
4514         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
4515         facility on the processor and use it if available.
4516
4517 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
4518
4519         * driver.c, aot.c, mini.c: throw exception if the IL code is
4520         invalid or unverifiable.
4521
4522 2006-02-17  Raja R Harinath  <rharinath@novell.com>
4523
4524         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
4525         m.StructField.
4526
4527 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
4530
4531 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
4532
4533         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
4534         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
4535         handling of instantiated generic valuetypes.
4536
4537 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
4540         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
4541         instead.
4542
4543         * generics.2.cs: Revert the nullable reftypes tests.
4544
4545 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
4548         using __builtin_frame_address (1) as it doesn't work in the presence
4549         of optimizations. Hopefully fixes #77273.
4550
4551         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
4552         -> generics.cs change as it doesn't work with some automake versions.
4553
4554 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
4555
4556         * mini.c: handle systems that sue a different way to
4557         retrieve the stack address of the current thread.
4558
4559 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
4560
4561         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
4562         it specially in the makefile.
4563
4564         * generics.2.cs: Add tests for nullable reference types.
4565
4566 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
4567
4568         * mini.c: always handle the case when mono_jit_init()
4569         is called in a thread different from the main thread,
4570         confusing libgc (bug #77309).
4571
4572 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
4573
4574         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
4575
4576 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
4577
4578         * mini.c: change optimize_branches () to use a single loop
4579         and introduce a new optimization to simplify some range checks.
4580
4581 2006-02-03  Martin Baulig  <martin@ximian.com>
4582
4583         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
4584         and merged with debugger_thread_manager_add_thread().
4585         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
4586         inform the debugger about the main thread.
4587
4588 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
4589
4590         * basic.cs: Add test for div.un/rem.un constant folding.
4591
4592 2006-02-03  Neale Ferguson <neale@sinenomine.net>
4593
4594         * cpu-s390x.md: correct int_xor_imm length
4595
4596 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
4597
4598         * generics.2.cs: New test for #77442.
4599
4600         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
4601         #77442.
4602
4603 2006-02-02  Martin Baulig  <martin@ximian.com>
4604
4605         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
4606         <mono/metadata/mono-debug-debugger.h>   
4607
4608         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
4609
4610 2006-02-02  Martin Baulig  <martin@ximian.com>
4611
4612         * debug-debugger.h: New header file for debug-debugger.c.
4613
4614         * debug-debugger.c: Big API cleanup; don't run the managed Main()
4615         function is a separate thread anymore; add support for attaching.
4616
4617 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
4618
4619         * tramp-x86.c: Fix a warning.
4620
4621 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
4624         on very large methods.
4625
4626         * aot.c (load_patch_info): Fix a warning.
4627
4628 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
4629
4630         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
4631         mini-ops.h: alu membase optimizations.
4632
4633 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
4634
4635         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
4636         to speedup StringBuilder.
4637
4638 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
4639
4640         * dominators.c (mono_compute_natural_loops): Fix detection of
4641         loop body start blocks.
4642
4643         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
4644
4645 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
4646
4647         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
4648         #75145.
4649
4650 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
4651
4652         * aliasing.c: Fixed aliasing issue on 64 bit archs.
4653
4654 2006-01-25  Martin Baulig  <martin@ximian.com>
4655
4656         * debug-debugger.c: Moved the `MonoDebuggerManager' and
4657         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
4658         started to cleanup this file a little bit.
4659
4660 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
4661
4662         * mini.c: optimize a codepath frequently happening in generics code.
4663
4664 2006-01-23  Martin Baulig  <martin@ximian.com>
4665
4666         * Makefile.am: Only compile debug-debugger.c on supported platforms.
4667
4668         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
4669         functions directly.
4670
4671         * driver.c: debug-debugger.c is only available if
4672         `MONO_DEBUGGER_SUPPORTED' is defined.   
4673
4674 2006-01-23  Martin Baulig  <martin@ximian.com>
4675
4676         * debug-debugger.c: Only enable this on platforms where the Mono
4677         Debugger is working (x86 and x86_64).
4678
4679 2006-01-21  Martin Baulig  <martin@ximian.com>
4680
4681         The Mono Debugger is now using the normal `mono' instead of the
4682         `mono-debugger-mini-wrapper' when executing managed code.
4683
4684         * debug-debugger.c: New file; previously known as
4685         debugger/wrapper/wrapper.c.
4686
4687         * debug-mini.c (mono_init_debugger): Removed.
4688
4689         * driver.c (mono_main): Added new `--inside-mdb' command line
4690         argument which is used when running inside the debugger.
4691
4692 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * liveness.c (mono_analyze_liveness): Remove some unused data
4695         structures.
4696
4697 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
4700
4701 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
4704         depends on implementation details of monobitset.
4705
4706         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
4707         Fixes #77271.
4708
4709 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * liveness.c: Update after monobitset changes.
4712
4713 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
4716
4717 2006-01-11 Neale Ferguson <neale@sinenomine.net>
4718
4719         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
4720
4721         * mini-s390x.c: Remove warning messages.
4722
4723 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
4724
4725         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
4726
4727 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * generics.2.cs: Add ldelem/stelem_any test.
4730
4731 2006-01-10 Neale Ferguson <neale@sinenomine.net>
4732
4733         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
4734
4735 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
4736
4737         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
4738         
4739 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * generics.2.cs: Reenable vtype tests.
4742
4743         * inssel-x86.brg: Remove an icorrect valuetype rule.
4744
4745 2006-01-06 Neale Ferguson <neale@sinenomine.net>
4746
4747         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
4748         initial support for OP_ABS.
4749
4750 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4751
4752         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
4753
4754 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4755
4756         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
4757         conversion and implement LADD/LSUB.
4758
4759         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
4760         architectures.
4761
4762 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4763
4764         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
4765
4766         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
4767         architectures.
4768
4769 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4770
4771         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
4772         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
4773         (stack walk problem).
4774
4775 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
4776
4777         * aot.c (mono_aot_load_method): Fix a warning.
4778
4779 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4780
4781         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
4782
4783 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4784
4785         * iltests.il: Add test for #77148.
4786
4787         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
4788         #77148.
4789
4790 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4791
4792         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
4793
4794 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4795
4796         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
4797         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
4798
4799         * basic-long.cs: Add lconv-to-r4/r8 tests.
4800
4801 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
4804
4805         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
4806         here as on other archs.
4807
4808 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4809
4810         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
4811
4812 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4813
4814         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
4815         
4816         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
4817
4818         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
4819         instrument_prolog; Add memory_barrier instruction.
4820
4821 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
4824
4825 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
4826
4827         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
4828
4829         * aliasing.c inssel.brg: Fix warnings.
4830
4831         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
4832         could skip initialization of some parts of memory.
4833
4834         * mini.c mini-ia64.c: Fix warnings.
4835
4836         * inssel-sparc.brg: Add an implementation of lneg which actually works.
4837
4838 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
4839
4840         * aliasing.c (mono_build_aliasing_information): Add a workaround for
4841         a crash seen on sparc.
4842
4843         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
4844         
4845         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
4846
4847 2005-12-21 Neale Ferguson <neale@sinenomine.net>
4848
4849         * mini-ops.h: Add s390_backchain instruction
4850
4851         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
4852
4853         * cpu-s390.md: Add s390_backchain instruction
4854
4855         * mini-s390.c: Significant ABI changes
4856
4857         * mini-s390.h: Cater for zero length structures
4858
4859 2005-12-20 Neale Ferguson <neale@sinenomine.net>
4860
4861         * mini-s390.c: ABI fixes
4862
4863         * inssel-s390.brg: Remove debug statements
4864
4865         * cpu-s390.md: Fix length of ATOMIC_xx operations
4866
4867 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * basic-float.cs: Add float<->long conversion tests.
4870
4871 2005-12-16 Neale Ferguson <neale@sinenomine.net>
4872
4873         * mini-s390.c: Fix LOCALLOC processing.
4874
4875         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
4876
4877 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
4878
4879         * iltests.il: Add tests for some opcodes not covered by the other
4880         tests.
4881
4882 2005-12-15 Neale Ferguson <neale@sinenomine.net>
4883
4884         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
4885         register loading for Tail processing; Correct trace output.
4886
4887         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
4888
4889         * cpu-s390.md: Correct size of jmp instruction. 
4890
4891 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4892
4893         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
4894
4895 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4896
4897         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
4898           Bring s390 up to current level.
4899
4900 2005-12-12  Zltan Varga  <vargaz@gmail.com>
4901
4902         * generics.2.cs: Disable the newly added tests as they do not work yet.
4903         
4904         * generics.2.cs: Add valuetype tests.
4905
4906 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * basic-long.cs: Add i4->u8 test.
4909
4910         * objects.cs: Add tests for JIT intrinsic.
4911
4912         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
4913         optimizations lost by a mistake.
4914
4915 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * basic-long.cs: Remove a test moved to objects.cs.
4918
4919         * arrays.cs: Add more array tests.
4920
4921 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * arrays.cs: Add new tests for multi-dimensional arrays.
4924
4925 2005-12-06  Raja R Harinath  <rharinath@novell.com>
4926
4927         * Makefile.am (test_sources2): Add generics.2.cs.
4928         (EXTRA_DIST): Add test_sources2.
4929
4930 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
4931
4932         Support for boxing and unboxing nullable types as well as the
4933         isinst operation on nullables, per the CLI ammendment.
4934
4935         * inssel.brg (CEE_ISINST): Special case for nullable
4936
4937         * mini.c (handle_unbox_nullable): new method
4938         (handle_box): Special case for nullable types
4939         (mono_method_to_ir): Call handle_unbox_nullable in correct
4940         places.
4941
4942         * generics.2.cs: New test suite
4943
4944         * Makefile.am: Support for regression tests with generics.
4945
4946 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
4949         allocated to registers. Fixes #76800.
4950
4951 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
4952
4953         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
4954
4955 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
4958         of platforms.
4959
4960 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
4963         objects.cs.
4964
4965         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
4966         
4967         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
4968 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
4969
4970         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
4971         single precision before storing to a single precision location.
4972
4973 2005-11-28  Raja R Harinath  <rharinath@novell.com>
4974
4975         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
4976
4977 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
4980         correct files.
4981
4982         * basic.cs: Remove test_0_byte_compares test which was moved to
4983         objects.cs a long time ago.
4984
4985 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
4986
4987         * aliasing.c: Fixed aliasing issue on 64 bit archs.
4988
4989 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
4990
4991         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
4992         handlers are called.
4993
4994         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
4995         throwing code.
4996
4997          * mini-ia64.c: Add support for the throw->branch exception 
4998         optimization.   
4999
5000         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
5001
5002 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
5003
5004         * mini.c: Enabled "fastpath" deadce :-)
5005         
5006 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
5007
5008         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
5009         alias analysis pass to support it.
5010         * mini.h: Likewise.
5011         * ssa.c: Likewise.
5012         * liveness.c: Likewise (liveness computation can use aliasing
5013         information to be more accurate).
5014         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
5015         moreover made so that "--compile-all" uses the given optimization
5016         flags and not the default ones.
5017         * aliasing.c: Alias analysis (new file).
5018         * aliasing.h: Likewise.
5019         * Makefile.am: added "aliasing.c" and "aliasing.h".
5020         
5021 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
5024         OP_L opcodes.
5025
5026 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
5027
5028         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
5029         fp >= end_of_stack exit condition, as it is not needed, and it might
5030         become true for fp eliminated frames.
5031
5032 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
5035         coded offsets.
5036
5037 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
5038
5039         * mini-arm.c: fixed alignment of doubles/longs to match
5040         the C ABI (bug #76635).
5041
5042 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
5043
5044         * aot.c: fix compilation with --enable-minimal=aot.
5045
5046 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
5047
5048         * mini-arm.c: fixed compatibility with the new
5049         floating point emulator package for compares.
5050
5051 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
5052
5053         * mini.c : reverted sig->pinvoke changes (r51396-51397).
5054
5055 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
5056
5057         * mini-exceptions.c (print_stack_frame): Output to stderr.
5058         (mono_handle_native_sigsegv): Ditto.
5059
5060 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
5061
5062         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
5063         OP_LCONV_TO_OVF_I implementation.
5064
5065         * mini-amd64.c: Add support for the throw->branch exception 
5066         optimization.
5067
5068         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
5069         when the catch clause catches a more general exception, i.e. Object.
5070
5071 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
5072
5073         * cpu-ia64.md: Remove unused opcodes.
5074
5075         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
5076         specific defines for architectures defining USE_SIGACTION.
5077
5078         * mini-ia64.c: Fix some warnings.
5079
5080         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
5081         version seemed to skip a frame.
5082
5083 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
5084
5085         * mini.c: Clean up the usage of sig->pinvoke flag. Now
5086         only calls which are made to native code use this flag.
5087
5088 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
5089
5090         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
5091         varargs methods as well.
5092         
5093         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
5094         which have save_lmf set. Reorganize methods prologs a bit.
5095
5096         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
5097         debugger to the proper place.
5098
5099 2005-10-29  Martin Baulig  <martin@ximian.com>
5100
5101         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
5102         when running inside the debugger until the debugger has support
5103         for it.
5104
5105 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * mini.h: Fix a warning.
5108
5109 2005-10-24  Miguel de Icaza  <miguel@novell.com>
5110
5111         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
5112         we expose publicly, this returns the string.
5113
5114 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
5115
5116         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
5117         with fp elimination.
5118
5119 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
5120
5121         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
5122         native stacktrace using the glibc 'backtrace' function if available.
5123
5124 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
5127
5128         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
5129         handle SIGSEGVs received while in native code.
5130
5131         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
5132         code, call mono_handle_native_sigsegv which will abort the runtime
5133         after printing some diagnostics, instead of converting it into a
5134         confusing NullReferenceException.
5135
5136 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * cpu-pentium.md: Remove unused opcodes.
5139
5140 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
5141
5142         * mini-amd64.h (MonoLMF): Add rsp field.
5143
5144         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
5145         the lmf too.
5146
5147 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * mini-codegen.c (get_register_spilling): Fix some warnings.
5150
5151 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
5152
5153         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
5154         elimination during exception handling. Enable fp elimination by
5155         default.
5156
5157         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
5158         elimination.
5159
5160 2005-10-16  Martin Baulig  <martin@ximian.com>
5161
5162         * mini-exceptions.c
5163         (mono_debugger_run_finally): New public method for the debugger.
5164
5165 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * debug-mini.c (mono_debug_init_method): Fix warning.
5168
5169         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
5170         the 'exname' parameter const to fix some warnings.
5171
5172 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
5173
5174         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
5175         introduced by the previous patch.
5176
5177 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * basic-float.cs: Add test for precision of float arithmetic.
5180
5181         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
5182         when loading/storing single values from/to memory.
5183
5184         * mini.c (mono_jit_compile_method_with_opt): Create the function
5185         pointers in the correct domain.
5186
5187 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
5188
5189         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
5190         introduced by previous patch.
5191         
5192         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
5193         when out_filter_idx is NULL.
5194
5195         * mini-exceptions.c: Don't run filter clauses twice during exception
5196         handling. Fixes #75755.
5197
5198 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
5199
5200         * aot.c: Add support for ldflda wrappers.
5201
5202         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
5203         #75902.
5204
5205 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
5206
5207         * mini.c, mini.h: do not consider exception handlers blocks when
5208         setting up interface variables.
5209
5210 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
5211
5212         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
5213
5214 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
5217         causes a regression.
5218
5219         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
5220
5221 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
5222
5223         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
5224         of the OP_P definitions.
5225
5226         * TODO: Add a proposal for dealing with the CEE/OP mess.
5227
5228         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
5229         optimizations from the x86 port.
5230
5231         * cpu-amd64.md: Ditto.
5232
5233         * basic.cs basic-long.cs: Add tests.
5234
5235 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
5236
5237         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
5238         Patrik Torstensson's implementation of my exception-handling
5239         optimization idea, when the exception object is not used
5240         (bug #62150).
5241
5242 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
5243
5244         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
5245         of the mul_imm optimizations from the old jit.
5246
5247 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
5248
5249         * mini.c, liveness.c: patch by Patrik Torstensson and
5250         Zoltan Varga to improve performance in methods with
5251         exception clauses.
5252
5253 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * driver.c: Remove 'Globalization' entry from --version.
5256
5257 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
5258
5259         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
5260         there is a profiler interested in JIT events.
5261
5262         * aot.c: Load profile files produced by the AOT profiling module, and
5263         reorder methods based on the profiling info. Add a 'method_order' table
5264         to the AOT file to make mono_aot_find_jit_info work with the reordered
5265         methods.
5266
5267         * mini.h: Bump AOT file version info.
5268
5269 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
5270
5271         * mini-arm.h: work around what looks like a gcc bug when optimizations
5272         are enabled.
5273
5274 2005-09-28  Raja R Harinath  <rharinath@novell.com>
5275
5276         * Makefile.am (AM_CFLAGS): Don't use += to append inside
5277         conditionals.  Use ...
5278         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
5279
5280 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
5281
5282         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
5283         to determine the amount of memory to copy when passing valuetypes.
5284
5285         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
5286         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
5287
5288 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
5291         information about aot.
5292
5293 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
5294
5295         * *.c: Replace the use of {Enter,Leave}CriticalSection with
5296         macros. This will allow a deadlock debugger to easily be plugged
5297         in.
5298
5299 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
5300
5301         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
5302
5303 2005-09-27  Raja R Harinath  <rharinath@novell.com>
5304
5305         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
5306         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
5307         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
5308         ($(arch_built)) [CROSS_COMPILING]: Error out.
5309
5310 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * aot.c: Add support for the no_special_static flag for classes.
5313
5314 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
5315
5316         * Reapply reverted patches.
5317
5318         * *: Revert r50174 as well.
5319
5320         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
5321
5322 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
5323
5324         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
5325
5326 2005-09-23  Miguel de Icaza  <miguel@novell.com>
5327
5328         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
5329         part of the SIG_HANDLER_SIGNATURE.  
5330
5331 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
5334         statistics.
5335
5336         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
5337         introduced by previous patch.
5338
5339 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
5340
5341         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
5342         saved registers too.
5343
5344         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
5345         upon the information returned by get_call_info ().
5346         
5347         * mini-x86.c (add_float): Fix stack size calculation.
5348         (mono_arch_call_opcode): Rewrite this so it works based up the
5349         information returned by get_call_info ().
5350         (mono_arch_get_this_vret_args): Ditto.
5351
5352 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
5353
5354         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
5355         in cinfo to determine the registers which need to be used.
5356
5357 2005-09-20  Miguel de Icaza  <miguel@novell.com>
5358
5359         * driver.c (mono_main): Add --server and --desktop flags. 
5360
5361 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
5364         registers as global registers.
5365
5366         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
5367         longer needed with the new register allocator.
5368
5369         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
5370
5371         * cpu-ia64.md: Remove unused opcodes.
5372         
5373         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
5374         
5375 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
5376
5377         * cpu-amd64.md: Remove unused opcodes.
5378
5379         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
5380         needed with the new register allocator.
5381
5382         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
5383         reg-reg moves.
5384
5385 2005-09-16  Raja R Harinath  <rharinath@novell.com>
5386
5387         * Makefile.am (check-local): Don't invoke semdel-wrapper.
5388
5389 2005-09-16  Martin Baulig  <martin@ximian.com>
5390
5391         * exceptions-amd64.c
5392         (throw_exception): Don't call mono_debugger_throw_exception() if
5393         we're a rethrow - see the FIXME in the code.
5394
5395 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
5396
5397         * mini.c (mono_init_exceptions): This only works on some architectures.
5398         
5399 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
5400
5401         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
5402         on ia64.
5403
5404         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
5405
5406         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
5407         now in mini-exceptions.c.
5408
5409 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
5410
5411         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
5412         now in mini-exceptions.c.
5413
5414 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * exceptions-x86.c: Applied patch from Patrik Torstensson 
5417         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
5418
5419         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
5420         code into mini-exceptions.c. Add some assertions to it.
5421
5422 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
5423
5424         * aot.c (emit_section_change): Applied patch from "The Software Team" 
5425         (<software@solmersa.com>). Fix as errors on windows.
5426
5427 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
5428
5429         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
5430         method info into the LMF.
5431
5432 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
5433         
5434         * mini-ia64.c: Add proper unwind info for method epilogs.
5435
5436         * exceptions-ia64.c: Add some code to help debugging.
5437         
5438         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
5439
5440         * mini-exceptions.c: Fix warning.
5441
5442 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
5443
5444         * mini.c: Really fix build.
5445
5446         * mini-x86.c mini-amd64.c: Fix build.
5447
5448 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
5451
5452         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
5453         some Interlocked methods as intrinsics.
5454
5455         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
5456         for Thread methods as well.
5457
5458         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
5459
5460         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
5461
5462         * mini-ia64.c mini-x86.c mini-amd64.c 
5463         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
5464         OP_MEMORY_BARRIER.
5465         
5466         * mini.c (mono_init_exceptions): Fix build breakage.
5467
5468 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
5471         of instructions. Use the new ia64_unw_op macros for emitting unwind
5472         info.
5473
5474         * mini.c (mono_init_exceptions): Initialize exception handling
5475         related trampolines at startup.
5476
5477 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
5478
5479         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
5480
5481 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * mini.c: Handle type loading errors gracefully during compilation and
5484         throw the appropriate exception.
5485
5486 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
5487
5488         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
5489         for the mono binary.
5490
5491 2005-09-09  Martin Baulig  <martin@ximian.com>
5492
5493         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
5494         the release.
5495
5496 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
5497
5498         * mini-arm.h: use emulation for conv.r.un for the release.
5499
5500 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
5501
5502         * mini-arm.c, objects.cs: more fixes and tests for them.
5503
5504 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
5505
5506         * mini-arm.c: align structures to at least 4 bytes to be able
5507         to keep our current optimized memcpy.
5508
5509 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
5510
5511         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
5512
5513 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5514
5515         * mini.c: ignore SIGPIPE.
5516
5517 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
5520
5521         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
5522
5523 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * mini.h: Add prototype for mono_allocate_stack_slots_full.
5526
5527 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
5528
5529         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
5530         exception handling support.
5531         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
5532         patch by Brian Koropoff <briank@marakicorp.com>).
5533
5534 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
5535
5536         * mini.c: revert another 'optimization' which breaks when
5537         items on the eval stack need to be saved at a basic block end
5538         (bug #75940).
5539
5540 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
5541
5542         * jit-icalls.c: for arrays, ensure we always provide
5543         lower bounds.
5544
5545 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
5548         
5549         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
5550
5551 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
5552
5553         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
5554         arguments in their original register.
5555
5556 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
5557
5558         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
5559         memset/memcpy.
5560
5561         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
5562         when ssapre is enabled.
5563
5564         * inssel-long.brg: Fix bug in previous patch.
5565
5566         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
5567         multiplication by a constant.
5568
5569 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
5572         icc.
5573
5574         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
5575         saving registers.
5576
5577 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
5578
5579         * inssel-arm.brg: apply changes tested by Brian Koropoff
5580         <briank@marakicorp.com>.
5581
5582 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
5585         
5586 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
5587
5588         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
5589         to the same register if dreg is just a base register.
5590         (print_ins): Improve printing of membase opcodes.
5591
5592         * inssel-x86.brg: Add optimized ldind(reg) rules.
5593
5594         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
5595
5596 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
5597
5598         * mini.c: when running under valgrind, set the stack bottom for
5599         the GC at the actual approximate stack for the app (fixes running
5600         mono with valgrind).
5601
5602 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
5603
5604         * mini.c: do no break at the first valuetype to init found
5605         (fixes bug #75791).
5606
5607 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
5608
5609         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
5610
5611 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
5612
5613         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
5614
5615 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
5616
5617         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
5618
5619 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
5620
5621         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
5622
5623         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
5624         code.
5625
5626         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
5627         code.
5628
5629         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
5630         methods.
5631
5632 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
5633
5634         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
5635
5636 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
5637
5638         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
5639         in the tail recursion optimization.
5640
5641         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
5642         debug info into the assembly file.
5643
5644         * iltests.il: Add test for filter regions.
5645
5646         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
5647         initial stack of filter regions. Fixes #75755.
5648
5649 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
5650
5651         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
5652         stack requirements.
5653
5654 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
5655
5656         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
5657         the check for an already compiled method on non-ia64 platforms.
5658         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
5659         proper domain.
5660
5661         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
5662
5663         * inssel-x86.brg: Add some optimized call rules.
5664
5665 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
5666
5667         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
5668         method here.
5669
5670         * mini.h mini-trampolines.c: Pass the trampoline argument to 
5671         mono_arch_patch_delegate_trampoline.
5672
5673         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
5674
5675         * mini-trampolines.c: Fix build.
5676
5677         * mini-amd64.h: Add delegate trampolines.
5678
5679         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
5680
5681         * inssel-amd64.brg: Add optimized call rules.
5682         
5683         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
5684
5685         * inssel-ia64.brg: Add optimized ldind(reg) rules.
5686
5687 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
5688
5689         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
5690         change.
5691
5692         * mini-ia64.c: Remove LMF fixmes.
5693
5694         * mini-ia64.h: Remove most fields from LMF.
5695
5696         * inssel-ia64.brg (stmt): Fix unaligned access errors.
5697
5698         * mini-trampolines.c: Add support for IA64 function descriptors.
5699
5700         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
5701         for IA64 function descriptors.
5702
5703 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
5704
5705         * tramp-arm.c: patch the vtable for virtual calls. Added
5706         support code to register/unregister the LMF.
5707         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
5708         more LMF work.
5709
5710 2005-08-19  Dick Porter  <dick@ximian.com>
5711
5712         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
5713         bit value if needed.
5714
5715 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
5716
5717         * mini.c (mini_get_method): Move handling of wrapper data here.
5718
5719         * mini.c (mono_method_to_ir): Add support for dynamic methods.
5720
5721         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
5722         virtual.
5723
5724         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
5725         bblock->code does not remain empty.
5726
5727 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
5728
5729         * arrays.cs: Add regression test for #75832.
5730
5731         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
5732         rules. Fixes #75832.
5733
5734         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
5735         instruction scheduling.
5736
5737 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
5738
5739         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
5740
5741 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
5742
5743         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
5744
5745         * mini-codegen.c: Fix VC build.
5746
5747         * cpu-pentium.md: Increase length of atomic_exhange_i4.
5748
5749 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5750
5751         * mini.h: fix signature for mono_register_opcode_emulation.
5752
5753 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
5754
5755         * mini.c: Get rid of most of the helper_sig_... constants using
5756         mono_create_icall_signature ().
5757
5758 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
5759
5760         * jit-icalls.c (helper_ldstr): New helper function.
5761
5762         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
5763
5764         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
5765         throw, load the string using a helper call instead of creating a string object.
5766
5767         * aot.c: Update after LDSTR changes.
5768
5769         * mini.h: Bump AOT file version.
5770         
5771         * aot.c: Save class size info into the AOT file. Print more statistics during
5772         compilation.
5773
5774         * mini.h: Bump AOT file version.
5775
5776         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
5777         ordering of disasm cases. Fixes #74957.
5778
5779 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
5780
5781         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
5782         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
5783         the generic code needed for the ARM port.
5784
5785 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
5786
5787         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
5788         inssel-arm.brg: more ARM features and fixes.
5789
5790 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
5791
5792         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
5793         ARM port work in progress.
5794
5795 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
5796
5797         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
5798
5799         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
5800
5801         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
5802
5803         * inssel.brg (mini_emit_memset): Add support for unaligned access.
5804
5805         * *-ia64.*: Ongoing IA64 work.
5806         
5807         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
5808
5809 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
5810
5811         * TODO: Remove out-of-data todo stuff.
5812
5813         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
5814         dead code.
5815
5816         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
5817
5818         * mini.h: Bump corlib version.
5819
5820 2005-07-27  Martin Baulig  <martin@ximian.com>
5821
5822         * mini-codegen.c
5823         (create_copy_ins): Added `const unsigned char *ip' argument; set
5824         `copy->cil_code' from it.
5825
5826 2005-07-27  Martin Baulig  <martin@ximian.com>
5827
5828         * mini-exceptions.c (mono_handle_exception): Don't call
5829         mono_debugger_handle_exception() for filters.
5830
5831 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
5832
5833         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
5834         as well.
5835
5836 2005-07-26  Martin Baulig  <martin@ximian.com>
5837
5838         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
5839
5840         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
5841         helper_compile_generic_method() if the method is actually virtual
5842         and non-final.
5843
5844 2005-07-26  Martin Baulig  <martin@ximian.com>
5845
5846         * mini.c
5847         (trampoline_code): Renamed to `mono_trampoline_code' and made it
5848         public; this is now accessed directly by the debugger.
5849         (mono_generic_trampoline_code): Removed.
5850
5851         * debug-mini.c
5852         (mono_debug_init_method): Also add interncalls and wrappers.
5853
5854 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
5855
5856         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
5857
5858 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
5859
5860         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
5861
5862 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
5863
5864         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
5865
5866 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5867
5868         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
5869         getting TLS offsets on AMD64 too.
5870
5871 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
5872
5873         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
5874
5875 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
5876
5877         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
5878         inssel-arm.brg, mini-arm.h: ARM port work in progress.
5879
5880 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5881
5882         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
5883
5884         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
5885         to mini.c.
5886
5887         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
5888         mono_sparc_is_virtual_call ().
5889         
5890         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
5891
5892         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
5893         trampoline parameters.
5894
5895         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
5896         
5897         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
5898         to mono_arch_get_vcall_slot_addr.
5899
5900         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
5901         trampoline code.
5902
5903         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
5904
5905 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5906
5907         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
5908
5909 2005-07-19  Martin Baulig  <martin@ximian.com>
5910
5911         * exceptions-amd64.c (throw_exception): Call
5912         mono_debugger_throw_exception() here like we're doing it on i386.
5913
5914 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5915
5916         * mini-ia64.c: Add optimized TLS access support.
5917
5918 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
5919
5920         * mini-exceptions.c: Ongoing IA64 work.
5921
5922         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
5923
5924         * mini.c: Use the default optimization set when embedding. Fixes
5925         #75194.
5926
5927 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
5928
5929         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
5930         of trampolines to a separate file.
5931
5932         * mini-trampolines.c: New file.
5933
5934         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
5935         separate file.
5936         
5937         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
5938         amd64/ia64 code.
5939
5940         * mini-codegen.c: Fix cygwin build.
5941
5942 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
5943
5944         * mini.c: Add some minor changes needed by the IA64 port.
5945
5946         * *-ia64.*: Ongoing IA64 work.
5947
5948 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
5949
5950         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
5951         trampolines into arch-independent and arch-dependent parts.
5952
5953         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
5954
5955 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
5956
5957         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
5958
5959         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
5960         the xp-regalloc-branch for amd64.
5961
5962         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
5963         xp-regalloc-branch for x86.
5964
5965 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
5966
5967         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
5968
5969 2005-07-06  Martin Baulig  <martin@ximian.com>
5970
5971         * mini.c
5972         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
5973         (mono_jit_runtime_invoke): Likewise.
5974
5975 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
5976
5977         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
5978         on x86 too.
5979         
5980         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
5981         without loading their metadata. Reorganize the file format so exception handling+
5982         debug info is kept separate from normal method info. Create MonoJitInfo 
5983         structures for methods lazily.
5984
5985         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
5986         loading metadata.
5987         (x86_class_init_trampoline): Patch AOT class init trampolines too.
5988
5989         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
5990
5991         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
5992         in AOT code.
5993
5994         * mini.h: Bump AOT file version.
5995
5996 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
5997
5998         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
5999
6000 2005-07-01  Raja R Harinath  <rharinath@novell.com>
6001
6002         * Makefile.am (check-local): Call semdel-wrapper.
6003
6004 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
6005
6006         * mini-x86.c: Revert the last change as it seems to break the build..
6007
6008 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
6009
6010         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
6011         
6012         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
6013
6014 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
6015
6016         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
6017         outside of the macro, so strange stuff doesn't happen with gcc4
6018         (NEW_AOTCONST_TOKEN): Likewise.
6019
6020 2005-06-28  Martin Baulig  <martin@ximian.com>
6021
6022         * mini.c (mini_class_is_system_array): New static method; use this
6023         instead of `klass->parent == mono_defaults.array_class' everywhere
6024         since this also works for the new generic array class.
6025
6026 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
6027
6028         * inssel.brg: Remove warnings.
6029
6030 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
6031
6032         * mini-ia64.c: Ongoing IA64 work.
6033
6034         * basic-float.cs: Add float->i1 conversion test.
6035
6036         * iltests.il: Add conv.u4 test.
6037
6038 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
6039
6040         * inssel-long.brg: Fix bug caused by last change.
6041
6042 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
6043
6044         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
6045         BSDs.  Allows the x86 JIT to work on OSX86
6046
6047 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
6048
6049         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
6050         u4->i8 conversion.
6051
6052         * mini-ia64.c: Ongoing IA64 work.
6053
6054 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
6055
6056         * mini-ia64.c: Ongoing IA64 work.
6057
6058         * driver.c: Clean up jit_code_hash as well when using --regression.
6059
6060         * inssel-long.brg: Fix long->i4/u4 conversion rules.
6061
6062         * basic-long.cs: Add tests for long->u4 conversion.
6063
6064 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
6065
6066         * mini.c: Take mono_get_domainvar out of macros. This makes sure
6067         that we do not depend on undefined C behavior: the order stuff
6068         gets evaluated within an expression. Fixes mono when compiled on
6069         GCC 4.
6070
6071 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
6072
6073         * *-ia64.*: Ongoing IA64 work.
6074
6075         * aot.c: Lower memory usage while loading AOT methods.
6076
6077         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
6078
6079         * mini.h: Bump AOT file format version.
6080
6081 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
6082
6083         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
6084
6085 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
6086
6087         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
6088         not on callee assembly). Fixed some comments.
6089
6090 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
6091
6092         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
6093         it gets proper disassembly.
6094         (emit_method_info): Remove some dead code.
6095
6096         * mini.c (mini_method_compile): Allways allocate the GOT var in
6097         mono_method_to_ir for emulating opcodes.
6098
6099 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
6100
6101         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
6102         before freeing the code memory. Fixes #74990.
6103
6104         * objects.cs: Add regression test for #74992.
6105
6106         * liveness.c: Extend live ranges of arguments to the beginning of the
6107         method. Fixes #74992.
6108
6109         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
6110         so it points into the faulting instruction.
6111
6112 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
6113
6114         * jit-icalls.c (mono_imul_ovf): Add exception handling.
6115
6116         * *-ia64.*: Ongoing IA64 work.
6117
6118         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
6119
6120 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
6121
6122         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
6123
6124         * *-ia64.*: Ongoing IA64 work.
6125
6126 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
6127
6128         * basic-long.cs: Add tests for add/sub.ovf.
6129
6130         * basic.cs: Add tests for sub.ovf.
6131
6132         * *-ia64.*: Ongoing IA64 work.
6133
6134 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
6135
6136         * *-ia64.*: Ongoing IA64 work.
6137
6138         * basic.cs: Add conv.ovf.i4.un test.
6139
6140 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
6141
6142         * mini.c: (remove_block_if_useless) Fixed bug 75061.
6143         
6144 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6145
6146         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
6147
6148 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
6149
6150         * *-ia64.*: Ongoing IA64 work.
6151
6152 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6153
6154         * trace.[ch]:
6155         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
6156
6157 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
6158
6159         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
6160
6161 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
6162
6163         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
6164
6165         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
6166         of a call is callable by a near call.
6167
6168 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
6169
6170         * mini-ia64.c: Ongoing IA64 work.
6171
6172 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
6173
6174         * genmdesc.c: Make the generated array non-static.
6175
6176         * inssel-long.brg: Fix LSHR_IMM rule.
6177
6178         * *-ia64.*: Ongoing IA64 work.
6179
6180         * *-ia64.*: Ongoing IA64 work.
6181
6182 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
6183
6184         * *-ia64.*: Ongoing IA64 work.
6185
6186         * *-ia64.*: Ongoing IA64 work.
6187         
6188         * mini-ia64.c: Ongoing IA64 work.
6189
6190         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
6191
6192 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
6193
6194         * objects.cs basic-calls.cs: Move some tests to objects.cs.
6195         
6196         * objects.cs basic-long.cs: Move some tests to objects.cs.
6197
6198 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
6199
6200         * *-ia64.*: Ongoing IA64 work.
6201
6202         * iltests.il: Add a new test.
6203
6204         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
6205         newobj. Fixes #75042.
6206
6207 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
6208
6209         * *-ia64.*: Ongoing IA64 work.
6210         
6211         * *-ia64.*: Ongoing IA64 work.
6212         
6213         * *-ia64.*: Ongoing IA64 work.
6214
6215         * basic.cs objects.cs: Move tests accessing static variables as well.
6216
6217         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
6218
6219 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
6220
6221         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
6222
6223         * driver.c: Always print failed tests.
6224
6225         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
6226         frame pointer.
6227
6228         * *ia64*: Ongoing IA64 work.
6229
6230 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
6231
6232         * basic.cs: Add tests for add.ovf. Fix warnings.
6233
6234 2005-05-18  Miguel de Icaza  <miguel@novell.com>
6235
6236         * driver.c (mono_main): Avoid crash if no argument is passed to
6237         --break;  Do not use g_error, but f_printf.   And fix all other
6238         ocurrences of the same crash.
6239
6240 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
6241
6242         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
6243         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
6244         Fixes #74742.
6245
6246 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
6247
6248         * *-ia64.*: Add beginnings of IA64 backend.
6249
6250         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
6251
6252 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
6253
6254         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
6255         Fixes #74925.
6256
6257         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
6258
6259         * mini-amd64.c: Fix a warning.
6260
6261 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
6262
6263         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
6264         in float_neg. Fixes #74897.
6265
6266         * mini-amd64.c (emit_call): Fix another near call bug.
6267
6268 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
6269
6270         * declsec.c: Keep the appdomain information in the structure. Added a 
6271         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
6272         value gets overwritten).
6273         * declsec.h: Set the default MonoArray for the the stack to 6. Added
6274         an MonoAppDomain member to MonoSecurityFrame.
6275         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
6276         used in the stack walk. Now use a MonoArray which grow (double) when
6277         it gets full.
6278
6279 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
6280
6281         * mini.c: Re-enabled runtime cleanup, since running threads should
6282         now properly stop when exiting.
6283
6284 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
6285
6286         * mini-codegen.c: New file contaning the arch-independent local
6287         register allocator. Not used by any architectures yet.
6288
6289         * mini.h linear-scan.c: Merge some changes from the 
6290         mini-xp-local-regalloc branch.
6291
6292 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
6293
6294         * mini-amd64.c (emit_call): Fix calls to native functions when the
6295         runtime is compiled as a shared library. Fixes #74756.
6296
6297         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
6298         on a literal field. Fixes #74751.
6299
6300 2005-04-25  Raja R Harinath  <rharinath@novell.com>
6301
6302         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
6303
6304 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
6305
6306         * objects.cs: Add missing null casting test.
6307
6308 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
6309
6310         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
6311         in wrapper methods. Also rename 'address' variable to 'offset'.
6312
6313 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
6314
6315         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
6316         warnings.
6317         
6318         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
6319
6320         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
6321         work on windows.
6322
6323 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
6324
6325         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
6326
6327 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
6328
6329         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
6330         just the last bytes.
6331
6332 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
6333
6334         * aot.c (mono_compile_assembly): Fix warning.
6335
6336         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
6337         by the _MSC_VER stuff.
6338
6339 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
6340
6341         * inssel-long.brg: Fix #74588.
6342
6343         * cpu-amd64.md: Fix #74591.
6344
6345         * iltests.il: Add new regression tests.
6346
6347 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
6348
6349         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
6350         valuetype.
6351
6352 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
6353
6354         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
6355
6356         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
6357         from Bill Middleton <flashdict@gmail.com>.
6358
6359 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
6360
6361         * arrays.cs: Add new regression test. Fix warnings.
6362
6363 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
6364
6365         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
6366         and leakage in CKFINITE.
6367
6368         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
6369         this to a null op since it is called on amd64 too.
6370
6371         * exceptions-amd64.c (get_throw_trampoline): Align stack.
6372
6373         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
6374         body since this is not used on amd64.
6375         
6376         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
6377
6378         * mini-amd64.c: Remove obsolete fixmes.
6379
6380         * mini.c (print_method_from_ip): Fix debugging support.
6381
6382 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6383
6384         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
6385         so that expressions that don't give much gain are not reduced.
6386         * ssapre.h: Likewise.
6387
6388 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
6389
6390         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
6391
6392         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
6393
6394         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
6395
6396 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
6397
6398         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
6399
6400         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
6401
6402 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
6403
6404         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
6405         stack touching.
6406
6407         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
6408
6409         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
6410
6411         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
6412
6413         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
6414         MONO_ARCH_USE_SIGACTION. Fixes #74252.
6415
6416         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
6417
6418         * mini-x86.c: Fix up stack overflow handling.   
6419
6420         * exceptions.cs: Add new regression test.
6421
6422 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
6423
6424         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
6425         mono_jit_thread_attach.
6426
6427         * mini.c (mono_method_to_ir): Verify called method is not abstract.
6428
6429 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
6430
6431         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
6432         avoid calling constructors using callvirt.
6433
6434         * inssel.brg: Fix #74073.
6435
6436 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
6437
6438         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
6439         compilation with non-GCC compilers.
6440         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
6441         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
6442
6443 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
6444
6445         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
6446         klass->interface_offsets (will likely fix bug#74073).
6447
6448 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
6449
6450         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
6451
6452 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
6453
6454         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
6455         to amd64_div_reg_size ().
6456         
6457         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
6458
6459 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
6460
6461         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
6462
6463 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
6464
6465         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
6466
6467 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
6468
6469         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
6470         
6471         * mini.c (mono_precompile_assembly): Load and precompile referenced
6472         assemblies as well. Fixes #74015.
6473
6474 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
6475
6476         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
6477
6478 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
6479
6480         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
6481         a lot of checks and (anyway) permissions cannot work until corlib is 
6482         loaded.
6483
6484 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
6485
6486         * mini-ppc.c: fixed ABI issue on sysv/ppc.
6487
6488 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
6489
6490         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
6491         calls (fixes bug#72824).
6492
6493 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
6494
6495         * mini.c: fix tail recursion elimination (see test in bug#73936).
6496
6497 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
6498
6499         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
6500         some fp functions in sse2 mode.
6501
6502 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
6503
6504         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
6505
6506 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
6507
6508         * mini.h mini.c: Add mono_get_jit_tls_key ().
6509
6510         * mini-x86.c: Enable fast TLS support on windows.
6511
6512 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6513
6514         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
6515         * mini.c: Check for p/invoke method when generating code. If a
6516         p/invoke method, or it's class, isn't decorated with [Suppress
6517         UnmanagedCodeSecurity] then generate code to call System.Security.
6518         UnmanagedDemand (only if the security manager is active).
6519
6520 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
6521
6522         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
6523         last change as it seems to cause strange crashes.
6524         
6525 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6526
6527         * *.c: handle unsafe function pointers where needed.
6528
6529 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
6530
6531         * mini.c (mono_jit_free_method): Remove the fixme too.
6532
6533 2005-03-15  Miguel de Icaza  <miguel@novell.com>
6534
6535         * mini.c: As discussed, make the code actually free the delegate
6536         thunk now, to enable the debugging of delegate problems, use
6537         MONO_DEBUG=1 when running Mono. 
6538
6539         This takes also care of parts of the leaks as seen by Joe.
6540
6541 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
6542
6543         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
6544         thread_tls_offset calculation.
6545
6546 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
6547
6548         * declsec.c: Reworked linkdemand checks for icall. The previous code
6549         was using the declaration code (untrusted) and didn't work as expected
6550         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
6551         specific case.
6552
6553 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
6554
6555         * iltests.il: Add new localloc test.
6556
6557         * mini-amd64.c: Handle large stack allocations the same way as on
6558         windows if stack overflow handling is working.
6559         
6560         * mini-amd64.c: Allocate the signal stack using mmap.
6561
6562         * mini.c (sigsegv_signal_handler): Fix reading of context.
6563
6564         * mini-exceptions.c: Fix up stack overflow handling.
6565
6566         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
6567
6568         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
6569
6570         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
6571
6572         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
6573
6574         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
6575         tramp_init functions as they are no longer needed.
6576
6577 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
6578
6579         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
6580         
6581         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
6582
6583         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
6584         
6585         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
6586         support that now.
6587
6588         * mini-ops.h: Add OP_LMUL_IMM.
6589
6590         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
6591         long mul/div opcodes as intrinsic.
6592
6593         * mini-amd64.c (emit_call): Handle the case when the callee might be
6594         an AOT method.
6595
6596 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
6597
6598         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
6599         extra safe.
6600         
6601         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
6602
6603         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
6604
6605 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
6606
6607         * mini.c (mono_codegen): Don't leak here, to help people running
6608         monogrind.
6609
6610 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
6611
6612         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
6613         conversions in sse2 mode.
6614
6615         * basic-float.cs: Add regression test.
6616         
6617         * mini-amd64.c: Reenable sse2.
6618
6619 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
6620
6621         * mini-amd64.c: Disable sse2 until some regressions are fixed.
6622
6623 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
6624
6625         * driver.c: Copyright text should include 2005.
6626         
6627 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
6628
6629         * cpu-amd64.md (load_membase): Fix more max lengths.
6630
6631 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
6632
6633         * cpu-amd64.md (load_membase): Fix max length.
6634
6635         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
6636
6637         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
6638
6639         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
6640         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
6641
6642         * basic-float.cs: Add rounding regression test.
6643
6644         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
6645
6646 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
6647
6648         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
6649         structures in registers for pinvoke wrappers.
6650
6651 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
6652
6653         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
6654
6655 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
6656
6657         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
6658         wrapper to mono_jit_thread_attach.
6659
6660         * mini.c (mini_jit_thread_attach): New jit icall.
6661
6662         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
6663         native->managed wrappers.
6664
6665         * exceptions.cs: Add new regression test.
6666
6667         * mini.c (optimize_branches): Check regions in the cbranch to throw
6668         block case as well. Fixes #73242.
6669
6670 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
6671
6672         * mini.c: thread safety fixes.
6673
6674 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
6675
6676         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
6677         patching stuff, since delegates use jump trampolines so there is
6678         no caller.
6679
6680         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
6681         jump trampolines.
6682         
6683         * tramp-amd64.c: Fix build.
6684
6685         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
6686         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
6687
6688         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
6689         Rename this to mono_arch....
6690         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
6691
6692         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
6693
6694         * mini-amd64.c (emit_call): If both the caller and the callee is
6695         guaranteed to have 32 bit addresses, emit a normal call.
6696
6697         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
6698
6699         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
6700         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
6701         method_ptr inside delegates.
6702
6703 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
6704
6705         * mini.c (mono_jit_free_method): Free the method info even if the native code is
6706         invalidated. Fixes #73001.
6707
6708         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
6709
6710         * mini-x86.c: Only use stdcall for pinvokes on windows.
6711
6712 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
6713
6714         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
6715         * mini-x86.c: remove unreliable __thread var offset detection,
6716         use the correct accessors and enable by default.
6717
6718 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
6719
6720         * mini.c (mono_jit_free_method): Fix memory leak.
6721
6722 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
6723
6724         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
6725
6726 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
6727
6728         * cpu-amd64.md: Fix lengths of atomic opcodes.
6729
6730 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
6731
6732         * driver.c: try to not imply using ICU is any good.
6733
6734 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
6735
6736         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
6737         functions as inline ops.
6738
6739         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
6740         some Interlocked functions as inline ops.
6741
6742         * mini.c (move_basic_block_to_end): Fix bug in last patch.
6743
6744         * mini.h (MonoBasicBlock): Reorganize fields a bit.
6745
6746         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
6747
6748         * mini.c: Add support for OP_NOT_TAKEN.
6749
6750         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
6751         structures in registers for pinvoke wrappers.
6752
6753         * mini-amd64.c: Fix warnings.
6754
6755 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
6756
6757         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
6758
6759         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
6760
6761         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
6762         address instead of loading the address from it.
6763
6764         * mini-x86.c: Add support for returning small structs in registers
6765         on Win32. Fixes part of #70864.
6766         
6767 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
6768
6769         * trace.c (get_token): Improve error checking.
6770
6771 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
6772
6773         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
6774
6775 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
6776  
6777         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
6778         it can be reused for MonoClass.
6779         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
6780         _LINKDEMAND.
6781
6782 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
6783
6784         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
6785         instead of a MonoReflectionMethod. The method information wasn't used
6786         when displaying SecurityException details (but will be now).
6787
6788 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
6789
6790         * Makefile.am : windows build fix.
6791
6792 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
6793
6794         * iltests.il: Add new regression test.
6795
6796         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
6797         #72522.
6798
6799 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
6800  
6801         * mini.c: Moved linkdemand check into helper function check_linkdemand
6802         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
6803         LDFTN, LDVIRTFTN).
6804
6805 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
6806
6807         * declsec.c: Added statistics counter for different kinds of 
6808         LinkDemands.
6809         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
6810         (and commented) declaration.
6811         * mini.c: Added statistics counter for security Demand code 
6812         generation. Added display of security statistics.
6813
6814 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
6815
6816         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
6817         Fix compilation errors under gcc-2.95.
6818
6819 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
6820
6821         * mini.c, driver.c: Use the new jit trampoline hashtable
6822
6823 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6824
6825         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
6826
6827 2005-02-11  Martin Baulig  <martin@ximian.com>
6828
6829         * debug-mini.c (mono_debug_close_method): Free the line number array.
6830
6831 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6832
6833         * aot.c: Break up large methods into smaller ones. Share GOT slots for
6834         icalls.
6835
6836         * mini.h: Bump AOT file format version. 
6837
6838 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
6839
6840         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
6841         APTC and P/Invoke.
6842         * declsec.h: Added macros to get/set lazyly initialized security 
6843         informations about assemblies. Added new enum for different type of
6844         possible LinkDemand violation. Added function to check LinkDemands.
6845         * mini.h: Added a field to MonoCompile to hold any security violation
6846         detected when JITting a method (so it can be thrown later).
6847         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
6848         and CEE_CALLVIRT. Added code to throw exception at the end of
6849         mini_method_compile (note: the exception is unhandled right now).
6850
6851 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
6852
6853         * mini.c, jit-icalls.c: use the managed implementation of
6854         memset for initobj and memset, to avoid managed <-> unmanaged
6855         transitions.
6856
6857 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6858
6859         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
6860         optimization if it would need a GOT var.
6861
6862         * basic.cs: Add tests for constant propagation and switch statements.
6863
6864         * ssa.c: Fix out-of-range constant propagation and switch statements.
6865
6866 2005-02-09    <vargaz@freemail.hu>
6867
6868         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
6869
6870 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
6871
6872         * cpu-amd64.md (load_membase): Fix max length of load_membase.
6873
6874 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6875
6876         * mini.c: update to new signature of mono_class_get_allocation_ftn().
6877
6878 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
6879
6880         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
6881         arithmetic operations.
6882
6883 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
6884
6885         * mini-ppc.c: add a workaround for broken user code that
6886         DllImports vararg functions with non-vararg signatures.
6887
6888 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
6889
6890         * mini.c (mono_jit_compile_method_inner): Add detection and a 
6891         meaningfull error message for assemblies written in Managed C++.
6892
6893         * tramp-amd64.c mini-amd64.h: Add support for 
6894         create_trampoline_from_token ().
6895
6896         * aot.c mini-x86.c abcremoval.c: Applied patch from
6897         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
6898
6899 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
6900
6901         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
6902         which takes a MonoImage/token as parameter instead of a MonoMethod.
6903
6904         * aot.c: Use the new trampoline for initializing vtables.
6905
6906         * aot.c: Add support for ldfld/stfld_remote wrappers.
6907
6908         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
6909         rules for compare <MEM>, IMM.
6910
6911         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
6912
6913         * aot.c: Handle inherited finalizers correctly.
6914
6915 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
6916
6917         * inssel.brg (stmt): Add a missing _setup_... ().
6918
6919         * aot.c: Save some parts of the class state to the AOT file and use it
6920         to recompute that state when a class is initialized.
6921
6922         * mini.c: Install AOT hooks into the runtime.
6923
6924         * mini.h: Bump AOT file format version.
6925         
6926         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
6927         Fixes #72148.
6928
6929         * iltests.il: Add new test.
6930
6931 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
6932
6933         * mini.c: fix typo.
6934
6935 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
6936
6937         * mini.c: setup the statistical profiler in the thread attach
6938         callback to cope with the new single thread code.
6939
6940 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
6941
6942         * mini-ppc.c: ensure we have enough room for the profiler
6943         calls (fixed bug#72084).
6944
6945 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
6946
6947         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
6948         it.
6949
6950 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6951
6952         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
6953
6954 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6955
6956         * ssapre.c: Fixed an issue with down safety (this allows IronPython
6957         to succesfully execute parrotbench).
6958         * ssapre.h: Likewise.
6959
6960 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6961
6962         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
6963         variable for stores to method arguments (fixes a SSAPRE issue).
6964
6965 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
6966
6967         * mini.c: handle value types in dup, fixes gen-112.cs.
6968
6969 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
6970
6971         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
6972         sequence for calls in dynamic methods to avoid thunks.
6973
6974 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
6975
6976         * mini.c: correctly remove dynamic methods from the hashtable.
6977
6978 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6979
6980         * driver.c: Disabled SSAPRE until fix the bug that appears
6981         in IronPython's parrotbench.
6982
6983 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
6984
6985         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
6986
6987         * mini.c (mono_method_to_ir): Revert the previous change.
6988         
6989         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
6990         when AOT compiling.
6991
6992         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
6993         mono_jit_info_table_find () etc. when running under valgrind.
6994
6995         * inssel.brg: Fix warnings.
6996
6997         * mini-exceptions.c: Fix warnings.
6998
6999 2005-01-31  Martin Baulig  <martin@ximian.com>
7000
7001         * driver.c (compile_all_methods_thread_main): Don't try to compile
7002         generic methods or anything which has type parameters.
7003
7004 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
7005
7006         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
7007
7008         * TestDriver.cs: Add --verbose flags.
7009
7010         * graph.c ssa.c: Fix 64 bit warnings.
7011         
7012         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
7013         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
7014         Fix 64 bit warnings.
7015
7016         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
7017         variable not spotted by gcc.
7018         
7019         * mini-amd64.c inssel-amd64.brg: Applied patch from  
7020         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
7021         X86_COMPARE_MEMBASE opcodes.
7022
7023         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
7024
7025 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
7026
7027         * *: MonoMethod->signature might be NULL now. You *MUST* use
7028         mono_method_signature.
7029
7030 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
7031
7032         * driver.c (compile_all_methods_thread_main): Compile the methods
7033         without invoking cctors.
7034
7035 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
7036
7037         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
7038         * basic-calls.cs: test for the above.
7039
7040 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
7041
7042         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
7043         MonoJitInfo changes.
7044
7045 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
7046
7047         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
7048         eagerly if it contains dynamic methods.
7049         
7050         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
7051
7052         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
7053         trace, it is now computed by an icall from trace_ips.
7054         
7055         * mini-exceptions.c: Fix a warning.
7056
7057 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
7058
7059         * mini-exceptions.c: don't bother getting stack trace info if
7060         it's not going to be used.
7061
7062 2005-01-27  Raja R Harinath  <rharinath@novell.com>
7063
7064         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
7065         ssapre-mini-ops.h.
7066
7067 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
7068
7069         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
7070
7071         * aot.c: Avoid calling mono_method_get_header () if not needed.
7072
7073         * mini.h: Bump AOT file format version.
7074         
7075         * mini.c (mono_emit_native_call): Allocate a GOT var here.
7076
7077         * mini.c (mono_print_tree): Print more info for calls.
7078
7079 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
7080
7081         * declsec.h: Remove warning by adding missing include for marshal.h
7082
7083 2005-01-26  Martin Baulig  <martin@ximian.com>
7084
7085         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
7086         `ip' twice.
7087
7088 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
7089
7090         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
7091         flags.
7092
7093         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
7094
7095         * aot.c (mono_compile_assembly): Fix a warning.
7096
7097 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
7098
7099         * declsec.c: Look for security attributes on the original MonoMethod 
7100         (and not the wrapped one). This fix permissions on icalls.
7101
7102 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
7103
7104         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
7105
7106         * mini.c (mono_allocate_stack_slots): Add a fixme.
7107
7108         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
7109
7110 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
7111
7112         * inssel.brg: optimize casts of sealed types (more
7113         optimizations waiting for fixes in remoting).
7114
7115 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
7116
7117         * inssel.brg (stmt): Add another dummy rule.
7118
7119         * driver.c: Fix warnings.
7120
7121         * driver.c (mono_main): If running under valgrind, instruct glib to use
7122         the system allocation functions so valgrind can track the memory
7123         allocated by the g_... functions.
7124
7125         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
7126
7127         * mini-ops.h: Add OP_DUMMY_STORE opcode.
7128
7129         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
7130
7131         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
7132         variables in try regions.
7133
7134         * mini.c (mini_method_compile): Don't disable optimizations on large
7135         methods when AOT compiling.
7136
7137         * mini.c (mono_allocate_stack_slots): New arch independent method to 
7138         allocate stack slots. Not yet used.
7139
7140 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
7141
7142         * debug-mini.c (mono_debug_close_method): Plug some leaks.
7143
7144 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
7145
7146         * mini-ppc.c: make the branch info relative as the code
7147         buffer can be reallocated.
7148
7149 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
7150
7151         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
7152         * driver.c: Removed the AOT/security restriction. Now initialize the
7153         security manager (in metadata) if --security is used.
7154         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
7155         rather than the pointer to declarative security, when AOT is used.
7156
7157 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
7158
7159         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
7160         basic blocks, reduced intrinsic exception throwing code size.
7161
7162 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
7163
7164         * driver.c (mini_usage): Reorder the usage screen.
7165
7166 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
7167
7168         * mini.c (mono_resolve_patch_target): Fix warning.
7169
7170 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
7171
7172         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
7173         previous patch.
7174
7175         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
7176
7177         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
7178         breaks the amd64 build.
7179
7180         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
7181         register allocation. Fixes #71454.
7182
7183         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
7184
7185         * arrays.cs: Add new regression test.   
7186
7187 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
7188
7189         * ssapre.c: Turned usage of snprintf to GString.
7190         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
7191         (I left it on by mistake in my previous commit).
7192
7193 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
7194
7195         * mini.c, cfold.c, basic-calls.cs: preserve side effects
7196         on cond branch optimization (fixes bug# 71515).
7197
7198 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
7199
7200         * abcremoval.c: Fixed bug 71062.
7201         * abcremoval.h: Likewise.
7202
7203 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
7204
7205         * mini.c: Added a new functionality to optimize_branches, the removal
7206         of useless basic blocks, and fixed some problem in the removal of
7207         critical edges; some utility functions added for both purposes.
7208         * ssapre.c: Added complex expression support, and fixed bug 70637.
7209         * ssapre.h: Likewise.
7210         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
7211         enabled in SSAPRE.
7212         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
7213         * driver.c: Re-enabled SSAPRE.
7214
7215 2005-01-19  Martin Baulig  <martin@ximian.com>
7216
7217         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
7218         the result of mono_get_method_constrained().
7219
7220 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
7221
7222         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
7223         manager.
7224
7225 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
7226
7227         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
7228         be detected.  Fixes #59296.
7229
7230 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
7231
7232         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
7233         which can happen. Fixes #71361.
7234
7235 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
7236
7237         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
7238         manager.
7239
7240 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
7241
7242         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
7243         appdomain-unload.exe to fail.
7244         
7245         * mini.c: Fix some memory leaks.
7246
7247 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
7248
7249         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
7250         Fixed bug and sped up some codepaths.
7251
7252 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
7253
7254         * mini.c: Fix some memory leaks.
7255
7256         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
7257         conversion.
7258
7259         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
7260
7261         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
7262         #71320.
7263
7264         * iltests.il: Add regression test for #71320.
7265
7266 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
7267
7268         * mini.c (mono_codegen): Fix installation of profiler hooks.
7269
7270         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
7271
7272 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
7273
7274         * mini.h, mini.c, cfold.c: optimize access to enum
7275         readonly fields, too. Eval conditional branches if possible
7276         to perform unreachable code removal in more cases.
7277
7278 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
7279
7280         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
7281
7282         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
7283         code manager.
7284
7285         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
7286         WinXP DEP. Fixes #71244.
7287
7288 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
7289
7290         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
7291
7292 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
7293
7294         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
7295
7296 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
7297
7298         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
7299         changes.
7300
7301         * mini.h: Bump AOT version.
7302
7303         * mini.h (MonoCompile): Change exvar to a hash table.
7304
7305         * mini.c: Allocate a separate exvar for each handler block.
7306
7307         * mini.c: Get rid of the computation of filter_lengths, its not needed.
7308
7309         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
7310         ex var with the pending exception and only throw if the two are equal.
7311         Fixes #68552.
7312         
7313         * exceptions.cs: Add tests for rethrow and nested catch clauses.
7314
7315         * mini-x86.c: Fix warnings.
7316
7317         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
7318         used by all the ports now.
7319
7320         * aot.c: Add write-symbols and save-temps options.
7321
7322 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
7323
7324         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
7325
7326 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
7327
7328         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
7329         operations.
7330
7331         * tramp-s390.c: Check vtable slot belongs to the domain.
7332
7333         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
7334         as per other platforms.
7335
7336         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
7337
7338 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
7339
7340         * driver.c: we don't run the Main() code in a subthread anymore.
7341
7342 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
7343
7344         * mini.c: added experimental rtc support in the statistical
7345         profiler: if the user has the permission, more accurate statistics
7346         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
7347         The MONO_RTC value must be restricted to what the linux rtc allows:
7348         power of two from 64 to 8192 Hz.
7349
7350 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
7351
7352         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
7353
7354 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
7355
7356         * mini-ppc.c: better icache flush for smp.
7357
7358 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
7359
7360         * mini-amd64.c (emit_move_return_value): Fix memory leak.
7361
7362         * mini-x86.c (get_call_info): Add the get_call_info () code from the
7363         amd64 port, not yet used.
7364
7365 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
7366
7367         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
7368         a struct type.
7369
7370 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
7371
7372         * driver.c: Added --security option to activate the security manager.
7373         Right now this will allow code generation for declarative demands and
7374         is disabled when AOT is specified.
7375         * mini.c: Add code generation for declarative security demands.
7376         * mini.h: Add mono_use_security_manager as an extern gboolean.
7377
7378 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
7379
7380         * aot.c (mono_compile_assembly): Speed up compilation a bit by
7381         emitting more dense assembly code.
7382
7383         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
7384         exception throwing stuff.
7385
7386 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
7387
7388         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
7389         dead code.
7390
7391         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
7392         left in by mistake.
7393
7394         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
7395         fixed.
7396
7397         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
7398
7399         * tramp-*.c: Only patch vtable slots if the object is in the current
7400         domain. Fixes appdomain-unload.exe.
7401
7402         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
7403         
7404         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
7405         x86 branch.
7406
7407 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
7408
7409         * mini.c (reverse_branch_op): New helper function.
7410
7411         * mini.c (optimize_branches): Run the new optimization only on 
7412         platforms which support it. Also reverse all kinds of branches.
7413
7414         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
7415
7416         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
7417         a throw statement.
7418
7419         * mini.c (optimize_branches): Reverse not-equals branches if the false
7420         bblock is a throw. This happens a lot of time with argument checking in
7421         corlib.
7422
7423         * mini.c (mono_codegen): Add support for placing basic blocks after
7424         the function epilogue.
7425
7426         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
7427         function epilogue.
7428         
7429 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
7430
7431         * mini.c (setup_stat_profiler): Only set this up if the platform
7432         supports ITIMER_PROF.
7433
7434 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
7435
7436         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
7437         previous patch.
7438
7439         * inssel.brg: Fix a warning.
7440
7441 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
7442
7443         * mini.c: added support for statistical profiler 
7444         (run with: --profile=default:stat).
7445
7446 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
7447
7448         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
7449
7450         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
7451
7452         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
7453         related to global registers from the amd64 port.
7454
7455 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
7456
7457         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
7458
7459         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
7460         with global registers.
7461         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
7462
7463         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
7464
7465 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
7466
7467         * debug-mini.c (encode_value): Fix off-by-one.
7468
7469         * aot.c (encode_value): Likewise.
7470
7471         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
7472
7473 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
7474
7475         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
7476         AOT.
7477
7478         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
7479         
7480         * aot.c (emit_method_info): Increase size of temp buffer.
7481
7482         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
7483         the AOT case.
7484
7485 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
7486
7487         * aot.c (emit_method_info): Fix build.
7488         
7489         * aot.c: Further rework of the AOT file format to reduce the size of
7490         the method info data.
7491
7492         * mini.h: Bump AOT file format version.
7493
7494 2004-12-27  Martin Baulig  <martin@ximian.com>
7495
7496         * mini.c (mini_get_method): New static method; call
7497         mono_get_method_full() and mono_get_inflated_method().
7498         (mono_method_to_ir): Use mini_get_method() instead of
7499         mono_get_method_full(). 
7500
7501 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
7502
7503         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
7504
7505 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
7506
7507         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
7508
7509         * inssel-amd64.brg: Add some optimization rules.
7510
7511 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
7512
7513         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
7514         standard not GC'd stuff is fine.
7515
7516 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
7517
7518         * aot.c: Rework the AOT file format to get rid of most of the global
7519         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
7520
7521         * mini.h: Bump AOT file format version.
7522         
7523 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
7524
7525         * mini.h: Bump AOT file format version.
7526
7527         * aot.c (mono_aot_is_got_entry): New function to determine if an 
7528         address is inside a GOT.
7529
7530         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
7531
7532         * cpu-pentium.md: Increase the maximum size of some instructions which
7533         might involve a got access.
7534         
7535         * mini.c (get_method_from_ip): Another debug helper function.
7536
7537         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
7538         when got var accesses are created during the decompose phase.
7539
7540         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
7541
7542         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
7543         argument mini_compile_method and to MonoCompile, and use this to
7544         determine whenever a given method is compiled for AOT. This allows the
7545         other methods compiled during AOT compilation to be free of AOT stuff,
7546         so the backends does not need to add special support for them by
7547         creating a fake GOT etc.
7548
7549         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
7550         longer needed.
7551
7552 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
7553
7554         * mini.c (mono_method_to_ir): It turns out that some of the
7555         x-appdomain wrappers are lax with types, so just ignore this for
7556         all wrappers.
7557
7558         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
7559         at the vtable->klass. If it is non-shared code we can just use the
7560         vtable.
7561
7562 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
7563
7564         * mini-ppc.c: access MonoDomain from tls, too.
7565
7566 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
7567
7568         * declsec.c: Removed unused variable (and related warning ;-)
7569
7570 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
7571
7572         * iltests.il: New test for LDELEMA on an array of ref types.
7573
7574         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
7575         all ldelema's on reftypes.
7576         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
7577         it was the wrong place to put it.
7578
7579         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
7580         register to pop to make this cleaner, at the request of Paolo.
7581
7582 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
7583
7584         * mini-ops.h (OP_GETHASHCODE): New op.
7585
7586         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
7587
7588         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
7589         operation.
7590
7591         For a microbenchmark, this reduces the cost of Hashtable.get_Item
7592         by 25%.
7593         
7594         * mini-x86.c (mono_arch_output_basic_block): Rather than
7595
7596         add ebp, 4
7597
7598         Emit
7599
7600         pop edx
7601
7602         The first is 3 bytes while the second is 1. This saves 36 kb on
7603         mscorlib, quite a big saving. When bootstraping mcs, I was able to
7604         see a small boost because of icache locality.
7605
7606         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
7607
7608 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
7609
7610         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
7611         started code sharing with the generic code.
7612
7613 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
7614
7615         * mini-ppc.c, cpu-g4.md: added code for direct access to
7616         tls data slots.
7617
7618 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
7619
7620         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
7621          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
7622         to OP_TLS_GET.
7623
7624 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
7625
7626         * declsec.c|h: Added functions to cache the declarative stack modifiers
7627         in MonoJitInfo and to create a security frame from a MonoJitInfo 
7628         structure.
7629         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
7630         created. Register internal calls for System.Security.SecurityFrame::
7631         _GetSecurityFrame and _GetSecurityStack.
7632         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
7633         the definitions for the new stack walk/callback mechanism.
7634         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
7635         first security frame for LinkDemands and InheritanceDemands) and
7636         GetSecurityStack for Demands. Both use the new mono_walk_stack code
7637         from lupus.
7638         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
7639         walk initialization (lupus).
7640
7641 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
7642
7643         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
7644         idiom.
7645         (handle_loaded_temps): Do not create a temporary variable for
7646         things that we know are temps. They will never be modified.
7647         (mono_spill_call): Set MONO_INST_IS_TEMP
7648         (mono_emulate_opcode): ditto
7649         (emit_tree): ditto
7650         (mono_method_to_ir.CEE_DUP): ditto
7651
7652 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
7653
7654         * mini.c (type_to_eval_stack_type): Make this handle the void type
7655         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
7656         (emit_tree): use ip_in_bb to special case some common idioms
7657         Update all callers to pass in the IP.
7658         (mono_method_to_ir): Make CEE_CALL* do the above as well.
7659
7660         This gives us a nice 2% speedup in mcs bootstrap.
7661
7662         * mini-x86.c (peephole_pass): Peephole pass to make
7663         mov  [foo], eax
7664         push [foo]
7665
7666         into
7667
7668         mov [foo], eax
7669         push eax
7670
7671         * mini.c (ip_in_bb): new method.
7672         (mono_method_to_ir): use this method rather than doing the hash
7673         lookup ourselves.
7674
7675         * linear-scan.c (mono_linear_scan): When expiring actives, you
7676         don't need to keep around variables that expire on this
7677         instruction. This makes it so that:
7678              a = b + 1
7679         will turn into:
7680              store (ebx add (ebx, 1))
7681         which will become
7682              add ebx, 1
7683
7684 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
7685
7686         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
7687         combination to avoid doing two copies. Fix up problems with previous
7688         patch.
7689
7690         * mini.c: Fix 64 bit warnings.
7691
7692         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
7693
7694 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
7695
7696         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
7697         changes from the x86 code.
7698
7699         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
7700
7701 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
7702
7703         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
7704         throwing code to reduce its size, unify the AOT and non-aot code and 
7705         get rid of relocations in the AOT case.
7706
7707         * mini-x86.h mini.c exceptions-x86.c 
7708         (mono_arch_get_throw_corlib_exception): New arch specific function to 
7709         raise corlib exceptions which doesn't require relocations in the 
7710         caller.
7711
7712         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
7713
7714 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
7715
7716         * mini.c (mono_emit_method_call): Only allocate the got var when it is
7717         needed.
7718
7719         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
7720         in the AOT case.
7721
7722 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7723
7724         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
7725         with add function when used from Inc/dec atomic 
7726         functions. Re-enabled optimization on x86.
7727         * mini-ops.h: renamed atomic_add functions to
7728         allow _add to match the Interlocked::Add and
7729         _add_next to match Interlocked::Inc/Dec.
7730
7731 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
7732
7733         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
7734         linking of BBs to the end BB, and enabled SSAPRE also with
7735         consprop and copyprop (which was prevented by that bug).
7736
7737 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7738
7739         * mini-x86.c: disabling the Interlocked optimizing code. 
7740
7741 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7742
7743         * aot.c (load_aot_module): Move reading of got_addr after the AOT
7744         file version check.
7745         
7746 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7747
7748         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
7749         interlocked optimization due lack of support on x86, rewrote 
7750         exchange to take into account that base may be in eax.
7751         
7752         xsp works again; activated Interlocked optimizing code.
7753         
7754 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7755
7756         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7757
7758 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
7759
7760         * mini-ops.h: Add new opcodes.
7761
7762         * mini.h: Add new patch types. Add got_var to MonoCompile.
7763
7764         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
7765         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
7766         make it work with all kinds of patchable code.
7767
7768         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
7769         address of the GOT, and referencing entries in the GOT.
7770
7771         * mini.c: Add code to load the GOT address if needed by an opcode.
7772
7773         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
7774         independent AOT code on the x86 using an elf-style Global Offset Table.
7775
7776 2004-12-14  Raja R Harinath  <rharinath@novell.com>
7777
7778         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
7779
7780 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7781
7782         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
7783         when running xsp.
7784
7785 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
7786
7787         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
7788         of Interlocked:Increment/Decrement/Add as inline ops.
7789         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
7790
7791 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
7792
7793         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
7794         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
7795
7796 2004-12-12  Duncan Mak  <duncan@ximian.com>
7797
7798         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
7799         again. `patch_info->table_size' is no longer valid after Zoltan's
7800         commit #37636.
7801
7802 2004-12-12  Martin Baulig  <martin@ximian.com>
7803
7804         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
7805         if we are the "real" method, ie. not an inlined method inside it.
7806
7807 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
7808
7809         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
7810         before we look in the special fields table. This fixes
7811         ../tests/thread-static-init.cs.
7812
7813 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7814
7815         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
7816         for Array get_Rank and get_Length. Fixes bug #70465.
7817
7818 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
7819
7820         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
7821         separate structure to reduce the size of MonoJumpInfo.
7822
7823 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
7824
7825         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
7826
7827 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
7828
7829         * mini.c (mini_get_inst_for_method): Changed to allow ports
7830         to return a MonoInst instead of opcode 
7831         (renamed mini_get_opcode_for_method to better reflect the new functionality)
7832         
7833         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
7834         Allow ports to return a created MonoInst instead of op-code, will enable
7835         new optimizations.
7836         (renamed mini_get_opcode_for_method to better reflected the functionality)
7837
7838 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
7839
7840         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
7841
7842 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7843
7844         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
7845         Fixes #69985.
7846
7847 2004-12-08  Martin Baulig  <martin@ximian.com>
7848
7849         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
7850         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
7851
7852 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7853
7854         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
7855         correctly.
7856
7857         * exceptions.cs: Disable some tests which depend on properties of x86 fp
7858         arithmetic.
7859
7860 2004-12-08  Raja R Harinath  <rharinath@novell.com>
7861
7862         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
7863
7864 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
7865
7866         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
7867         bug introduced by the previous patch.
7868
7869 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7870
7871         * mini-ppc.c, objectc.cs: handle large structs passed by value
7872         (fixes bug #69972).
7873
7874 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
7875
7876         * mini-ppc.c: OP_ARGLIST implementation from
7877         Geoff Norton  <gnorton@customerdna.com>.
7878
7879 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
7880
7881         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
7882         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
7883
7884 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7885
7886         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
7887
7888 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7889
7890         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
7891         support.
7892
7893 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
7894
7895         * mini-sparc.c: Zero out localled-ed memory.
7896
7897         * iltests.il: Add tests for zeroing out localloc-ed memory.
7898
7899 2004-12-04  Martin Baulig  <martin@ximian.com>
7900
7901         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
7902         mono_method_get_signature_full().       
7903
7904 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
7905
7906         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
7907         and some utility functions (always for SSAPRE), integrated SSAPRE.
7908         * mini.h: Likewise.
7909         * driver.c: Added ssapre option.
7910         * ssa.c: Small fix on OP_ARG handling.
7911         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
7912         * Makefile.am: Likewise.
7913
7914 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
7915
7916         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
7917         now in the xp code.
7918
7919         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
7920         icall.
7921
7922 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7923
7924         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
7925         
7926         * cpu-s390.md : Increase instruction length of oparglist.
7927
7928         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
7929
7930 2004-11-30  Martin Baulig  <martin@ximian.com>
7931
7932         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
7933         virtual generic methods.  We call a special helper_compile_generic_method()
7934         icall to retrieve the method from the vtable, inflate and compile
7935         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
7936
7937         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
7938
7939 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
7940
7941         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
7942
7943 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
7944
7945         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
7946         Fixes #69929.
7947
7948 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
7949
7950         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
7951         platforms with PIC aot.
7952
7953 2004-11-28  Martin Baulig  <martin@ximian.com>
7954
7955         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
7956         Fixes gen-112.cs.
7957
7958 2004-11-28  Martin Baulig  <martin@ximian.com>
7959
7960         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
7961         the result of mono_type_get_underlying_type() to check whether
7962         we're byref.
7963
7964 2004-11-26  Martin Baulig  <martin@ximian.com>
7965
7966         * mini.c
7967         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
7968         in the g_assert().
7969
7970 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
7971
7972         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
7973         the same way as the other arguments so they won't get clobbered.
7974
7975         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
7976         calls through R11 since it is clobbered by the trampoline code.
7977
7978 2004-11-26  Raja R Harinath  <rharinath@novell.com>
7979
7980         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
7981         pick up in-tree mscorlib.dll.
7982
7983 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
7984
7985         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
7986
7987         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
7988         runtime data/code are now stored in a table similar to the GOT in ELF. 
7989         This allows the code itself to be position independent.
7990
7991         * aot.c: Fix loading of referenced assemblies after the lazy assembly
7992         loading changes.
7993
7994         * aot.c: Attach ELF type (object/function) directives to all global
7995         symbols.
7996
7997         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
7998
7999         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
8000
8001         * mini-amd64.h: Turn on PIC AOT code.
8002
8003         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
8004         returning the offset within an OP_AOTCONST instruction where the GOT
8005         offset needs to be added.
8006
8007         * mini.h: Bump AOT file format version.
8008
8009 2004-11-25  Martin Baulig  <martin@ximian.com>
8010
8011         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
8012         uninflated generic methods.
8013
8014 2004-11-25  Martin Baulig  <martin@ximian.com>
8015
8016         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
8017
8018 2004-11-24  Martin Baulig  <martin@ximian.com>
8019
8020         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
8021         original klass (this only applies for generic instances).
8022
8023 2004-11-24  Martin Baulig  <martin@ximian.com>
8024
8025         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
8026         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
8027         that array).
8028
8029 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
8030
8031         * mini.c (mono_method_to_ir): Disable inlining for methods containing
8032         localloc. Fixes #69678.
8033
8034         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
8035         
8036 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
8037
8038         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
8039         used SSE registers on pinvoke calls. Fixes #69774.
8040
8041 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
8042
8043         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
8044         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
8045
8046 2004-11-23  Raja R Harinath  <rharinath@novell.com>
8047
8048         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
8049         Refer directly to the mcs/ tree.
8050
8051 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8052
8053         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
8054         Check if a trampoline for a synchronized method is required. 
8055
8056 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
8057
8058         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
8059         with localloc if needed. Throe arithmetric exception in
8060         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
8061         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
8062
8063 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
8064
8065         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
8066         types before switching on type.  Fixes #69622.
8067
8068 2004-11-19  Raja R Harinath  <rharinath@novell.com>
8069
8070         * Makefile.am (check-local): New.  Integrate into 'make check'.
8071         (MCS,RUNTIME): Define using in-tree mono and mcs.
8072         (ILASM): New.
8073         (%.exe): Use $(ILASM).
8074
8075 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
8076
8077         * mini-ppc.c: adjust initial prolog size (bug #69691).
8078
8079 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
8080
8081         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
8082         #69664.
8083
8084 2004-11-17  Raja R Harinath  <rharinath@novell.com>
8085
8086         * Makefile.am (clean-local): Rename from 'clean'.
8087
8088 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8089
8090         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
8091         to mono_arch_is_int_overflow. 
8092         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
8093         SIGFPE events.
8094
8095 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
8096
8097         * declsec.c|h: New files to support declarative security attributes.
8098         Added function to check if a method has (applicable) security.
8099         * mini.c|h: Add check for declarative security attributes in
8100         mono_method_check_inlining.
8101         * Makefile.am: Added declsec.c and declsec.h to the build.
8102
8103 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
8104
8105         * mini.c, mini.h: update to keep dynamic code info per-domain.
8106
8107 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
8108
8109         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
8110         (mini_init): Get rid of it from here too.
8111
8112 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
8113
8114         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
8115         implemented OP_RETHROW (patch by Geoff Norton
8116         <gnorton@customerdna.com>).
8117
8118 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
8119
8120         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
8121         between appdomains.  Fixes appdomain-unload on PPC.
8122
8123 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
8124
8125         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
8126         mini-exceptions.c: handle the new wrapper types.
8127         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
8128         token value as a MonoClass* when compiling a wrapper.
8129         mono_jit_create_remoting_trampoline now takes an additional
8130         MonoRemotingTarget parameter.
8131         
8132 2004-11-10  Martin Baulig  <martin@localhost>
8133
8134         * mini.c (mono_method_to_ir): Use `generic_container->context'
8135         rather than creating a new one.
8136
8137 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8138
8139         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
8140
8141         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
8142
8143 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
8144
8145         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
8146         the experimental aot cache stuff.
8147
8148 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
8149
8150         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
8151         mini-exceptions.c: update to exception clause structure changes.
8152
8153 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
8154
8155         * exceptions-x86.c (throw_exception): Fix warnings.
8156
8157         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
8158         for OP_RETHROW.
8159
8160 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
8161
8162         * exceptions-sparc.c (get_throw_exception): Really fix this.
8163
8164 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
8165
8166         * tramp-*.c: we no longer support icalls without wrappers, so
8167         a bit of code can be removed here
8168
8169 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
8170
8171         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
8172         patch.
8173
8174         * cpu-sparc.md: Add op_rethrow.
8175
8176         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
8177
8178         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
8179
8180         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
8181         * mini-ops.h: Add OP_RETHROW.
8182
8183         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
8184
8185         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
8186
8187 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
8188         
8189         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
8190         Makes the output much easier to read
8191
8192 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
8193
8194         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
8195         prevents another huge leak when compiling with ssa. Secondly, the
8196         performance of doing this rather than freeing the lists is much
8197         better. GList does a lock every time you allocate a list link,
8198         so that it can use a memory pool. So, it is better to just use
8199         a memory pool of our own.
8200         
8201         * ssa.c, linear-scan.c: replace g_list_remove_link with
8202         g_list_delete.  The remove one does not free the GList, so we were
8203         leaking memory. On -O=all --compile-all with corlib, this cut down
8204         3 MB of allocations.
8205
8206 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
8207
8208         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
8209
8210         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
8211
8212         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
8213         into a new function mono_create_jit_trampoline ().
8214
8215 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
8216
8217         * trace.c (get_spec): Allow tracing of classes without a namespace.
8218
8219 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
8220
8221         * mini.c: Fix pointer overwrite in mini_method_compile.
8222
8223 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
8224
8225         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
8226         The darwin ABI needs some special handling for 1 and 2 byte structs
8227         Lets use lbz/lhz instead of lwz everywhere.
8228         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
8229         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
8230         Use stb/sth for the former, and put the latter always on stack instead of in
8231         argument registers.
8232
8233 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
8234
8235         * trace.c (is_filenamechar): Add '_'.
8236
8237 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
8238
8239         * mini-s390.c: Fix prolog length to allow for large trace requirements.
8240
8241         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
8242
8243 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
8244
8245         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
8246         depends on libmonogc. Fixes #68805.
8247
8248 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
8249
8250         * mini.c (mono_jit_free_method): Provide extra information for
8251         this error.  Currently this leaks, but will be turned into a
8252         developer option in the future.
8253
8254 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
8255
8256         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
8257
8258 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
8259
8260         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
8261         boundary. Fixes reading of PATCH_INFO_R4 and R8.
8262         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
8263
8264 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
8265
8266         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
8267         trampolines for AOT code.
8268
8269 2004-10-22    <vargaz@freemail.hu>
8270
8271         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
8272         constructed types. Fixes #68136.
8273
8274 2004-10-21  Martin Baulig  <martin@ximian.com>
8275
8276         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
8277         if it returns true, unwind the stack to the call instruction.
8278
8279 2004-10-21    <vargaz@freemail.hu>
8280
8281         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
8282
8283         * mini.h: Bump AOT version number.
8284
8285         * objects.cs: Add another test for unbox trampolines.
8286
8287         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
8288         valuetype methods.
8289
8290 2004-10-20    <vargaz@freemail.hu>
8291
8292         * driver.c: Add SHARED to the set of optimizations tested.
8293
8294         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
8295
8296         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
8297         used by CEE_NEWARR.
8298
8299         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
8300
8301 2004-10-20  Martin Baulig  <martin@ximian.com>
8302
8303         * mini-exceptions.c (mono_handle_exception): Call
8304         mono_debugger_handle_exception() to tell the debugger about
8305         catch/finally clauses.
8306
8307 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
8308
8309         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
8310
8311         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
8312         #68447.
8313
8314 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
8315
8316         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
8317         methods as their native size, fixed bug #57543, #57545.
8318         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
8319         This saves a temporary register and mullw call down into 1 (minor perf
8320         increase for cases like sum = sum * 5;  This use to translate into:
8321             li r11,5
8322             mullw r28,r28,r11
8323         It now translates to
8324             mulli r28,r28,5
8325
8326 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
8327
8328         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
8329         #68388.
8330
8331 2004-10-11  Martin Baulig  <martin@ximian.com>
8332
8333         * mini.c (mono_method_to_ir): If we're a generic method, get the
8334         MonoGenericContainer from our MonoMethodNormal and create a
8335         MonoGenericContext from it.
8336
8337 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
8338
8339         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
8340
8341         * basic-long.cs: Add test for checked i8->i2 cast.
8342
8343 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8344
8345         * inssel-ppc.brg: added a couple of speedup rules.
8346
8347 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
8348
8349         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
8350         to speed up rebuilds.
8351
8352 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8353
8354         * mini-s390.c: Minor fix to OP_OR_IMM.
8355
8356 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
8357
8358         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
8359         better. Fixes appdomain-unload.exe on sparc.
8360
8361 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
8362
8363         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
8364         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
8365         see bug 67324.
8366
8367 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
8368
8369         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
8370
8371 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
8372
8373         * mini.c: Always generate a field read/write wrapper for members
8374         of the class MarshalByRefObject since the actual instance could
8375         be a CBO.
8376
8377 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
8378
8379         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
8380
8381 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
8382
8383         * driver.c mini.h trace.c: Move the setting of the main assembly into
8384         a separate function called mono_trace_set_assembly () and call it after
8385         actually loading the main assembly. Fixes #66872.
8386
8387 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
8388
8389         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
8390         using the code manager.
8391
8392 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
8393
8394         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
8395
8396 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
8397
8398         * cpu-amd64.md: Fix bug in previous patch.
8399         
8400         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
8401         #66650.
8402
8403 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
8404
8405         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
8406         mini-exceptions.c: updates for changed stack walk interface.
8407
8408 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8409
8410         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
8411
8412 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
8413
8414         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
8415
8416 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
8417
8418         * driver.c (mini_regression_list): Do not call mono_assembly_close 
8419         since assemblies can't be unloaded.
8420         
8421 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
8422
8423         * cpu-amd64.md: Fix more instruction lengths.
8424
8425         * cpu-amd64.md: Fix lengths of some instructions.
8426
8427 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
8428
8429         * inssel.brg: Make the array ldelema check aot friendly.
8430
8431 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
8432
8433         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
8434
8435         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
8436
8437 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
8438
8439         * mini-x86.c: Fix build.
8440
8441         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
8442         mono_type_get_underlying_type () helper function to simplify code.
8443         
8444 2004-09-09  Martin Baulig  <martin@ximian.com>
8445
8446         * mini-amd64.c: Don't access `type->data.klass' directly, call
8447         mono_class_from_mono_type() instead since the type may be a
8448         generic instance.
8449
8450 2004-09-09  Martin Baulig  <martin@ximian.com>
8451
8452         * mini-amd64.c (get_call_info): Fix support for generic instances.
8453         (add_valuetype): Use mono_class_from_mono_type() to get the class
8454         since we can be a generic instance.
8455
8456 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
8457
8458         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
8459
8460 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
8461
8462         * liveness.c: reset spill costs on each scan: bug 62107
8463
8464 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
8465
8466         * exceptions-sparc.c (mono_arch_find_jit_info): remove
8467         unnecessary line that doesn't compile
8468
8469 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
8470
8471         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
8472         trampolines, make them call an error function so people can fix their
8473         code.
8474
8475 2004-09-06  Martin Baulig  <martin@ximian.com>
8476
8477         * mini.c (mono_method_to_ir): When initializing locals, handle a
8478         generic instances like a valuetype if it's a valuetype and like a
8479         class if it's a class.
8480
8481 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
8482
8483         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
8484         stack. Fixes #64674.
8485
8486         * exceptions.cs: Add test for unwinding of call arguments.
8487
8488 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
8489
8490         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
8491         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
8492         set the carry/borrow flag). The sparc and s390 implementations
8493         can now use optimized versions (and simplify the code). ppc bugfixes.
8494
8495 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
8496
8497         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
8498
8499 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
8500
8501         * inssel-amd64.brg: Remove leftover 32 bit rule.
8502
8503         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
8504
8505 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
8506
8507         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
8508         mono_arch_find_jit_info functions into a new function. Fix a memory
8509         leak.
8510
8511         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
8512         refactored code.
8513         
8514 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
8515
8516         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
8517         as well.
8518         
8519         * exceptions.cs: Add array size tests.
8520
8521         * mini.c: Allocate a separate icall wrapper for each arity of 
8522         mono_array_new_va. Fixes #59509.
8523
8524         * exceptions.cs: Add testcase for 64578.
8525
8526         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
8527
8528         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
8529         
8530 2004-09-02  Martin Baulig  <martin@ximian.com>
8531
8532         * mini.c (mono_method_to_ir): When initializing the locals, call
8533         handle_initobj() on the generic instance itself, not its
8534         underlying type.
8535
8536 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
8537
8538         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
8539         MonoJitInfo for dynamic methods.
8540
8541         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
8542
8543         * mini.c: Add support for freeing JIT data for dynamic methods.
8544         
8545 2004-09-01  Martin Baulig  <martin@ximian.com>
8546
8547         * mini-x86.c (is_regsize_var): Added support for generic
8548         instances.
8549         (mono_arch_emit_prolog): Make this compile again, use
8550         `x86_push_imm_template (code)'.
8551
8552 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
8553
8554         * mini-x86.c: make all push_imm instructions that get
8555         patched always emit the long form
8556
8557 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
8558
8559         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
8560         in a per-domain hash.
8561
8562         * mini-amd64.c (merge_argument_class_from_type): Handle generic
8563         types.
8564
8565 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
8566
8567         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
8568         work.
8569         
8570         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
8571         work.
8572
8573         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
8574         Beginnings of SSE2 support.
8575
8576         * exceptions.cs: Add more tests for checked int<->uint casts.
8577
8578 2004-08-28  Martin Baulig  <martin@ximian.com>
8579
8580         * mini-x86.c (mono_arch_instrument_epilog): Added support for
8581         generic instances.
8582
8583         * mini.c
8584         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
8585         Handle generic instances recursively.
8586
8587 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
8588
8589         * iltests.il: test for conv.u8 on a constant
8590
8591 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
8592
8593         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
8594         LCONV_x4 (shrun_32 (membase)).
8595
8596 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
8597
8598         * inssel-x86.brg: c&p rules for push/setret of long
8599
8600 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
8601
8602         * inssel-x86.brg: c&p rules for compare (base, regvar) and
8603         compare (regvar, base)
8604
8605         * inssel-x86.brg: more burg love
8606
8607         * inssel.brg: more cleanup
8608
8609         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
8610
8611 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
8612
8613         * basic-long.cs, basic-calls.cs: new tests for optimization.
8614
8615 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
8616
8617         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
8618         patch.
8619
8620 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
8621
8622         * mini-amd64.c (read_tls_offset_from_method): Add another case.
8623         
8624 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
8625
8626         * inssel.brg (mini_emit_memcpy): use 
8627         NO_UNALIGNED_ACCESS to disable memcpy optimization
8628
8629 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
8630
8631         * mini-amd64.c: Handle generic types in various places.
8632
8633         * mini.c (mono_method_to_ir): Handle generic types in init locals.
8634
8635 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
8636
8637         * mini.c (handle_box): Fix warning.
8638
8639         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
8640
8641         * mini-amd64.h: Enable the emit_state optimization.
8642
8643         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
8644
8645         * mini-amd64.c: Add some new 64 bit peephole opts.
8646
8647         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
8648
8649         * cpu-amd64.md: sreg1 of div instructions must be %rax.
8650
8651         * mini-amd64.c: Register allocator fixes.
8652
8653         * mini.c: Add an optimization to emit_state to avoid allocation of new
8654         registers on some platforms.
8655
8656 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
8657
8658         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
8659
8660         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
8661         allocation. Fixes #63085.
8662
8663         * basic-long.cs: Add new regression test.
8664
8665         * mini-amd64.c: Register allocator improvements.
8666
8667 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
8668
8669         * mini-amd64.c (read_tls_offset_from_method): Add another code
8670         sequence.
8671
8672         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
8673         instruction sequence for nullifying class init trampolines.
8674
8675         * objects.cs: Add new regalloc test.
8676
8677         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
8678
8679 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
8680
8681         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
8682         
8683         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
8684         arguments.
8685
8686         * driver.c: Fix profiling after TLS changes.
8687         
8688         * driver.c (mono_main): Set mono_stats.enabled if needed.
8689
8690         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
8691         CEE_BOX.
8692
8693 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
8694
8695         * mini-x86.c: use a 1 op rather than a 2 op tls access
8696         instruction -> faster.
8697
8698 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
8699
8700         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
8701         x86 backend.
8702
8703 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
8704
8705         * exceptions-sparc.c (throw_exception): fix typo
8706
8707 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
8708
8709         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
8710         set tree->dreg correctly with tls. Allow any
8711         register to be used.
8712
8713         * mini-x86.c (read_tls_offset_from_method): add new code
8714         generation pattern seen with GCC.
8715
8716
8717 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
8718
8719         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
8720         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
8721         exceptions-sparc.c: fix some performance issues in exception
8722         handling and setting of the stack trace for exceptions that were
8723         already thrown.
8724
8725 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
8726
8727         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
8728         x86 backend.
8729         
8730         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
8731         registers.
8732
8733 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
8734
8735         This patch inlines tls access, when possible.
8736         
8737         * mini.h: new arch functions for TLS intrinsics.
8738         All platforms updated with a stub.
8739
8740         * mini.c: use the new intrinsics
8741
8742         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
8743         arch specific intrinsic for tls variables
8744
8745 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
8746
8747         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
8748         under windows.
8749
8750 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8751
8752         * mini.c: thread local allocation
8753
8754 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
8755
8756         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
8757
8758         * Makefile.am: Link against the static version of libmonogc.
8759         
8760         * Makefile.am: Link the static versions of the convenience libraries
8761         into the mono executable.
8762
8763         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
8764
8765 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
8766
8767         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
8768         on integer overflow.
8769
8770         * mini-amd64.c: Reorganize function call code.
8771
8772         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
8773
8774 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8775
8776         * inssel-x86.brg: use xor eax,eax.
8777         
8778         * basic.cs: new tests
8779
8780 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8781
8782         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
8783         in exception throwing code.
8784         
8785 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8786
8787         * inssel-x86.brg: use xor esi,esi.
8788
8789 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8790
8791         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
8792         can trace methods compiled during mini_init () too.
8793
8794         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
8795         CEE_CONV_U4.
8796
8797 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8798
8799         * Makefile.am: static link on x86 (r=zoltan)
8800
8801 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8802
8803         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
8804         code since it causes some programs to fail.
8805
8806 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
8807
8808         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
8809
8810 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8811
8812         * mini.c: ovfops_op_map - add STACK_OBJ case for
8813         CONV_I 
8814         * basic.cs: add test_0_pin_string as test
8815         case for above.
8816
8817 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8818
8819         * Makefile.am: build C# if srcdir != builddir
8820
8821 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
8822
8823         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
8824         fall-through blocks.
8825
8826 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8827
8828         * driver.c: enable loop by default again and include abcrem in -O=all.
8829
8830 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
8831
8832         * iltests.il: Add some localloc tests.
8833
8834         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
8835
8836         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
8837         Fixes #62574.
8838
8839         * inssel-amd64.brg: Add some optimizations.
8840
8841         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
8842         for gcc-3.4.
8843
8844         * Makefile.am: Statically link mono against libmono on AMD64.
8845         
8846         * mini-amd64.c inssel-amd64.brg: Optimizations.
8847
8848 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
8849
8850         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
8851
8852         * tramp-amd64.c: Patch calling code in trampolines.
8853
8854 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
8855
8856         * mini-amd64.c: pinvoke struct passing fixes.
8857
8858 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
8859
8860         * mini-sparc.c: redo change, make mono_arch_cpu_init call
8861         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
8862
8863 2004-08-05  Duncan Mak  <duncan@ximian.com>
8864
8865         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
8866         CEE_LDELEM_ANY.
8867
8868 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8869
8870         * mini-amd64.c (emit_move_return_value): Move return value for normal
8871         calls too.
8872
8873 2004-08-05  Martin Baulig  <martin@ximian.com>
8874
8875         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
8876         `type->type'; just modify `type' itself when dealing with enums
8877         and generic instances.
8878         (check_call_signature): Make `simple_type' a `MonoType *'.
8879
8880 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8881
8882         * mini.c: Use OP_PADD to add offsets to addresses.
8883
8884         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
8885
8886 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
8887
8888         * mini-sparc.c (mono_arch_emit_epilog): fix check
8889         for folding last op into restore instruction
8890
8891 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8892
8893         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
8894         helper methods using the code manager.
8895         
8896         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
8897
8898         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
8899
8900 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8901         
8902         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
8903           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
8904
8905         * mini-s390.c: fix tail processing
8906
8907 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
8908
8909         * mini-ppc.c: mul.ovf.un exception name fix.
8910
8911 2004-08-03  Martin Baulig  <martin@ximian.com>
8912
8913         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
8914         instances; before jumping to `handle_enum', also modify `ptype'.
8915
8916 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
8917
8918         * cpu-sparc.md: fcall maximal length too small.
8919
8920 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
8921
8922         * mini-amd64.c mini.h: Add initial support for passing/returning 
8923         structures to/from pinvoked methods.
8924
8925 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
8926
8927         * mini-ppc.c: reg allocator fix.
8928
8929 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
8930
8931         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
8932
8933         * inssel.brg: Optimize memset on 64 bit machines.
8934
8935         * mini-amd64.c: Fix some vararg cases.
8936
8937 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8938
8939         * mini-s390.c: Corrected macro in emit_float_to_int
8940
8941         * s390-abi.cs: Tests to exercise the s390 ABI
8942
8943 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8944
8945         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
8946         caller saved regs.
8947
8948         * basic.cs: Add a test for add.ovf.un.
8949
8950 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
8951
8952         * mini-sparc.c: add case for OP_IDIV_UN
8953
8954 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8955
8956         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
8957         
8958         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
8959
8960 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
8961
8962         * basic.cs: regression tests.
8963
8964         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
8965         regressions.
8966
8967 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8968
8969         * basic.cs: Add a new test.
8970
8971         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
8972         and AOT. Various fixes and optimizations.
8973
8974         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
8975
8976 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
8977
8978         * mini-ppc.c: make sure temp regs are not used for global reg
8979         allocation.
8980
8981 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
8982
8983         * cpu-sparc.md: conv_i8 fix for 64bits
8984
8985         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
8986
8987 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
8988         
8989         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
8990         add opcode for cmp BYTE PTR [eax], imm.
8991
8992         * inssel.brg: Make memcpy and memset takes bases.
8993
8994 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
8995
8996         * *-amd64.*: More AMD64 work.
8997         
8998 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
8999
9000         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
9001         add a compare-not-equal opcode.
9002         
9003 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
9004
9005         * mini.c: Use mono_init_from_assembly instead of mono_init.
9006         
9007 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
9008
9009         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
9010
9011         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
9012
9013         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
9014
9015         * inssel.brg: 64 bit fixes.
9016
9017         * mini.h (MonoCallInst): Add some AMD64 specific data.
9018
9019         * mini.h: Add some OP_P opcodes.
9020
9021 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
9022
9023         * basic.cs: tests for 61797 and 61740
9024
9025 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
9026
9027         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
9028         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
9029
9030 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
9031
9032         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
9033
9034         * *-amd64*.*: Ongoing AMD64 work.
9035
9036 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
9037
9038         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
9039
9040         * *-amd64*: Ongoing AMD64 work.
9041
9042         * mini-arch.h: Add AMD64 support.
9043
9044         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
9045
9046         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
9047
9048         * mini-ops.h: Add new opcodes.
9049
9050         * Makefile.am: Add AMD64 support.
9051
9052         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
9053         rules into the inssel-long*.brg files.
9054
9055         * *-amd64.*: Add beginnings of AMD64 backend.
9056
9057 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
9058
9059         * mini.c (print_dfn): commenting out the code that prints
9060         the cil. With -O=deadce, this makes -v -v crash.
9061         
9062         * cpu-pentium.md: make checkthis have a length of 2
9063
9064 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
9065
9066         * mini-sparc.h: fix implementations of __builtin
9067         functions for Sun compiler for V9.
9068
9069 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
9070
9071         * mini.c: use the new stelem.ref wrapper
9072         * exceptions.cs, arrays.cs: new stelem.ref tests
9073
9074 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
9075
9076         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
9077         new XSP should work with these changes).
9078
9079 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
9080         
9081         * inssel-{long32,x86,}.brg: trivial optimizations.
9082         
9083 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
9084
9085         * mini.c: load value when emitting box operation in
9086         constrained calls.
9087
9088 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
9089
9090         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
9091         is one byte shorter than cmp DWORD PTR [eax], 0.
9092
9093 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
9094
9095         * inssel-ppc.brg: arguments on the stack are always
9096         relative to the stack pointer (spotted by Neale Ferguson).
9097
9098 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9099
9100         * exceptions-x86.c: delay appending the method name to the trace until
9101         after mono_jit_info_table_find is called, as this gets the real
9102         MonoMethod.
9103
9104 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
9105
9106         * aot.c: register roots
9107
9108 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
9109
9110         * aot.c : I could just use PLATFORM_WIN32 flag.
9111
9112 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
9113
9114         * aot.c : Reverting the previous fix. This time it broke linux build.
9115
9116 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
9117
9118         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
9119
9120 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
9121
9122         * mini.c (handle_stack_args): Remove some more debugging code.
9123         
9124         * mini.c (handle_stack_args): Remove debug output left in by mistake.
9125
9126         * driver.c mini.h aot.c: Allow additional options to be specified with
9127         --aot and pass them to mono_compile_assembly.
9128
9129         * aot.c: Add experimental code to AOT compile all loaded assemblies
9130         on demand and save the code into a cache in the filesystem.
9131
9132         * aot.c: Add support for more wrapper methods.
9133         
9134         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
9135         58863.
9136
9137         * cpu-*.md: Remove removed opcodes.
9138
9139         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
9140         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
9141         related icalls to marshal.c.
9142
9143 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
9144
9145         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
9146
9147         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
9148
9149         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
9150
9151 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
9152         * liveness.c: If liveness is recomputated we need to reset the information
9153         for each variable. This way, if the liveness range has been narrowed
9154         by optimizations that happened after the last computation, we can return
9155         a smaller range.
9156         
9157         For example, if you have
9158         
9159         {
9160                 int i = 0;
9161                 
9162                 // Tons of code that does not affect i
9163                 
9164                 i = foo ();
9165                 ...
9166         }
9167         
9168         i = 0 is dead code and will be removed by SSA. However, when
9169         linear scan gets to the code, i will still appear to be live
9170         throughout the entire block. This prevents good register allocation.
9171
9172 2004-07-06  Martin Baulig  <martin@ximian.com>
9173
9174         * debug-mini.c (mono_debug_init_method): Allow
9175         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
9176         (mono_debug_add_icall_wrapper): New method.
9177
9178         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
9179
9180 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
9181
9182         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
9183         optimization.
9184
9185 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
9186
9187         * aot.c (mono_aot_load_method): Fix loading of debug info.
9188
9189 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
9190
9191         * aot.c: Add logging support.
9192
9193 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
9194
9195         * mini.h: Add prototype for mono_print_method_from_ip.
9196
9197         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
9198
9199         * inssel.brg: 64 bit fixes.
9200
9201         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
9202         inssel-long32.brg.
9203
9204         * Makefile.am: Add SPARC64 support.
9205
9206 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
9207
9208         * aot.c: Fix alignment problems on 32 bit platforms.
9209
9210 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
9211
9212         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
9213         SPARC64.
9214
9215         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
9216         problems.
9217
9218         * mini.h: Bump AOT file version. Some 64 bit fixes.
9219
9220 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
9221
9222         * inssel-sparc.brg: Add new rule to avoid register moves.
9223
9224         * inssel.brg: Add ldind_to_load_membase helper function.
9225
9226 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
9227
9228         * mini.c: OffsetToStringData intrinsic.
9229         
9230 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
9231
9232         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
9233
9234         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
9235         regression tests.
9236
9237         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
9238 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9239
9240         * mini.c: reinstated mono_compile_get_interface_var()
9241         on x86, too, since the change breaks the Gtk# build there as well.
9242
9243 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9244
9245         * driver.c: remove loop from the default optimizations: it seems to
9246         interact badly with some of the other options (see bug #60613).
9247
9248 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
9249
9250         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
9251         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
9252
9253 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
9254
9255         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
9256         vararg-using methods.
9257
9258 2004-06-21  Martin Baulig  <martin@ximian.com>
9259
9260         * mini/mini-exceptions.c
9261         (mono_handle_exception): Added `gpointer original_ip' argument.
9262         After calling mono_unhandled_exception(), call
9263         mono_debugger_unhandled_exception() and if that returns true,
9264         restore the context and return.
9265
9266 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
9267
9268         * mini-ppc.c: prefer the use of relative branches so
9269         they won't need to be patched in aot code (patch from Patrick Beard).
9270
9271 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
9272
9273         * aot.c: patch from Patrick Beard to make the output assembly
9274         more correct for the MacOSX assembler. Small tweak to
9275         generate sane images on Linux/PPC, too.
9276
9277 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9278
9279         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
9280         case until bug #59509 is fixed (shows up in #60332).
9281
9282 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9283
9284         * mini.c: make sure the needed wrappers are compiled, too, with
9285         precomp.
9286
9287 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
9288
9289         * driver.c: remove NPTL reference in --version output.
9290
9291 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9292
9293         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
9294         generate valid assembly for the Mach-O assembler.
9295
9296 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
9297
9298         * driver.c: don't include abcrem in the all optimization specifier
9299         since it slows down jit compilation too much for now.
9300
9301 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
9302
9303         * mini.c: use BIGMUL only if both operands have the same signage.
9304         * iltests.il: Test for bug 60056. (errors related to signage in
9305         BIGMUL).
9306
9307         r=lupus.
9308
9309 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
9310
9311         * mini.c, aot.c: memory leak fixes.
9312
9313 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
9314
9315         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
9316
9317 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
9318
9319         * Makefile.am: remove the -static hack completely, it links in
9320         statically glib as well.
9321
9322 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
9323
9324         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
9325         * exceptions.cs: make it compile with new mcs/csc.
9326
9327 2004-06-03 Massimiliano Mantione <massi@ximian.com>
9328         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
9329         and added relevant test case.
9330
9331 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
9332
9333         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
9334         regressions in gtk-sharp.
9335
9336 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
9337
9338         * exceptions.cs: New regression tests.
9339
9340         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
9341
9342 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
9343
9344         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
9345
9346 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
9347
9348         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
9349
9350         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
9351
9352 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
9353
9354         * mini.c (mono_jit_runtime_invoke): Init class in this
9355         method instead of trusting mono_jit_compile_method to
9356         do the work (because wrappers can be in object class)
9357
9358 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
9359
9360         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
9361
9362         * basic-long.cs: New regression test.
9363
9364 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
9365
9366         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
9367         and div/rem checks.
9368
9369 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
9370
9371         * Makefile.am: fix miguel's change to build mono statically against
9372         libmono (track build dependencies).
9373
9374 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
9375
9376         * cfold.c: Some glib versions do not have G_MININT32.
9377
9378 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
9379
9380         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
9381         with precision of tan, atan, sin and cos, and implemented related
9382         regressions tests (fixes bug 54467, but one new problem appeared and
9383         is not fixed yet).
9384
9385 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
9386
9387         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
9388
9389         * exceptions.cs: Add test for constant folding && division by zero.
9390
9391         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
9392         since driver.c is in libmono too, so the optimization was useless.
9393
9394         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
9395         variable to driver.c so the compiler can emit more efficient code to
9396         access them.
9397
9398 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9399
9400         * Makefile.am: don't distribute generated inssel.[ch] files.
9401
9402 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
9403
9404         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
9405         into the default appdomain. Fixes #58707.
9406
9407         * jit-icalls.c: Remove the broken approximation for truncl, doing
9408         no conversion is better.
9409
9410         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
9411         Fixes #58863.
9412
9413 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
9414
9415         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
9416         of the mcrxr instruction which is not available on some processors
9417         even if it's documented to be. Implement add and sub overflow correctly
9418         (still not complete for long unsigned). Speed up icalls a bit.
9419
9420 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
9421
9422         * mini.c (mono_jit_compile_method_with_opt): Make sure that
9423         we run .cctor in the current domain instead of target_domain.
9424         
9425         Fixes bug #58558, .cctor not being called in -O=shared.
9426
9427 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
9428
9429         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
9430
9431 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
9432
9433         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
9434         which can be done with an imm8, do it that way.
9435         (mono_arch_output_basic_block): ditto for a jmp
9436         (mono_arch_emit_prolog): Computate maximum offset of a label.
9437
9438 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
9439
9440         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
9441         now tries to allocate prefered physical reg's for virtual
9442         regs. This reduces the number of emited spills/loads with
9443         20-30% on our core assemblies.
9444
9445 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9446
9447         * jit-icalls.c: truncl() is not needed and trunc() is
9448         the correct thing to do anyway (bug #58287).
9449
9450 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
9451
9452         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
9453         if available.
9454
9455 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
9456
9457         * driver.c: enable loop optimizations by default.
9458
9459 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
9460
9461         * mini-x86.c: fix calc of max loop size when aligning loops start.
9462
9463 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
9464
9465         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
9466         the stack.
9467
9468 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
9469
9470         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
9471         should set carry.
9472
9473         * basic-long.cs: Add tests for add/subtract of immediates with carry.
9474
9475         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
9476         
9477         * mini.c (inline_method): Allways inline some wrappers even if the cost
9478         is too large. Fixes #58785.
9479
9480         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
9481         
9482 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
9483
9484         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
9485         (crichton@gimp.org). Beginning of support for sparc/linux.
9486
9487         * mini-sparc.c: Optimize retrieval of LMF address.
9488
9489 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
9490
9491         * exceptions-ppc.c:  handle alloca in methods with clauses.
9492
9493 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
9494
9495         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
9496
9497 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
9498
9499         * mini.c: Delegate most of the abort signal work to 
9500           mono_thread_request_interruption, which also handles Stop and Suspend
9501           states.
9502
9503 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
9504
9505         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
9506         supports the save/restore lmf opcodes.
9507
9508 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
9509
9510         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
9511         by gcc-3.4 as well.
9512
9513         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
9514
9515 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
9516
9517         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
9518         methods which contain array accesses.
9519
9520         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
9521         boundaries. Fixes #58537.
9522
9523         * iltests.il: Add regression test for #58537.
9524
9525 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
9526
9527         * mini-x86.c (mono_arch_local_regalloc): Last part of
9528         fix for bug #58633 (releasing register to early).
9529
9530 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
9531
9532         * basic-long.cs: Add new regression test.
9533
9534 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
9535
9536         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
9537         register too early on the chain.
9538
9539 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
9540
9541         * mini.c (create_helper_signature): Use a helper function to reduce
9542         the code which needs to be written. Also set the calling convention of
9543         icalls on windows. Fixes #57840.
9544
9545 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
9546
9547         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
9548         exceptions-ppc.c: added helper function to get the instruction address
9549         from a signal handler context.
9550
9551 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9552
9553         * helpers.c: use g_get_tmp_dir. Invokes happyness 
9554         from gonzalo.
9555
9556 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9557
9558         * helpers.c: Add new env variable to pass args to objdump.
9559         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
9560
9561 2004-05-17  Radek Doulik  <rodo@ximian.com>
9562
9563         * Makefile.am (common_sources): added abcremoval.h so it get
9564         disted and daily mono packages on go-mono.com will build again
9565
9566 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
9567
9568         * abcremoval.c: Fixed coding style, added copyright header.
9569
9570         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
9571
9572         * mini.h: Added prototype for abc removal main function.
9573
9574         * build_relations_propagation_table.pl: Added copyright header.
9575
9576 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
9577
9578         * basic-long.cs: reg test for complex ceq_long bug.
9579
9580 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
9581
9582         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
9583         reg in long and clob case (bug #58343). Fixed/added comments.
9584
9585 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
9586
9587         * mini.c (mono_jit_runtime_invoke): Follow new convention
9588         of calling the invoke method with an function pointer.
9589
9590 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
9591
9592         * ChangeLog: Fix author of memory leak patch.
9593
9594 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
9595
9596         * Makefile.am: fix make dist as well...
9597
9598
9599 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
9600
9601         * cfold.c: Made so that conversions from pointer to int4 are no-ops
9602         on archs where pointers are 4 bytes long.
9603
9604         * Makefile.am: Added abcremoval.c source file.
9605
9606         * abcremoval.c: Added abcremoval.c.
9607
9608         * abcremoval.h: Added abcremoval.h.
9609
9610         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
9611
9612         * inssel.brg: Enabled bounds check removal.
9613
9614         * mini.c: Added support for abcrem optimization.
9615
9616         * mini.h: Added abcrem optimization label.
9617
9618         * driver.c: Added support for abcrem optimization.
9619
9620         * propagated_relations_table.def: Added propagated_relations_table.def.
9621
9622 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
9623
9624         * mini.c, cfold.c: fix style.
9625
9626 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9627
9628         * mini.c: handle issue with the low-level implementation of
9629         some long opcodes (bug #54209).
9630
9631 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
9632
9633         * basic.cs: test for my new cmov stuff.
9634
9635 2004-05-13      Patrik Torstensson
9636
9637         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
9638         opt and added peephole documentation.
9639
9640 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
9641
9642         * tramp-ppc.c: rewrote the generic trampoline code.
9643
9644 2004-05-11      Patrik Torstensson
9645
9646         * mini-x86.c: optimize long shl/shr asm code (one less branch)
9647
9648 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
9649
9650         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
9651
9652         * mini.h mini.c dominators.c: Applied patch from Derek Woo
9653         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
9654
9655         * mini.c: Add new icalls for AsAny marshalling.
9656
9657 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
9658
9659         * tramp-ppc.c, mini-ppc.c: more cleanups.
9660
9661 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9662
9663         * mini.c: no warnings.
9664
9665 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9666
9667         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
9668
9669 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
9670
9671         * mini.c: In the thread abort signal handler, if the thread is in the
9672         process of being stoped, don't throw the Abort exception, just stop the
9673         thread.
9674
9675 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
9676
9677         * tramp-ppc.c: removed old code.
9678
9679 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9680
9681         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
9682         do some simple speed optimizations on ppc.
9683
9684 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
9685
9686         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
9687         and large offsets in load/store.
9688
9689 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
9690
9691         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
9692         it causes regressions.
9693
9694 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
9695
9696         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
9697         support.
9698
9699 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
9700
9701         * jit-icalls.c: remove warnings.
9702         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
9703         speedups for unsafe code.
9704
9705 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
9706
9707         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
9708
9709 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
9710
9711         * basic-calls.cs: Add new regression test.
9712
9713         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
9714         more portable.
9715
9716         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
9717
9718         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
9719         is no longer used.
9720
9721 2004-05-06      Patrik Torstensson
9722
9723         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
9724         long reg allocation in any reg (not only eax:edx) and implemented 
9725         long shl/shr ops in asm instead of helpers.
9726
9727 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
9728
9729         * mini-sparc.h: Fix warnings.
9730
9731         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
9732         stack.
9733
9734         * mini-exceptions.c (mono_handle_exception): Call the filter in a
9735         separate statement for clarity.
9736
9737         * mini-sparc.c: Update status.
9738
9739 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
9740
9741         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
9742         here.
9743
9744 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9745
9746         * inssel-ppc.brg: another small pre-release workaround:
9747         we don't do overflow detection for long_sub_un.
9748
9749 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
9752         (also works around a weird ppc bug: 57957).
9753
9754 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
9755
9756         * tramp-ppc.c: trampoline fixes.
9757
9758 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
9759
9760         * mini-ppc.c: fixed typos.
9761
9762 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
9763
9764         * mini-ppc.c, exceptions-ppc.c: more code saves registers
9765         at the top of the stack. Fixed typos. Use a frame registers
9766         for all the methods with exception clauses.
9767
9768 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9769
9770         * exceptions-ppc.c: restore fp registers.
9771
9772 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
9773
9774         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
9775         order from the stack top (moved the stack room to save the
9776         return value for trace after the param area). Fixed corruption
9777         in restoring registers on unwind.
9778
9779 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
9780
9781         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
9782
9783 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9784
9785         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
9786         and prolog/epilog for methods that use it. Allow
9787         enough param area room for varargs methods. Fix miguel's
9788         breakage in exception handling.
9789
9790 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9791
9792         * Makefile.am: run genmdesc only on current arch.
9793
9794 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9795
9796         * exceptions-x86.c:
9797         * mini-x86.h: fix the build on windows.
9798
9799 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
9800
9801         * 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.
9802
9803         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
9804
9805         * mini-exceptions.c: New file.
9806         
9807         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
9808         Move some parts of the x86 exception handling code to an 
9809         arch-independent file so it can be shared with other ports.
9810
9811 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
9812
9813         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
9814
9815 2004-04-26  David Waite  <mass@akuma.org>
9816
9817         * driver.c: remove comma from end of enumeration declaration
9818
9819 2004-04-26  Jackson Harper  <jackson@ximian.com>
9820
9821         * driver.c: parse config file before loading first assembly. This
9822         allows the user gac to be enabled/disabled. 
9823         
9824 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
9825
9826         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
9827         simpler mechanism: we do not care what is encoded initially
9828         (branch absolute or relative), we care about the code and its
9829         target.  I kept the old code for reference for now.
9830
9831         The new code tries first to determine if the jump is anywhere in
9832         the -/+32 absolute meg range, if it succeeds, it encodes using the
9833         absolute branch;  If not, it tried to find something in the
9834         relative range, if not, it uses the handle_thunk code. 
9835
9836 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
9837
9838         * exceptions-ppc.c: use the correct ip register on macosx.
9839
9840 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
9841
9842         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
9843
9844 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
9845
9846         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
9847         Raise exception on integer divide by zero by hand since the hw
9848         doesn't support it. Handle NaNs in FP compares.
9849
9850 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
9851
9852         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
9853         code reducing duplication between the platforms and enabled
9854         signal exception handling (on linux for now).
9855
9856 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
9857
9858         * exceptions-ppc.c: more macosx support.
9859
9860 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9861
9862         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
9863
9864 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
9865
9866         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
9867
9868 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
9869
9870         * iltests.il: more tests.
9871
9872 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9873
9874         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
9875         vars as well.
9876
9877 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
9878
9879         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
9880
9881 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9882
9883         * liveness.c: Mark variables as volatile in all basic blocks reachable
9884         from exception clauses.
9885
9886 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
9887
9888         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
9889         inlining.
9890
9891 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
9892
9893         * iltests.il, basic.cs: more tests for regalloc.
9894
9895 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9896
9897         * iltests.il: Some tests for register allocation modifications
9898         I have locally.
9899
9900 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
9901
9902         * exceptions.cs: Add regression test for bug #56782.
9903
9904         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
9905         original stack trace if an exception is rethrown. Fixes #56782. Oh,
9906         the beauty of fixing the same thing in 5 different files...
9907
9908 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
9909
9910         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
9911         methods.
9912
9913 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
9914
9915         * mini.c: Add support for STRWLPARRAY marshalling convention.
9916
9917 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
9918
9919         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
9920         to init the context to setup the regs pointer).
9921
9922 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9923
9924         * exceptions-ppc.c: more exceptions work.
9925
9926 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9927
9928         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
9929         not allowed.
9930
9931 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9932
9933         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
9934         can use the memory directly.
9935
9936         * cpu-pentium.md: Update documentation from a post from Zoltan. 
9937
9938         add x86_add_membase, x86_sub_membase, x86_mul_membase
9939
9940 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9941
9942         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
9943         GENERAL_REGS they were also hardcoded for all PPC ports.
9944
9945         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
9946
9947         Remove hard-coded limit for floating point registers, use
9948         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
9949
9950         Notice that in MacOS X calling conventions you can fit a lot more
9951         floating point values in registers, so I should update the PInvoke
9952         test to excercise the passing of floating point values on the
9953         stack (currently broken).
9954         
9955 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
9956
9957         * tramp-ppc.c (create_trampoline_code): Added
9958         JUMP_TRAMPOLINE_SIZE. 
9959         (ppc_magic_trampoline): Follow the pattern from
9960         x86_magic_trampoline: if code is set to zero, return. 
9961         (create_trampoline_code): Always pass MonoMethod to the jump
9962         trampoline, before it was passing a null.
9963         (mono_arch_create_jump_trampoline): Implement the jump stub, could
9964         share the code with mono_arch_create_jit_trampoline. 
9965
9966         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
9967         implemented.
9968         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
9969         implemented.  
9970
9971         * cpu-g4.md: Added length for jmp instruction, the worst case
9972         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
9973         for save_lmf).
9974
9975 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
9976
9977         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
9978
9979 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
9980
9981         * mini.c: Only set bblock->real_offset when adding a new bblock, and
9982         before each IL instruction.
9983
9984         * mini.c (CEE_BOX): Fix warnings.
9985
9986 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9987
9988         * mini.c: removed a few unused vars and extra whitespace.
9989
9990 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
9991
9992         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
9993         checks.
9994         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
9995         index.
9996         (OP_GETCHR): use the above
9997         (CEE_LDELEMA): use the above.
9998
9999         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
10000         version of the generic impl.
10001         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
10002         (CEE_LDELEMA): use the above.
10003
10004 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
10005
10006         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
10007         Fixes #56317.
10008
10009         * iltests.il: Added new regression test for #56317.
10010
10011 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
10012
10013         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
10014         under NetBSD. Fixes #56450.
10015
10016         * liveness.c (update_gen_kill_set): Fix previous patch.
10017
10018 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10019
10020         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
10021
10022 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
10023
10024         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
10025         ldsfld and ldsflda.
10026
10027         * inssel-sparc.brg: Add more optimizations.
10028
10029         * mini-sparc.c: Replace multiply/divide with shifts if possible.
10030
10031 2004-04-01  Martin Baulig  <martin@ximian.com>
10032
10033         * mini.c (handle_box): New static function; moved the
10034         implementation of CEE_BOX here.
10035         (mono_method_to_ir): Added `constrained_call' variable.
10036         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
10037         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
10038         mono_method_get_constrained() to get the method.
10039
10040 2004-04-01  Martin Baulig  <martin@ximian.com>
10041
10042         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
10043         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
10044         (mono_method_to_ir): We don't need these macros anymore since
10045         mono_class_get_full() already takes care of it. 
10046
10047 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10048
10049         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
10050         use @function (as doesn't accept #function here) and check the return
10051         value of system and stop if fails.
10052
10053 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10054
10055         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
10056
10057 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
10058
10059         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
10060
10061         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
10062
10063         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
10064         #56223.
10065
10066         * basic-long.cs: Add test for negation of Int64.MinValue.
10067
10068 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
10069
10070         * mini-sparc.c: Update status.
10071
10072         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
10073
10074         * exceptions-sparc.c: Fix return value in filters.
10075
10076         * inssel-sparc.brg: Fix register allocation in some rules.
10077
10078 2004-03-28  Martin Baulig  <martin@ximian.com>
10079
10080         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
10081         if neccessary.  
10082
10083 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
10084
10085         * mini-x86.c (mono_arch_patch_code): Fix warnings.
10086         
10087         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
10088         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
10089         remove unused conv_u4 opcode.
10090
10091         * mini-x86.c: Remove valgrind workaround since it slows down things
10092         even when mono is not run under valgrind.
10093
10094 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
10095
10096         * mini-sparc.c: Update status.
10097
10098         * inssel-sparc.brg: Add some optimizations.
10099
10100         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
10101         future delay slot filling. Add support for varargs, tail calls and JMP.
10102
10103         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
10104         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
10105
10106         * inssel.brg: Fix register allocation in OP_ARGLIST.
10107
10108         * inssel.brg: Fix warnings.
10109
10110 2004-03-25  Martin Baulig  <martin@ximian.com>
10111
10112         * mini.c (inflate_generic_field): Removed.
10113         (mini_get_method): Removed, use mono_get_method_full(),
10114         (mini_get_class): Removed, use mono_class_get_full().
10115         (mono_method_to_ir): Pass our generic context to
10116         mono_field_from_token().        
10117
10118 2004-03-25  Martin Baulig  <martin@ximian.com>
10119
10120         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
10121         of a `MonoMethod *'.
10122         (mini_get_method): Take a `MonoGenericContext *' instead
10123         of a `MonoMethod *'.
10124         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
10125         a new local variable called `generic_context' which holds the
10126         current `MonoGenericContext *'; use it to lookup things.
10127
10128 2004-03-24  Martin Baulig  <martin@ximian.com>
10129
10130         * mini.c (mini_get_class): New static method; if we're inside a
10131         generic instance, inflate the class if neccessary.
10132         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
10133
10134 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
10135
10136         * iltests.il: New regression test for #55976.
10137
10138         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
10139         #55976.
10140
10141 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
10142
10143         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
10144         output.
10145
10146 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
10147
10148         * liveness.c: Consider SSA stores as well as loads when making vars
10149         volatile.
10150
10151         * exceptions.cs: New regression tests for register allocation.
10152         
10153 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
10154
10155         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
10156         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
10157           domain lock only to protect puntual access to data structures.
10158           Added access lock for sighash, jit_icall_hash_name, 
10159           jit_icall_hash_addr and domain->code_mp.
10160
10161 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
10162
10163         * driver.c: Print SIGSEGV handling method.
10164
10165         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
10166
10167         * mini.c (setup_jit_tls_data): Handle case when this is called
10168         multiple times for a thread.
10169
10170         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
10171         is different from fbxx_un. Fixes #54303. Also use constants instead of
10172         magic numbers in a lot of places.
10173
10174 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
10175
10176         * exceptions.cs: Fix cctor test when --regression is used.
10177
10178 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
10179
10180         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
10181         for Linux/ppc.
10182
10183 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
10184
10185         * inssel-ppc.brg: fixed register assignments for some rules.
10186
10187 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
10188
10189         * exceptions.cs: Add test for exceptions in static constructors.
10190
10191         * mini.c (mono_jit_compile_method_with_out): Move the calling of
10192         static constructors outside the domain lock. Fixes #55720.
10193
10194 2004-03-17  Martin Baulig  <martin@ximian.com>
10195
10196         * mini.c (get_generic_field_inst): Removed, this'll never happen.
10197         (inflate_generic_field): Take the `MonoMethod *' instead of the
10198         `MonoClass *' and added support for generic method.
10199         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
10200         have a `field->parent->gen_params', only inflate the field if it's
10201         an open constructed type.
10202
10203 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
10204
10205         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
10206         exception object instead of the preconstructed ones.
10207
10208 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10209
10210         * mini.c: reverted changed to sigsegv_signal_handler commited
10211         accidentally in the previous patch.
10212
10213 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10214
10215         * mini.c:
10216         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
10217         running --aot with an old assembly.
10218
10219 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
10220
10221         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
10222         point values.
10223
10224         * mini-sparc.c: Add support for v9 branches with prediction.
10225
10226 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
10227
10228         * mini.c (mini_init): #warning is GNUC only
10229
10230         * mini-sparc.h: implement __builtin_frame_address
10231         and __builtin_return_address for Sun C compiler
10232
10233 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
10234
10235         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
10236
10237 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
10238
10239         * basic-calls.cs: Add test for unaligned byref long argument passing.
10240
10241         * mini-ops.h: Add sparcv9 compare and branch instructions.
10242
10243         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
10244         v9 instructions if we have a v9 cpu.
10245
10246         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
10247         registers for global allocation.
10248
10249         * exceptions-sparc.c: Fixes.
10250         
10251 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
10252
10253         * liveness.c (mono_analyze_liveness): Optimized version.
10254
10255         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
10256
10257         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
10258         sparc work.
10259
10260         * basic-float.cs basic-calls.cs: New regression tests.
10261
10262 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
10263
10264         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
10265         sigaltstack implementation.
10266
10267         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
10268         
10269         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
10270         stuff if SIGSEGV_ON_ALTSTACK is not defined.
10271
10272 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
10273
10274         * mini.c: Fix warnings.
10275         
10276         * mini.c (mono_resolve_patch_target): New function which contains the
10277         arch independent part of the patching process.
10278
10279         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
10280         patching code to a separate function.
10281
10282 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
10283
10284         * mini.c (add_signal_handler): ifdef out on Windows
10285
10286 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
10287
10288         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
10289         cpu-sparc.md: Add exception handling support + other fixes.
10290
10291         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
10292         typed GC detection in --version.
10293
10294         * basic.cs exceptions.cs: New regression tests.
10295
10296         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
10297         the arch specific code can store data during a compilation.
10298
10299         * mini-ops.h: Add OP_SETFRET.
10300
10301         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
10302         function, register a separate icall for each arity, so the icalls can
10303         get a wrapper.
10304         
10305         * mini.c (mono_print_tree): Print negative offsets in a more readable
10306         form.
10307         
10308         * mini.c: Make signal handling work on sparc.
10309         
10310         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
10311
10312         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
10313
10314         * jit-icalls.c: Emulate truncl by aintl on solaris.
10315
10316         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
10317
10318 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
10319
10320         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
10321
10322 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
10323
10324         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
10325         a MarshalByRef type, inline a method that performs the check, taking into
10326         account that the object can be a proxy. Also implemented tow new opcodes:
10327         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
10328         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
10329         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
10330
10331 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
10332
10333         * mini-ppc.c: if a relative branch displacement is too big
10334         but it points to and area reachable with an absolute branch, 
10335         avoid the thunks.
10336
10337 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
10338
10339         * mini.c: optimize small copies in cpblk.
10340
10341 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
10342
10343         * basic-calls.cs basic-float.cs: New regression tests.
10344
10345         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
10346         negative offsets from %fp. Implement localloc. Fix local register 
10347         allocation. Fix the case when the this argument needs to be saved to
10348         the stack. Implement some missing opcodes.
10349
10350 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
10351
10352         * mini.c (mini_method_compile): Reenable global regalloc in methods
10353         with exception handlers.
10354
10355         * linear-scan.c (mono_varlist_sort): Fix warning.
10356
10357         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
10358
10359         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
10360         regalloc costs.
10361
10362         * liveness.c: Make all variables uses in exception clauses volatile, to
10363         prevent them from being allocated to registers. Fixes #42136.
10364
10365 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
10366
10367         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
10368         causes regressions.
10369
10370         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
10371         argument to mono_arch_regalloc_cost.
10372
10373         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
10374         precisely.
10375
10376 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
10377
10378         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
10379         Make the cost of allocating a variable to a register arch dependent.
10380
10381         * basic-calls.cs: Fix compilation of tests.
10382         
10383         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
10384         helper function to cut back on the number of #ifdefs needed.
10385
10386         * mini-ppc.c: Fix compilation.
10387
10388         * basic-calls.cs: New regression tests.
10389
10390         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
10391
10392         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
10393         of l0 since that is callee saved.
10394
10395         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
10396         to virtual calls.
10397
10398         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
10399         of delay instruction.
10400
10401         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
10402
10403         * mini.h (MonoCallInst): Add 'virtual' flag.
10404
10405         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
10406
10407 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
10408
10409         * *.cs: New regression tests.
10410
10411         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
10412         work.
10413
10414         * mini.c (mono_runtime_install_handlers): Fix build.
10415
10416         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
10417         'signal_stack_size' members.
10418
10419         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
10420         alternate signal stack.
10421
10422         * exceptions-x86.c: Add stack overflow handling.
10423
10424         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
10425         functions to arch independent code.
10426
10427         * mini.c (mono_print_tree): Print more detailed info for load_membase
10428         opcodes.
10429         
10430 2004-02-23  Martin Baulig  <martin@ximian.com>
10431
10432         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
10433
10434 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
10435
10436         * mini-x86.c: fixed reg allocation for div/rem.
10437
10438 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
10439
10440         * driver.c (mono_main): Report some configuratio options on --version.
10441
10442 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
10443
10444         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
10445         low in the address space. Correctly flush memory in thunks where we
10446         output native code.
10447
10448 2004-02-20  Martin Baulig  <martin@ximian.com>
10449
10450         * mini.c (mini_get_method): New static method; inflate all generic
10451         methods and methods in open generic instances.
10452         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
10453         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
10454
10455 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
10456
10457         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
10458
10459         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
10460
10461 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
10462
10463         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
10464
10465         * mini-sparc.c (flushi mono_arch_output_basic_block): make
10466         it compile using Sun's compiler.
10467
10468 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
10469
10470         * 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.
10471
10472         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
10473
10474 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
10475
10476         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
10477         code.
10478         * mini-ppc.c: handle calls outside of the allowed range with thunks
10479         allocated using the code manager.
10480         * tramp-ppc.c: use the code manager to hold generated native code.
10481         Fixed the magic trampoline to just patch vtable entries.
10482
10483 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
10484
10485         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
10486         independent file.
10487
10488 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
10489
10490         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
10491         PPC.
10492
10493         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
10494         if we have a working __thread implementation.
10495
10496         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
10497         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
10498
10499 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
10500
10501         * mini-x86.c: Fix compilation under gcc 2.
10502         
10503 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
10504
10505         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
10506         contains a call to the wrapped function.
10507
10508         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
10509         OP_<CALL>_IMM opcodes, and use them under X86.
10510         
10511         * mini.c (mono_jit_find_compiled_method): Fix warning.
10512
10513         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
10514
10515         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
10516
10517         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
10518         functionality to mini.c.
10519
10520         * mini.c (mono_create_jump_trampoline): New function to create a jump
10521         trampoline. Return a compiled method instead of a trampoline if it
10522         exists. Add a cache for jump trampolines.
10523
10524         * mini.c (mono_jit_find_compiled_method): New function to return a
10525         compiled method if it exists.
10526
10527         * mini-x86.c: Call mono_create_jump_trampoline instead of 
10528         mono_arch_create_jit_trampoline.
10529
10530         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
10531         a jump trampoline. Fixes #52092.
10532         
10533 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
10534
10535         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
10536         which is not up-to-date. Add check_corlib_version () instead.
10537
10538         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
10539         have to call it.
10540         
10541         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
10542         since newer valgrind versions do not need it.
10543
10544         * mini.c (mono_jit_compile_method_with_opt): New helper function to
10545         compile a method with a given set of optimizations.
10546
10547         * mini.c: Compile icall wrappers on-demand instead of at startup.
10548
10549         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
10550         wrapper for an icall.
10551
10552 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
10553
10554         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
10555         #54063.
10556
10557         * iltests.il: Add test for non-empty stack before switch instruction.
10558
10559 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
10560
10561         * mini.c: Add support for new stringbuilder marshalling conventions.
10562
10563         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
10564
10565 2004-02-01  Martin Baulig  <martin@ximian.com>
10566
10567         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
10568         in `ginst->mtype_argv'.
10569
10570 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
10571
10572         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
10573         facilitate grepping.
10574
10575 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
10576
10577         * mini.c: fixed buglet in initobj generic implementation for references.
10578
10579 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
10580
10581         * Makefile.am: make the version script conditional.
10582         * jit-icalls.c: handle missing truncl().
10583
10584 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
10585
10586         * exceptions.cs: Add more tests for double->int conversion.
10587
10588         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
10589         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
10590
10591 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
10592
10593         * driver.c: make --verbose --version emit an error
10594         if the loaded corlib doesn't match the runtime version.
10595
10596 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
10597
10598         * mini-ppc.h: export ppc_patch().
10599         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
10600         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
10601         on par or better than on MacOSX.
10602
10603 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
10604
10605         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
10606         mono_lookup_pinvoke_call.
10607
10608         * mini-x86.c: Under windows, the default pinvoke calling convention is
10609         stdcall. Fixes #52834.
10610
10611         * mini.c (optimize_branches): Add an upper bound to the number of
10612         iterations to prevent infinite loops on strange loops. Fixes #53003.
10613
10614 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
10615
10616         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
10617         and ISINST. Fixes #52093.
10618
10619         * objects.cs (test_0_vector_array_cast): New tests.
10620         
10621 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
10622
10623         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
10624         checking in Array.Set ().
10625
10626         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
10627         #52590.
10628
10629         * object.cs (test_0_multi_array_cast): New regression test.
10630
10631 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
10632
10633         * exceptions-ppc.c: fix build on Linux/PPC.
10634
10635 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
10636
10637         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
10638         running under valgrind.
10639         (x86_magic_trampoline): Fix build bustage.
10640
10641         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
10642         negative values as well. This is needed for the encoding of the line number
10643         info, since sometimes the line numbers are not in increasing order.
10644
10645 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
10646
10647         * cpu-pentium.md (localloc): Increase the size of the localloc 
10648         instruction since it is a loop under Win32.
10649
10650         * debug-mini.c (record_line_number): Get rid of unneccesary memory
10651         allocation.
10652
10653 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
10654
10655         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
10656         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
10657         Max Horn (max@quendi.de). Fix file names in comments.
10658
10659 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
10660
10661         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
10662         avoid stack overflow.
10663         (replace_usage): Avoid uninitialized variable warnings.
10664
10665         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
10666         and taking the address of valuetype variables.
10667
10668 2004-01-03  Patrik Torstensson
10669
10670         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
10671         for other purposes than FP later on.
10672
10673 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
10674
10675         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
10676         of tail calls.
10677
10678 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
10679
10680         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
10681
10682 2003-12-30  Patrik Torstensson <p@rxc.se>
10683
10684         * mini-x86.h: Decreased number of availiable fp regs.
10685         Solves corner cases with FP spilling.
10686
10687 2003-12-23  Patrik Torstensson <p@rxc.se>
10688
10689         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
10690         for floating point stack tracking / spilling on x86. 
10691         Fixes bug #49012.
10692         
10693         * basic-float.cs: added float mul overflow test.
10694
10695 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
10696
10697         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
10698
10699 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
10700
10701         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
10702         supports for cond branches that overflow the immediate
10703         overflow offset. mcs can compile simple programs.
10704
10705 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
10706
10707         * exceptions-ppc.c: exception handling support wip:
10708         finally handlers get run on exception.
10709
10710 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
10711
10712         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
10713         profiling.
10714
10715 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
10716
10717         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
10718         initial support for stack walking and unwinding.
10719
10720 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
10721
10722         * driver.c (mono_main): Make corlib-out-of-sync message more 
10723         descriptive. Also remove verify_corlib call.
10724
10725 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
10726
10727         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
10728         not overlap with other call's arguments, too.
10729
10730 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
10731
10732         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
10733         move to arch-specific code the choice of arch-specific
10734         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
10735         * mini.c: ensure emulation calls will not interleave
10736         with other calls.
10737
10738 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
10739
10740         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
10741         the magic trampoline stack frame is dropped before executing
10742         the new method.
10743
10744 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
10745
10746         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
10747         and integer to fp conversions. Added support for overflowing
10748         arguments on the stack. Reserve a couple more registers as temps.
10749         Added support for aot compilation (as output still needs to be
10750         tweaked, though).
10751
10752 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10753
10754         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
10755         Don't overwrite return register in some corner cases.
10756
10757 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
10758
10759         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
10760         static constructors when AOT compiling.
10761
10762         * driver.c (mono_main): Call mono_check_corlib_version.
10763
10764 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
10765
10766         * cpu-g4.md, basic.cs: fixed div target register.
10767
10768 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
10769
10770         * mini-ppc.c, basic.cs: shl_imm fix with test.
10771
10772 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10773
10774         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
10775         structures by value. Misc fixes.
10776         * objects.cs: more tests.
10777
10778 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
10779
10780         * mini-ppc.c: lconv.ovf.i implemented.
10781
10782 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10783
10784         * mini.c:
10785         (mini_init): don't error out if someone already called g_thread_init.
10786
10787 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10788
10789         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
10790         to be any type per the spec. Fix abnormal memory usage when
10791         the same object is repeatedly thrown.
10792
10793 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
10794
10795         * mini.c: check for overruns in IL code.
10796
10797 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
10798
10799         * TODO: Add/remove some todo entries.
10800
10801 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
10802
10803         * driver.c (mono_main): Call mono_verify_corlib.
10804
10805 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
10806
10807         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
10808         This has been moved to mini.c
10809         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
10810         type being casted is marshalbyref it could be a proxy, so instead of
10811         emitting the type check code, emit a call to a runtime method that will
10812         perform the check by calling CanCastTo if needed.
10813
10814 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
10815
10816         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
10817         methods with large stack frames under Win32.
10818
10819 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
10820
10821         * Makefile.am: Distribute regression tests.
10822
10823         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
10824         at the end instead of inserting each variable into the sorted list.
10825
10826         * linear-scan.c (mono_varlist_sort): New helper function.
10827         
10828 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
10829
10830         * mini.c: ensure arguments and locals are within bounds.
10831
10832 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10833
10834         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
10835         related fixes.
10836
10837 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10838
10839         * mini.c (mono_cprop_copy_values): Fix crash.
10840
10841         * aot.c: Set verbosity back to 0.
10842         
10843 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
10844
10845         * regalloc.c: complete memory leak fix by Laurent Morichetti
10846         (l_m@pacbell.net).
10847
10848 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10849
10850         * driver.c (main_thread_handler): Revert the previous patch.
10851
10852         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
10853         under valgrind.
10854
10855         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
10856         memory from the memory pool.
10857
10858         * driver.c (main_thread_handler): Turn on all optimizations when
10859         --aot is used.
10860
10861         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
10862         an array for better performance.
10863
10864         * regalloc.c (mono_regstate_assign): Fix memory leak.
10865
10866         * debug-mini.c (mono_debug_serialize_debug_info): New function to
10867         serialize the debug info.
10868
10869         * debug-mini.c (mono_debug_add_aot_method): New function to load the
10870         debug info from the serialized representation.
10871
10872         * aot.c: Save debug info into the generated file and load it when 
10873         loading a method.
10874
10875         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10876
10877 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10878
10879         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
10880         More FP-related fixes.
10881
10882 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
10883
10884         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
10885         and register allocation buglet. Hello world now runs.
10886
10887 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10888
10889         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
10890         * tramp-ppc.c: fixed class init trampoline.
10891         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
10892
10893 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10894
10895         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
10896         mini.c: more ppc changes/fixes.
10897
10898 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10899
10900         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
10901         Also optimize the case when the arguments are the same in the caller 
10902         and in the callee.
10903
10904         * iltests.il: Add tests for tail calls with valuetype arguments.
10905
10906 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10907
10908         * mini-ppc.c: fixes for struct return type.
10909
10910 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
10911
10912         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
10913         mono_spillvar_offset() to arch-specific code.
10914
10915 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
10916
10917         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
10918
10919 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10920
10921         * exceptions-x86.c: Fix stack space leaks.
10922         
10923         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
10924         registers from the lmf if the method has save_lmf set.
10925
10926 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
10927
10928         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
10929         of icall wrappers into InvokeInDomain, since these are now per-domain.
10930
10931 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
10932
10933         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
10934         make some opcode emulation and intrinsic ops enabled/disabled 
10935         according to the architecture. More fixes.
10936
10937 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
10938
10939         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
10940
10941 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10942
10943         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
10944         arch-specific handling for 'this' and struct return type to
10945         arch-specific code.
10946
10947 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10948
10949         * aot.c: prevent divide by zero error when reporting (it happened with
10950         Accessibility.dll).
10951
10952 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
10953
10954         * mini.h (inst_switch): Remove unused macro.
10955
10956 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10957
10958         * aot.c:
10959         (load_aot_module): free 'info->methods' and 'info' properly. No more
10960         "free(): invalid pointer blah" messages when you have an old aot
10961         compiled assembly.
10962
10963 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
10964
10965         * jit-icalls.c, mini.c: Added support for context static fields.
10966
10967 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10968
10969         * mini.c (mono_method_blittable): Methods which set LastError are not 
10970         blittable either. Fixes #51108.
10971         
10972 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10973
10974         * mini.c: flush icache.
10975         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
10976
10977 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10978
10979         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
10980
10981 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
10982
10983         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
10984         safe on IA32.
10985
10986         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
10987         vararg calls.
10988
10989         * inssel.brg (CEE_MKREFANY): Fix AOT case.
10990
10991 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
10992
10993         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
10994         instruction when the result is discarded.
10995
10996         * iltests.il (test_0_div_regalloc): New regression test.
10997
10998         * arrays.cs: Fix compilation error.
10999
11000 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
11001
11002         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
11003         float rules to inssel-x86.brg: sane architectures with FP registers
11004         don't need to implement these rules.
11005
11006 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
11007
11008         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
11009
11010 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
11011
11012         * mini.h, inssel-long32.brg: fixed endianess issues in int64
11013         implementation of 32 bit systems.
11014
11015 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
11016
11017         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
11018         (Jeroen Zwartepoorte).
11019
11020 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
11021
11022         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
11023         the caller and the callee matches.
11024         
11025         * mini.c (mono_method_to_ir): Add comment.
11026
11027         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
11028         signbit is missing on some platforms.
11029
11030 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
11031
11032         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
11033
11034         * mini.c (setup_jit_tls_data): Call the new function.
11035         
11036         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
11037
11038         * mini-x86.c: Add experimental support for fast access to the lmf
11039         structure under NPTL/Linux 2.6.x.
11040
11041 2003-11-06  Martin Baulig  <martin@ximian.com>
11042
11043         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
11044         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
11045         the debugger.
11046
11047 2003-11-02  Martin Baulig  <martin@ximian.com>
11048
11049         * mini.c (inflate_generic_field): New static method.
11050         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
11051         generic instance and the field is declared in a generic type, call
11052         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
11053
11054 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
11055
11056         * mini.h mini.c (mono_method_same_domain): New function to return
11057         whenever the caller and the callee are in the same domain.
11058
11059         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
11060
11061 2003-10-30  Martin Baulig  <martin@ximian.com>
11062
11063         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
11064         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
11065         method parameters.
11066         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
11067         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
11068
11069 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
11070
11071         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
11072         propagation.
11073
11074         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
11075         object here, so it is in the correct appdomain etc.
11076
11077 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
11078
11079         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
11080         already done.
11081         (mono_method_to_ir): Avoid freeing the type created returned from
11082         mono_type_create_from_typespec, since it is put into an internal cache
11083         by the function. Fixes pointer.exe.
11084
11085         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
11086         trampolines for icalls and pinvokes as well. Fixes #33569.
11087
11088 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
11089
11090         * mini.c: Update after appdomain changes.
11091
11092         * mini.c (mono_jit_compile_method_inner): Allways compile native
11093         method wrappers in the root domain, since there can only be one
11094         instance of them, whose address is stored in method->info.
11095
11096 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
11097
11098         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
11099         environment variable. Instead detect automatically whenever running
11100         under valgrind using the magic macro RUNNING_ON_VALGRIND from
11101         valgrind.h.
11102
11103 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
11104
11105         * trace.c, trace.h: New files that implement the new trace option
11106         parsing. 
11107
11108         * driver.c: Document new --trace options.
11109
11110         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
11111         mini-x86.c: Apply:
11112
11113         -       if (mono_jit_trace_calls)
11114         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
11115
11116         * mini.h: prototypes.
11117         
11118 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
11119
11120         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
11121
11122         * mini.c inssel.brg: Implement typedefbyref opcodes.
11123
11124         * mini.c (mono_jit_compile_method): Remove unused local variable.
11125
11126         * mini.c (mono_jit_compile_method_inner): Ditto.
11127         
11128 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
11129
11130         * tramp-x86.c (x86_class_init_trampoline): Fix build.
11131         
11132         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
11133
11134 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
11135
11136         * mini.c (mono_no_aot): Remove unused global variable.
11137
11138         * mini.c: Thread safety fixes.
11139
11140 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
11141
11142         * mini.c (mono_create_class_init_trampoline): Add a lock around
11143         class_init_hash_addr.
11144
11145         * arrays.cs (test_0_newarr_emulation): Add new regression test for
11146         #30073.
11147
11148         * mini.c: Decompose the NEWARR instruction before decomposing its
11149         arguments. Fixes #30073.
11150
11151 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
11152
11153         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
11154         convention.
11155
11156 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
11157
11158         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
11159
11160         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
11161
11162         * driver.c: Add support for compiling icall wrappers to --compile.
11163
11164 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
11165
11166         * inssel.brg: The empty value in class->interface_offsets is -1, not
11167         0. Fixes #49287.
11168
11169 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
11170
11171         * objects.cs: New test for 'is' operator on an array of interfaces.
11172
11173 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11174
11175         * tramp-ppc.c: update trampoline code to support jumps
11176         and class initialization.
11177
11178 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
11179
11180         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
11181
11182         * inssel.brg (OP_UNBOXCAST): Fix #46027.
11183
11184         * inssel.brg (OP_UNBOX): Remove unused rule.
11185
11186         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
11187         region instead of one for each method. Fixes #47813.
11188
11189 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
11190
11191         * exceptions.cs (test_0_nested_finally): New regression test for
11192         nested exception handlers.
11193
11194         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
11195
11196         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
11197
11198         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
11199         inlining.
11200
11201         * mini.c (mono_method_check_inlining): Make the inlining limit 
11202         configurable by an environment variable.
11203         
11204         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
11205
11206         * mini.h: Bump AOT file version.
11207
11208         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
11209         token, store the image along with the token, since the token might not 
11210         refer to the same image as the method containing the relocation, 
11211         because of inlining.
11212
11213 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
11214
11215         * mini.c (mono_precompile_assemblies): New function to compile
11216         all methods in all loaded assemblies.
11217
11218         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
11219
11220         * regalloc.h regalloc.c (MonoRegState): Change the type of 
11221         iassign and fassign to int*, since they can contain large negative
11222         values if the register is spilled. Also added some comments. Fixes
11223         #45817.
11224
11225         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
11226         under Win32. Fixes #42964.
11227
11228 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
11229
11230         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
11231
11232         * aot.c: Added support for AOT compiling methods which contain calls
11233         to wrappers. Currently, only remoting-invoke-with-check wrappers are
11234         handled.
11235         
11236         * driver.c (compile_all_methods): Run the compilation in a thread
11237         managed by mono. Fixes #44023.
11238
11239         * mini.c (mono_codegen): Print full method name in verbose output.
11240
11241         * mini-x86.c (mono_arch_patch_code): Fix warning.
11242         
11243         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
11244         jumps, since the method we are jumping to might be domain-specific.
11245
11246         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
11247
11248 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11249
11250         * inssel.brg: string chars are unsigned.
11251
11252 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
11253
11254         * TODO: New todo item.
11255
11256         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
11257         which calls mono_runtime_class_init and patches the call site to
11258         avoid further calls.
11259         (mono_arch_create_class_init_trampoline): New arch specific function 
11260         to create a class init trampoline.
11261         (create_trampoline_code): Generalized so it can create
11262         class init trampolines as well.
11263
11264         * mini.c (helper_sig_class_init_trampoline): New helper variable.
11265         (mono_create_class_init_trampoline): New function to create and cache
11266         class init trampolines.
11267         (mono_find_class_init_trampoline_by_addr): New function to lookup the
11268         vtable given the address of a class init trampoline. Used by the
11269         patching process.
11270         (mono_codegen): Generate a call to a trampoline instead of
11271         mono_runtime_class_init in LDSFLD[A].
11272         (mono_codegen): Add relocations for the new trampoline.
11273         
11274         * mini.h mini-x86.c aot.c: Added a new relocation type: 
11275         MONO_PATCH_INFO_CLASS_INIT.
11276
11277         * mini.h: Bump AOT version number.
11278
11279         * aot.c: Create a copy of the loaded code instead of using the original
11280         so methods which call each other will be close in memory, improving
11281         cache behaviour.
11282         
11283         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
11284         patch since it breaks the regression tests.
11285         
11286         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
11287         for the register saving instruction sequence since the 
11288         frame_state_for function in glibc 2.3.2 don't seem to detect it.
11289
11290 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
11291
11292         * TODO: Fix todo item && remove another.
11293
11294 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
11295
11296         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
11297         previous checkin.
11298
11299         * aot.c: Moved the check for MONO_LASTAOT into the initialization
11300         function of the module.
11301
11302         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
11303         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
11304         --no-aot command line option.
11305
11306 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
11307
11308         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
11309         by Bernie Solomon (bernard@ugsolutions.com).
11310
11311         * inssel.brg: Refactor the interface offset table related code into
11312         its separate functions and add support for the AOT case.
11313
11314 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
11315
11316         * aot.c (mono_aot_get_method_inner): Fix memory leak.
11317         
11318         * aot.c: Added mono_aot_verbose variable and made all debugging
11319         output depend on the value of this variable.
11320
11321         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
11322         method_label and info_label.
11323
11324         * mini.h mini-x86.c aot.c: Added a new relocation type 
11325         MONO_PATCH_INFO_IID for klass->interface_id.
11326
11327         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
11328         the MonoJitInfo structure.
11329
11330         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
11331         a non-root appdomain in shared mode.
11332
11333 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
11334
11335         * aot.c: make aot loader less verbose. Remove free of unused variable.
11336
11337 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
11338
11339         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
11340
11341         * .cvsignore: Added *.dll.
11342
11343         * mini.c (mono_print_tree_nl): New function callable while debugging.
11344
11345         * mini.c (mono_print_code): Export this.
11346
11347         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
11348         patched code.
11349
11350 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
11351
11352         * mini.h (MonoCompile): Added 'jit_info' field.
11353
11354         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
11355         the cfg structure, since it is needed by the AOT compiler.
11356
11357         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
11358
11359         * aot.c: A major rewrite. Changes include:
11360         - save exception tables for methods which have them.
11361         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
11362         to g_module_symbol.
11363         - reworked the file format so it is now much smaller and needs
11364         fewer relocation entries.
11365         
11366 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
11367
11368         * aot.c (load_aot_module): Fix build bustage on platforms without
11369         Boehm GC.
11370
11371 2003-09-04  Martin Baulig  <martin@ximian.com>
11372
11373         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
11374
11375 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
11376
11377         * TODO: Some new optimization ideas.
11378
11379         * aot.c: Move AOT module loading logic here from mono_assembly_open.
11380
11381         * aot.c: Save the optimization flags used to compile the code into
11382         the AOT module.
11383
11384         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
11385         support emitting domain specific code.
11386         
11387         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
11388         no longer domain neutral. It can be made domain neutral by compiling 
11389         with --optimize=shared.
11390
11391         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
11392         between appdomains.
11393
11394         * driver.c mini.h mini.c: New --no-aot debugging option which disables
11395         loading of AOT code.
11396
11397         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
11398         
11399         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
11400         if there is no domain neutrality information.
11401
11402 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
11403
11404         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
11405         format version into the generated library.
11406
11407         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
11408         callee method into the caller since one of them could be shared.
11409
11410         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
11411         system exceptions from AOT code now works.
11412
11413         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
11414         method if it is domain neutral and the callee is not.
11415
11416         * graph.c (cfg_emit_one_loop_level): Fix warning.
11417
11418 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
11419
11420         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
11421         last checkin.
11422
11423 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
11424
11425         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
11426         is needed  by code which is executed before mono_runtime_init ().
11427         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
11428         
11429         * mini.c (mono_thread_abort): Fix warning.
11430         (mono_jit_compile_method): Call static constructor in the AOT case too.
11431
11432         * aot.c (mono_compile_assembly): Fix warning.
11433
11434 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11435
11436         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
11437
11438 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
11439
11440         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
11441
11442         * cpu-pentium.md: Fix the length of call opcodes so they include the
11443         ESP restoring instruction. Fixes #47968.
11444
11445 2003-08-28  Martin Baulig  <martin@ximian.com>
11446
11447         * mini-x86.c (mono_arch_call_opcode): Added support for
11448         MONO_TYPE_GENERICINST.
11449
11450         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
11451
11452 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
11453
11454         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
11455         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
11456
11457         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
11458         metadata_section.
11459
11460 2003-08-26  Martin Baulig  <martin@ximian.com>
11461
11462         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
11463         when reporting an error, set this to the actual error location.
11464         (mono_method_to_ir): Report the correct error location if
11465         get_basic_blocks() returned an error.
11466
11467 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
11468
11469         * mini.c (mono_type_blittable): OBJECT is not blittable.
11470         (mono_method_blittable): Methods which have marshalling descriptors
11471         are not blittable either. Fixes #47842.
11472
11473 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
11474
11475         * driver.c mini.c: Use an environment variable instead of a global 
11476         variable. Also fix the build.
11477
11478         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
11479         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
11480         reporting this. 
11481
11482         * driver.c mini.c: Added --with-valgrind option to turn off some
11483         code which prevents mono from running under valgrind.
11484
11485         * mini.c (mono_emit_call_args): Fixed warning.
11486
11487         * mini.c (mono_emulate_opcode): Fixed warning.
11488
11489 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
11490
11491         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
11492         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
11493         regalloc.c, regalloc.h: specify available registers in arch-specific
11494         code and support floats in the regallocator (patch by Laurent Morichetti 
11495         <l_m@pacbell.net>)
11496
11497 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
11498
11499         * mini.c: mono_thread_current() can be called only after
11500         mono_runtime_init(): rearrange code to not call it early on.
11501
11502 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11503
11504         * mini.c: allocate jump tables in the code mempools.
11505
11506 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11507
11508         * mini.c, mini.h: make sure per-thread data allocated by the jit is
11509         freed.
11510
11511 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
11512
11513         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
11514         12 to 16.  This fixes bug #47453.
11515
11516
11517 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
11518
11519         * mini-ppc.c: fixed indexed load and unsigned compares.
11520
11521 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
11522
11523         * mini.c: reenabled installation of handler for
11524           thread abort signal.
11525
11526 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
11527
11528         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
11529         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
11530         until it's fixed and actually useful.
11531
11532 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11533
11534         * inssel-long32.brg: couple more opcodes implemented.
11535
11536 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
11537         
11538         * mini-sparc.c: Even more opcodes implemeted.
11539
11540 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
11541
11542         * mini-sparc.c: More opcodes implemented.
11543
11544 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
11545
11546         * mini-sparc.c: More opcodes implemented.
11547
11548 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
11549
11550         * inssel-sparc.brg: Add some needed rules.  Direct
11551         copy from PPC.
11552         * Makefile.am: Use inssel-sparc.brg
11553         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
11554         an assert happy for now.
11555
11556 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
11557
11558         * mini-sparc.c: Fixed compile errors.
11559         * exceptions-sparc.c: Same.  We now produce a mono binary 
11560         on sparc-linux.  Yea.
11561
11562 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
11563
11564         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
11565         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
11566         They compile, but do not work.
11567
11568 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11569
11570         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
11571         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
11572         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
11573         (ct@gentoo.org).
11574
11575 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
11576
11577         * mini.c: more opcodes implemented and better support for generics.
11578
11579 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
11580
11581         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
11582         * mini.c, mini.h: first cut at generics support: some new instructions 
11583         added and changed the behaviour of some of the existing ones.
11584
11585 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
11586
11587         * mini.c: Removed definition of metadata_shared mutex here.
11588
11589 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
11590
11591         * mini-x86.c: make vararg calls work for instance methods.
11592
11593 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
11594
11595         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
11596         returns the arguments in a separte list, now.
11597
11598 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
11599
11600         * aot.c, mini.c: updates for array type representation changes.
11601
11602 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
11603
11604         * mini.c: register function to perform jit shutdown.
11605
11606 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11607
11608         * mini.c: use a faster allocator if possible.
11609
11610 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
11611
11612         * aot.c: some cleanups and portability changes.
11613
11614 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
11615
11616         * mini.c: use faster allocation for CEE_BOX if possible.
11617
11618 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
11619
11620         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
11621         Moved inlined mempcy code to its own function so that is can be
11622         reused. Added an inline memset function as well (optimized initobj).
11623         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
11624
11625 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
11626
11627         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
11628
11629 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
11630
11631         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
11632         arch code can setup the cpu for CLR execution, if needed.
11633         We use it on x86 to set the precision of FP operations.
11634
11635 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
11636
11637         * mini.c: disable some optimizations if we can guess they'll cost too
11638         much for a given method.
11639
11640 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
11641
11642         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
11643         
11644 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
11645         * mini.h mini.c mini-x86.c: Added instruction level coverage 
11646         info collection support.
11647
11648 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11649
11650         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
11651         is now implemented in the profiling API. Get rid of a couple of
11652         unnecessary global variables.
11653
11654 2003-06-15  Nick Drochak <ndrochak@gol.com>
11655
11656         * basic-long.cs: tests for negative values for bigmul, and unsigned.
11657         * cpu-g4.md: add op_bigmul and op_bigmul_un
11658         * cpu_pentium.md: add op_bigmul_un
11659         * inssel-long32.brg: add rule for unsigned bigmul
11660         * mini-ops.h: define OP_BIGMUL_UN
11661         * mini-x86.c: THE BUG: handle (un)signed properly
11662         * mini.c: choose unsigned opcode if needed.
11663         This set of patches fixes bug #44291
11664
11665 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
11666
11667         * mini.c (optimize_branches): improved to handle all kinds of
11668         conditional branches.
11669
11670 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
11671
11672         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
11673         don't raise exceptions.
11674
11675 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11676
11677         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
11678         to arch-specific files.
11679
11680 2003-06-09  Martin Baulig  <martin@ximian.com>
11681
11682         * Makefile.am (libs): Added $(LIBGC_LIBS).
11683
11684 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
11685
11686         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
11687         and OP_ATAN (fixes bug#44293).
11688
11689 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
11690
11691         * Makefile.am, mini-x86.c: rename cpu description array to
11692         pentium_desc, since some compilers define the 'pentium' preprocessor
11693         symbol.
11694
11695 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
11696
11697         * mini.c (mini_select_instructions): add explicit branch if the
11698         following block is not the false target of a conditional branch -
11699         we need this with any optimization that reorder or remove bblocks
11700
11701         * mini.c (optimize_branches): bug fixes
11702
11703 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
11704
11705         * mini.c (mono_method_to_ir): inline static readonly fields
11706
11707         * ssa.c (fold_tree): start cfold support for long (very simple
11708         cases only)
11709
11710         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
11711
11712 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
11713
11714         * inssel.brg: fixed memcpy (bug #44219).
11715
11716 2003-06-05  Dick Porter  <dick@ximian.com>
11717
11718         * driver.c: Set the glib log levels to not abort if g_message
11719         recurses.
11720
11721         g_set_prgname() has to happen before mini_init() so that the
11722         process handle gets the info.
11723         
11724 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11725
11726         * driver.c: add intrins to the default optimizations to get wider
11727         exposure.
11728
11729 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
11730
11731         * mini.h: some large basic blocks will overflow a 16-bit
11732         integers for symbolic registers.
11733
11734 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11735
11736         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
11737         (mono_arch_output_basic_block): fix bug 43499 
11738
11739 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11740
11741         * mini.c: kill duplicated definition of mono_debug_format.
11742
11743 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
11744
11745         * mini-x86.c, arrays.cs: fixed register allocation bug.
11746
11747 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11748
11749         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
11750
11751         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
11752
11753 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11754
11755         * mini.c:
11756         (print_method_from_ip): also print source location information if
11757         available.
11758
11759 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
11760
11761         * mini.c (mono_find_block_region): bug fix in region code
11762         (mini_method_compile): enable removing unreachable code again, but
11763         only in methods without exception clauses.
11764
11765 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
11766
11767         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
11768         Implemented arglist opcode and handling of TypedReference type.
11769         Fixed x86 call convention when a structure is returned.
11770         Minimal support for calling static vararg methods.
11771
11772 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
11773
11774         * mini.c (mini_method_compile):  always remove unreachable code,
11775         because the code in them may be inconsistent  (access to dead
11776         variables for example).
11777
11778 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
11779
11780         * driver.c, debug-mini.c: warning fixes.
11781
11782 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
11783
11784         * Makefile.am, jit.h, mini.h: install header for embedding mono.
11785
11786 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
11787
11788         * mini.c: thread-static fields are registered in mono_class_vtable(),
11789         so ensure the function is called before checking for them.
11790
11791 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
11792
11793         * mini.c (optimize_branches): fix for bug 43586
11794
11795         * jit-icalls.c (mono_llmult_ovf): added an additional check for
11796         overflow (fixes Bug #43639)
11797
11798 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11799
11800         * mini.c, objects.cs: allow the use of stobj for primitive types.
11801
11802 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11803
11804         * mini.c: be less strict about argument checking until we support
11805         running the verifier.
11806
11807 2003-05-27  Nick Drochak <ndrochak@gol.com>
11808
11809         * basic-long.cs: tests for (ulong)int * (ulong)int also
11810         * mini.c: use the same trick for (ulong)int * (ulong)int
11811
11812 2003-05-27  Nick Drochak <ndrochak@gol.com>
11813
11814         * basic-long.cs: add regression test for (long)int * (long)int
11815         * cpu-pentium.md: add op_bigmul specification
11816         * inssel-long32.brg: add OP_BIGMUL rule
11817         * mini-ops.h: add OP_BIGMUL
11818         * mini-x86.c: register allocator: handle case where src1 needs to be
11819         in EAX.
11820         * mini.c: substitute special BIGMUL opcode in the tree for 
11821         (long)int * (long)int
11822
11823 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
11824
11825         * jit-icalls.c: call the type ctor on field access if needed.
11826
11827 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
11828
11829         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
11830         to a method (including results of ldelema, bug#43207).
11831
11832 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
11833
11834         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
11835         colors to show exception handler blocks.
11836
11837         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
11838         (fix for pinvoke7.cs).
11839
11840 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11841
11842         * mini.h, mini.c: ensure correct initialization order for types that
11843         require it. Prepare for lazy compilation of jit icall wrappers.
11844         Provide a name for opcode emulation to reduce unneeded mallocing.
11845
11846 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
11847
11848         * mini-x86.c: better register restoring code and profiling
11849         support for tail calls.
11850
11851 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11852
11853         * mini.h, driver.c: prepare for leaf methods optimization.
11854
11855 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
11856
11857         * mini.c: get targets of branches before converting a method.
11858
11859 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
11860
11861         * mini.c (optimize_branches): added some experimental code (disbaled) 
11862
11863 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
11864
11865         * mini.c (optimize_branches): fix branch to branch optimization 
11866
11867         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
11868
11869         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
11870
11871         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
11872
11873         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
11874         if needed.
11875
11876 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
11877
11878         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
11879         enable use of interface variables again.
11880
11881         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
11882         I1 to registers because there is no simply way to sign extend 8bit
11883         quantities in caller saved registers on x86.
11884
11885         * inssel-float.brg: set costs of some rules to 2 so
11886         that monobure always select the arch. specific ones if supplied,
11887         regardless of the order we pass the files to monoburg.
11888
11889 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
11890
11891         * mini.c, mini-x86.c: since the magic trampoline for jumps
11892         can't patch the code directly, we do it as soon as the
11893         method gets compiled.
11894
11895 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11896
11897         * mini-x86.c, mini.h: introduce a new patching method
11898         to support CEE_JMP and tail calls.
11899         * mini.c: obey tail.call. Don't precompile methods target
11900         of CEE_JMP.
11901         * tramp-x86.c: new trampoline code to handle methods
11902         reached through a jump.
11903
11904 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
11905
11906         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
11907         bit values to registers
11908
11909 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
11910
11911         * mini.c (mono_compile_get_interface_var): share interface
11912         variables if possible.
11913
11914 2003-05-16  Martin Baulig  <martin@ximian.com>
11915
11916         * debug-mini.c (mono_init_debugger): New function to initialize
11917         the debugger.  This is not in the debugger since it needs to
11918         access some of mini's internals.
11919
11920 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11921
11922         * mini.c (mono_method_to_ir): inlining fixes/cleanups
11923
11924 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
11925
11926         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
11927         for value type handling.
11928
11929 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11930
11931         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
11932         (mono_method_check_inlining): enable inlining of all kinds of wrappers
11933
11934 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
11935
11936         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
11937           the constructor through a proxy.
11938
11939 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11940
11941         * jit-icalls.c, inssel.brg: fixes to array element address
11942         calculations.
11943
11944 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
11945
11946         * mini-x86.c (is_regsize_var): allocate pointer to registers
11947
11948 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11949
11950         * driver.c: fixed typo, added intrins to the set of optimizations
11951         tested with regressions.
11952
11953 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
11954
11955         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
11956         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
11957         test case.
11958
11959 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
11960
11961         * inssel.brg: remove some common pop instructions without side effects
11962
11963 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11964
11965         * inssel-x86.brg: fixed thinko in int to double conversions.
11966
11967 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
11968
11969         * mini.c, jit-icalls.c: added runtime thread-static variable support.
11970
11971 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
11972
11973         * inssel-long32.brg: two more missing instructions.
11974
11975 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
11976
11977         * mini.c (mono_emit_call_args): set the cil_code for all arguments
11978         if not already set.
11979
11980 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
11981
11982         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
11983         correctly.
11984
11985         * basic-float.cs: Added tests for negative zero.
11986
11987 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11988
11989         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
11990         a couple of missing operations for long casts, with test cases.
11991
11992 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11993
11994         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
11995
11996 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
11997
11998         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
11999         code size estimation.
12000
12001 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
12002
12003         * mini.c (mono_jit_create_remoting_trampoline): make it work with
12004         abstract methods (fix bug 42542)
12005
12006         * aot.c: add ability to handle array types
12007         
12008 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
12009
12010         * mini.c: Call the _specific versions of the object allocation
12011         functions if possible.
12012
12013 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
12014
12015         * driver.c: call setlocale ().
12016
12017 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
12018
12019         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
12020         windows build.
12021
12022 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
12023
12024         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
12025
12026         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
12027         wrappers (fix bug 42122)
12028
12029 2003-05-04  Martin Baulig  <martin@ximian.com>
12030
12031         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
12032
12033         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
12034         s/mini_set_defaults/mono_set_defaults/g.
12035
12036 2003-05-04  Martin Baulig  <martin@ximian.com>
12037
12038         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
12039
12040 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
12041
12042         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
12043         (reported by Don Roberts).
12044
12045 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
12046
12047         * mini.c: temporarily work around two bugs for this release.
12048
12049 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
12050
12051         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
12052         that contains -export-dynamic and it makes using the ld script
12053         useless.
12054         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
12055
12056 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
12057
12058         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
12059         specific cpu.
12060
12061 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
12062
12063         * mini.c: make sure leave calls all the needed finally blocks,
12064         even when the target jumps out of multiple exception clauses.
12065
12066 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
12067
12068         * ldscript, Makefile.am: add linker script to reduce the number of
12069         exported symbols (should also fix the issues with libwine defining
12070         some of the same symbols in io-layer).
12071
12072 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
12073
12074         * driver.c (mini_main): Avoid assertion when no file name is given on 
12075         the command line.
12076
12077 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
12078
12079         * driver.c: added --version/-V command line option.
12080         Added the inline optimization in the regression tests.
12081
12082 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
12083
12084         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
12085         to the type in the method signature (fixes bug#42134).
12086
12087 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
12088
12089         * mini.c: when inlining, check this is not null only when needed (bug #42135).
12090
12091 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
12092
12093         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
12094
12095 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12096
12097         * driver.c: fixed bug #42100.
12098
12099 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
12100
12101         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
12102
12103 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
12104
12105         * mini.c: moved most of the code required to do inlining to its own
12106         function so it can be reused. Inline also ctors if appropriate.
12107
12108 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
12109
12110         * Makefile.am: Link with -export-dynamic so shared libs loaded by
12111         the runtime can call mono API functions.
12112
12113 2003-04-27  Martin Baulig  <martin@ximian.com>
12114
12115         * debug-mini.c (mono_debug_init_method): Added
12116         `guint32 breakpoint_id' argument; if the method has a breakpoint,
12117         send a notification to the debugger.
12118
12119         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
12120         running in the Mono Debugger, just pass the breakpoint number to
12121         mono_debug_init_method().
12122
12123         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
12124
12125 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
12126
12127         * mini.c: allow some more unsafe compares.
12128
12129 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
12130
12131         * mini-x86.c, Makefile.am: make distcheck works (partially from
12132         a patch by Richard Lee <r.h.lee@attbi.com>).
12133         * regset.c, regset.h: removed, they are unused.
12134
12135 2003-04-25  Dick Porter  <dick@ximian.com>
12136
12137         * driver.c: Usage reports the name as 'mono' not 'mini'
12138         * exceptions-x86.c: Build and run on freebsd
12139
12140 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
12141
12142         * Makefile.am: install the program with the 'mono' name and
12143         the library as libmono instead of mini and libmini.
12144
12145 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
12146
12147         * driver.c: provide the APIs for the embedding interface of the old jit.
12148
12149 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
12150
12151         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
12152
12153 2003-04-23  Martin Baulig  <martin@ximian.com>
12154
12155         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
12156
12157         * driver.c: Added `--debug' command line argument to enable
12158         debugging support.
12159
12160 2003-04-23  Martin Baulig  <martin@ximian.com>
12161
12162         * debug.[ch]: Removed.  The code is now in
12163         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
12164
12165         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
12166         last six months.
12167
12168 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
12169
12170         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
12171
12172 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12173
12174         * mini.c:
12175         (mini_cleanup): moved mono_runtime_cleanup call after the call to
12176         mono_domain_finalize.
12177         (mini_method_compile): use mono_method_profile* if the the option is
12178         enabled.
12179
12180 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
12181
12182         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
12183         methods with their wrapper.
12184
12185         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
12186         methods with their wrapper.
12187
12188         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
12189         their wrapper.
12190
12191         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
12192         wrapper.
12193
12194         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
12195         methods.
12196
12197 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
12198
12199         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
12200
12201 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
12202
12203         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
12204         of the mempool. This is slightly faster and uses less memory
12205
12206 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
12207
12208         * mini.c: avoid O(n) allocation for variables.
12209
12210 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
12211
12212         * mini.c: handle items on the stack after inlining methods.
12213
12214 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
12215
12216         * mini.c: make the method->opcode optimization dependent
12217         on MONO_OPT_INSTRINS and do it lazily.
12218
12219 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
12220
12221         * driver.c: print overall results at the end of regression run.
12222
12223 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
12224
12225         * inssel.brg: don't overwrite symbolic registers.
12226
12227 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
12228
12229         * inssel-x86.brg: fix conversion from long to float.
12230
12231 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
12232
12233         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
12234
12235 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
12236
12237         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
12238
12239         * driver.c: Added --print-vtable option as in the old JIT.
12240
12241 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
12242
12243         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
12244
12245 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
12246
12247         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
12248
12249 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
12250
12251         * mini.c regalloc.c regalloc.h: Fix memory leak.
12252
12253 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
12254
12255         * aot.c (mono_aot_get_method): register all used strings
12256
12257 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
12258
12259         * mini.c: always intern strings references with ldstr at compile time.
12260
12261 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
12262
12263         * Makefile.am: add BUILT_SOURCES.
12264
12265 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
12266
12267         * driver.c: give a better error message when the assembly to execute
12268         doesn't have an entry point.
12269
12270 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
12271
12272         * Makefile.am: added hack for automake
12273
12274         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
12275         correct sematics.
12276
12277         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
12278
12279 22003-04-07  Martin Baulig  <martin@ximian.com>
12280
12281         * Makefile.am: Added Makefile.am.
12282
12283         * debugger-main.c: Removed, this is now in the debugger where it
12284         belongs.
12285
12286         * mini.pc.in: Call this package `mini' for the moment.
12287
12288
12289
12290
12291
12292
12293
12294