2008-05-22 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
2
3         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4         possible.
5
6         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7         the generic sharing code.
8         
9         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10         when needed.
11
12 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
13
14         * mini.h: Remove the declaration of mono_aot_init_vtable ().
15
16 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
17
18         * driver.c: updated copyright date
19
20 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
21
22         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
23         needed.
24
25 2008-05-19  Martin Baulig  <martin@ximian.com>
26
27         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
28         pointing to the new `_mono_debug_using_mono_debugger' variable.
29
30         * driver.c
31         (mono_main): Check mono_debug_using_mono_debugger() rather than
32         the `MONO_INSIDE_MDB' environment variable to check whether we're
33         inside the debugger.
34
35 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
36
37         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
38         argument.
39
40 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
41
42         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
43
44         * mini.c: Added mini_assembly_can_skip_verification. This
45         function checks if the assembly requested to skip verification. 
46         Fixes part of #387274.
47
48 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini.c (mini_get_method): Disable the check for open generic classes when
51         using generic sharing.
52
53         * generics.cs: Add a test #387034.
54
55         * mini.c (mini_get_method): Check whenever the method class is an open generic
56         type, and return NULL in that case, causing a verification error. Fixes
57         #384123.
58
59 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
60
61         * driver.c (mono_main): Revert r102623. The right
62         thing to do is to enable the verifier under verifiable
63         unless a --security flag was passed.
64
65         We need this non-trivial behavior for --verify-all otherwise
66         mcs-compileall won't be able to use it. As it needs everything to
67         be verified under validil.
68
69 2008-05-06  Martin Baulig  <martin@ximian.com>
70
71         Fix #383749.
72
73         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
74         (mono_debugger_thread_cleanup): Likewise.
75         (mono_debugger_extended_notification): Likewise.
76
77 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
78
79         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
80         against both inflated and non-inflated methods. We need to check against the
81         generic definition for cases where the instantiated method is not visible.
82         We need to check against the inflated types for cases where the instantiation
83         changes any super type. This fixes #382986.
84
85         Note that this doesn't need to be applied to other parts of mono_method_to_ir
86         that check for visibiliy as generic params only appears as the type subject
87         of tokens on call opcodes. Field manipulation and ldftn must always
88         target an exact type.
89
90 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
91
92         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
93         if no related --security flag is passed.
94
95 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
96
97         * mini-arch.h: Prepare support for ppc64.
98
99         Contributed under MIT/X11 license.
100
101 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
102
103         * aot-runtime.c: Prepare support for ppc64.
104
105         Contributed under MIT/X11 license.
106
107 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
108
109         * mini-ops.h: Prepare support for ppc64.
110
111         Contributed under MIT/X11 license.
112
113 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
114
115         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
116
117         Contributed under MIT/X11 license.
118
119 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
120
121         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
122         assemblies, since aot_name is not a full path, causing us to load MS.NET 
123         assemblies on windows.
124
125 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
126
127         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
128         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
129         * main.c: Use UTF-8 encoded command line instead of Windows default code
130         page on Windows to support Unicode.
131         * driver.c (DllMain): New function for mixed-mode assembly support.
132         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
133         export __stdcall functions without decoration.
134
135         Contributed under MIT/X11 license.
136
137 2008-04-28  Mark Probst  <mark.probst@gmail.com>
138
139         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
140         saving it very early.
141
142 2008-04-28  Mark Probst  <mark.probst@gmail.com>
143
144         * mini.h, mini.c: Lots of code for accessing the old RGCTX
145         deleted.  The only way to access the new RGCTX is via the
146         trampline.
147
148         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
149         vtable instead of the RGCTX to static methods.
150
151         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
152         accessing the new RGCTX.
153
154         * generic-sharing.c: There is no separation between self, type
155         arguments and other types in the RGCTX anymore.
156
157 2008-04-25  Jonathan Chambers <joncham@gmail.com>
158
159         * mini-amd64.c (add_general): Remove previous stack adjustment.
160         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
161         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
162         for 32 bytes of stack space reserved for all calls.
163         
164         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
165         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
166         adjustment.
167         
168         Code contributed under MIT/X11 license.
169
170 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
171
172         * mini.c (mini_method_verify): Only verify non-inflated methods, check
173         against the root definition, peeling out method and type instantiations.
174         Cache verify success results, code that fails verification is still
175         checked multiple times.
176
177 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
180
181 2008-04-23  Jonathan Chambers <joncham@gmail.com>
182
183         * mini-amd64.c (add_general): Always increment stack on Win64.
184         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
185         on Win64.
186         
187         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
188         stack based argument handling on Win64.
189         
190         Code contributed under MIT/X11 license.
191
192 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
193
194         * Makefile.am (version.h): Add support for git-svn.
195
196 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
197
198         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
199         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
200         avoiding allocations and libc functions which might deadlock.
201         
202         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
203         'no-gdb-backtrace' option is set.
204
205         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
206
207         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
208
209 2008-04-21  Martin Baulig  <martin@ximian.com>
210
211         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
212         and `get_lmf_addr'; `notification_address' is no longer a pointer.
213
214 2008-04-21  Martin Baulig  <martin@ximian.com>
215
216         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
217         `thread_vtable', `event_handler_ptr' and `event_handler'.
218
219 2008-04-21  Martin Baulig  <martin@ximian.com>
220
221         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
222         allows delayed initialization of the `executable_code_buffer' when
223         attaching.
224
225 2008-04-21  Martin Baulig  <martin@ximian.com>
226
227         * mini.h (mono_debugger_create_notification_function): Removed.
228         * tramp-*.c (mono_debugger_create_notification_function): Removed.
229
230         * mdb-debug-info64.s
231         (MONO_DEBUGGER__notification_function): Added this in the .text section.
232
233         * mdb-debug-info32.s
234         (MONO_DEBUGGER__notification_function): Added this in the .text section.
235
236         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
237         currently only works on x86 and x86_64, so don't create it on ppc.
238
239 2008-04-21  Martin Baulig  <martin@ximian.com>
240
241         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
242
243         * mini.c
244         (mini_method_compile): In the fp elimination check, check
245         `debug_options.mdb_optimizations' in addition to
246         mono_debug_using_mono_debugger().       
247
248         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
249         disable some JIT optimizations which are only disabled when
250         running inside the debugger.
251         Added `--help-debug' option to describe the debugging options.
252         (parse_debug_options): New static function to parse the `--debug'
253         options, so we can easily add more stuff in future.
254
255 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
258         the method has no body.
259
260 2008-04-19  Jonathan Chambers <joncham@gmail.com>
261
262         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
263         assembly is not allowed in MSVC 64-bit compiler. 
264         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
265         as we get floating point exceptions everywhere.
266         
267         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
268         correctly align arguments for call to throw_exception.
269         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
270         
271         Code contributed under MIT/X11 license.
272
273 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
274
275         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
276
277 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
278
279         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
280
281         * mini-amd64.c (NEW_INS): Set cil_code.
282
283         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
284         from mini-amd64.c so all debugger related logic is in one place.
285
286         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
287         later won't have a random ip assigned to them.
288
289 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
290
291         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
292         the arch specific function initializes code_size.
293         (mono_create_delegate_trampoline): Ditto.
294
295         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
296         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
297         platforms.
298
299         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
300         running under the debugger.
301
302         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
303         debugger.
304
305         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
306         debugger. Also move the disabling of optimizations here from driver.c.
307         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
308         debugger.
309
310         * mini.h (MonoCompile): Add a few new flags.
311
312 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
313
314         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
315         so the cil_code field of created MonoInst's is properly set.
316         (mini_select_instructions): Ditto.
317
318         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
319         (MONO_INST_NEW_CALL): Ditto.
320
321         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
322         in many places so the ins->cil_code field is properly initialized.
323
324         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
325         place.
326
327 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
328
329         * mini.c (mini_method_compile): Print a different message when compiling a 
330         shared method.
331         
332         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
333         > 1.
334
335 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
336
337         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
338         SSE2 instructions.
339
340         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
341         
342 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
343
344         * mini.c (handle_stack_args): Make this return void since its return value was
345         never used. Also set cfg->unverifiable for invalid IL instead of calling
346         G_BREAKPOINT ().
347
348 2008-04-10  Mark Probst  <mark.probst@gmail.com>
349
350         * mini.c: Make sure "this" is live in catch clauses with type
351         variables in shared generic code.
352
353 2008-04-08  Mark Probst  <mark.probst@gmail.com>
354
355         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
356         generic_class_is_reference_type() to ensure the proper behaviour
357         when sharing generic code and the type in question is a type
358         argument.
359
360 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
361
362         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
363         race conditions when printing thread dumps. Fixes #377738.
364
365 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
366         
367         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
368         shows up when both MonoInst arguments can cause aliasig.
369         There is likely no way in the current JIT to trigger this problem, but
370         it showed up in the development of generics sharing, when in a new
371         opcode both args of an OP_GROUP can be aliases (addresses of a local).
372         When the generics sharing code will be committed, its tests will be
373         valid also for this bug.
374
375 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
376
377         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
378         PATCH_INFO_METHOD.
379
380         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
381         NULL.
382
383 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
384
385         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
386         use a more detailed exception message for InvalidCastException.
387
388         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
389
390         * driver.c (mono_main): Add --debug=casts option to turn on better 
391         InvalidCastException message details.
392
393         * mini.c (mini_get_debug_options): New helper function to return the address of
394         the debug_options variable.
395
396         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
397         the jit_tls TLS variable.
398
399         * mini.c (mono_jit_tls): New TLS variable.
400
401         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
402         option is used.
403
404 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
405
406         * mini.h: Removed verifer related stuff. This code was moved to verify.c
407
408         * mini.c: Removed verifer related stuff, code moved to verify.c.
409
410         * driver.c: Using code from verify.c instead of mini.c.
411
412 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
413
414         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
415         longer valid.
416
417 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * mini.c (check_for_method_verify): Enabling verification of
420         corlib if mono_verify_all is set. Bugs in the verifier preventing that
421         have been fixed.
422
423 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
424
425         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
426         caller saved registers as well.
427         
428         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
429         saved registers as well.
430
431 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
432
433         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
434
435         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
436         code.
437
438 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
439
440         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
441         to get_call_info.
442         (get_call_info): Take a gsctx argument instead of 'cfg'.
443
444 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
445
446         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
447         mono_verify_all is set.
448
449         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
450
451         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
452
453 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
454
455         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
456         an exception.
457
458         * driver.c mini.c mini.h: Add a --verify-all development option to test the
459         verifier and the code generated by the compiler.
460
461 2008-03-25  Mark Probst  <mark.probst@gmail.com>
462
463         * mini.c: Generic sharing of the non-nullable case of the box
464         instruction.
465
466 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
467
468         * inssel.brg: Fix the build.
469
470         * iltests.il.in: Add a test for lconv.ovf.u8.un.
471
472 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
473
474         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
475         Array:Address. Fixes #372410.
476
477         * iltests.il.in: New tests for readonly prefix.
478
479 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
480
481         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
482         mini-trampolines.c.
483
484         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
485         mini-exceptions.c.
486
487         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
488         
489         * mini.c (mono_decompose_op_imm): New helper function.
490
491         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
492         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
493         return value.
494
495         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
496         mono_arch_output_basic_block. Fix warnings.
497
498         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
499         for now.
500
501 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
502
503         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
504         since the extra frame is now detected automatically inside the loop.
505
506         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
507         opts which are now in mono_peephole_ins ().
508         
509         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
510
511         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
512         frames and skip duplicate managed-to-native frames. Fixes #367665.
513
514         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
515         opts which are now in mono_peephole_ins ().
516         (mono_arch_peephole_pass_2): Ditto.
517
518         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
519
520         * mini-codegen.c (mono_peephole_ins): New helper function containing the
521         arch independent peephole optimizations.
522
523         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
524         opts which are now in mono_peephole_ins ().
525
526         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
527         
528         * mini-s390.c (mono_arch_output_basic_block): Fix build.
529
530         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
531         pattern.
532
533         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
534         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
535         opcode. 
536
537 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
538
539         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
540         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
541         return value.
542
543         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
544         mono_arch_output_basic_block. Fix warnings.
545
546 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
547
548         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
549         conv.ovf.u.un.
550
551 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
552
553         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
554         conv.ovf.u.un.
555
556         * iltests.il: Add new tests.
557
558 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
559
560         * mini.c: Removed Windows version macros.
561
562 2008-03-20  Mark Probst  <mark.probst@gmail.com>
563
564         * generic-sharing.c: Put reflection types in the extensible part
565         of the runtime generic context.
566
567         * mini.c: Generic sharing of the GetTypeHandle special case of the
568         ldtoken instruction.
569
570 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
571
572         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
573
574         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
575         
576         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
577         consistency with the other version on the linear IR branch.
578
579         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
580
581         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
582
583         * iltests.il.in: Add new tests.
584
585 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
586
587         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
588
589         * iltests.il.in: Add new tests.
590
591 2008-03-19  Mark Probst  <mark.probst@gmail.com>
592
593         * mini.c: Two variables with the same name were declared in
594         nesting contexts and one wasn't initialized.  Fixed.
595
596 2008-03-19  Mark Probst  <mark.probst@gmail.com>
597
598         * mini.c: Generic sharing of the initobj instruction.
599
600 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
601
602         * mini.c: make the test to optimize ldtoken from typeof() more
603         precise.
604
605 2008-03-18  Mark Probst  <mark.probst@gmail.com>
606
607         * mini.c: Generic sharing of the initobj instruction for reference
608         types.
609
610 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
611
612         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
613         the mono_breakpoint_clean_code() code to perform bound checks.
614
615 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
616
617         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
618         mono_arch_patch_callsite() to include the start of the managed method
619         to be able to perform bound checks.
620
621 2008-03-17  Mark Probst  <mark.probst@gmail.com>
622
623         * mini.c: Generic sharing for the isinst instruction.
624
625 2008-03-17  Mark Probst  <mark.probst@gmail.com>
626
627         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
628         inssel-long32-mips.brg: Added opcodes for doing indirect calls
629         with the runtime generic context argument.
630
631         * mini.c: Share calls to several types of unsharable methods by
632         putting the address of the method code in the runtime generic
633         context and doing an indirect call.
634
635         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
636         to switches.
637
638 2008-03-16  Mark Probst  <mark.probst@gmail.com>
639
640         * generic-sharing.c: Change due to a change in the runtime genric
641         context API.
642
643 2008-03-15  Martin Baulig  <martin@ximian.com>
644
645         * tramp-x86.c
646         (mono_arch_nullify_class_init_trampoline): Add call to
647         mono_breakpoint_clean_code() to make things work when running
648         inside the debugger.
649
650         * tramp-amd64.c
651         (mono_arch_nullify_class_init_trampoline): Add call to
652         mono_breakpoint_clean_code() to make things work when running
653         inside the debugger.
654
655 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
656
657         * inssel-long.brg (reg): Fix 64 bit build.
658
659 2008-03-14  Mark Probst  <mark.probst@gmail.com>
660
661         * mini.c, mini.h: Share static generic code by passing it an
662         implicit argument pointing to the runtime generic context.
663
664         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
665         inssel-long32-mips.brg: New opcodes for calling shared static,
666         which need to be passed the runtime generic context.
667
668         * mini-amd64.c, mini-x86.c: Save the runtime generic context
669         argument on the stack in the prologue if needed.  New function for
670         finding the runtime generic context argument from the registers
671         saved by the trampoline.
672
673         * mini-amd64.h, mini-x86.h: Specify which register to use for the
674         runtime generic context argument.
675
676         * tramp-amd64.c: Also restore the register used for the runtime
677         generic context argument.
678
679         * mini-trampoline.c: Resolve shared static calls by consulting the
680         runtime generic context via the new argument.
681
682         * generic-sharing.c: Add an argument to sharability-checking
683         functions that specifies whether type variables should be treated
684         as sharable type arguments.
685
686         * inssel-x86.brg: Removed a superfluous, buggy rule.
687
688         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
689         to switches.
690
691 2008-03-14  Martin Baulig  <martin@ximian.com>
692
693         * debug-debugger.c (main_thread_handler): Call
694         mono_runtime_run_main() without sending any notifications.
695
696         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
697
698 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
699
700         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
701
702 2008-03-14  Mark Probst  <mark.probst@gmail.com>
703
704         * tramp-x86.c: Fixed register restore offsets in the trampoline
705         code for ECX and EDX.
706
707 2008-03-12  Geoff Norton  <gnorton@novell.com>
708
709         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
710         different ucontext_t implementations.
711         * exceptions-arm.c: Use the above defines to get exceptions working on 
712         iPhone (based on a patch by Luke Howard lukeh@padl.com)
713         * mini-arm.c: Implement iPhone icache support (based on a patch by
714         Luke Howard lukeh@padl.com)
715
716 2008-03-12  Mark Probst  <mark.probst@gmail.com>
717
718         * mini.c: Enable generic sharing of calls to non-static
719         non-interface non-generic non-value-type methods.
720
721         * mini-trampolines.c: Resolve calls from shared generic code.
722
723 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
724
725         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
726
727         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
728
729 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
730
731         * mini.c: some fixes for the AOT compiler.
732
733 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
734
735         * cpu-amd64.md: Add clob:1 to some float opcodes.
736
737 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
738
739         * mini.h: Added MiniVerifierMode enumeration.
740
741         * mini.c: Added mini_verifier_set_mode to control
742         the usage of the new verifier.
743
744         * mini.c (mono_method): Integrated the new verifier.
745
746         * driver.c: Extended --security option with validil and
747         verifiable options to activate the new verifier.
748
749 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
750
751         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
752         optimization to ctors taking 0 or 2 arguments too.
753
754         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
755         a bit.
756
757         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
758
759         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
760
761 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
762
763         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
764         non-aot case as well.
765
766         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
767
768         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
769         changes.
770
771         * aot-compiler.c (encode_patch): Ditto.
772
773         * mini.h (G_MININT32): Fix the definition of this.
774
775 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
776
777         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
778
779         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
780
781 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
782
783         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
784         methods returning vtypes in registers.
785         (mono_arch_allocate_vars): Ditto.
786
787         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
788
789         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
790
791         * generics.cs: Add a test from the linear IR branch.
792
793         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
794
795         * mini.c (inline_method): Cache failed inline attempts.
796
797 2008-03-04  Mark Probst  <mark.probst@gmail.com>
798
799         * mini.c: For shared methods of generic classes put the location
800         of "this" into the MonoGenericJitInfo.
801
802         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
803         register out of a MonoContext by register number.  Add the generic
804         sharing context as an argument to mono_arch_find_this_argument().
805
806         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
807         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
808         for new arch function.
809
810         * mini-exception.c: Handle open exception clauses in shared
811         generic code.
812
813         * mini-trampolines.c: Supply additional argument to
814         mono_arch_find_this_argument().
815
816 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
817
818         * Makefile.am (regtests): Run the bench.exe tests last.
819
820 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
821
822         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
823         a bit.
824
825 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
826
827         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
828         with MS.
829
830         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
831         
832         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
833
834         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
835         whose class has no cctor.
836
837         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
838
839 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
840
841         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
842         unverified.
843
844 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
847         to be in sync with the code on the linear IR branch.
848
849         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
850
851         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
852
853 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
854
855         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
856
857         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
858
859         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
860
861         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
862
863         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
864         
865         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
866         body.
867
868 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
869
870         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
871         OP_LOADR4_MEMBASE emission.
872
873         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
874         (mono_spillvar_offset_float): Ditto.
875
876         * mini-mips.c (mono_arch_emit_prolog): Ditto.
877
878         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
879         emission.
880
881         * basic-long.cs: Add regression tests for them.
882
883         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
884         use.
885         (mono_arch_allocate_vars): Fix representation of single-precision float
886         argument.
887         (mono_arch_output_basic_block): Ditto.
888
889         * inssel-mips.brg: Ditto, remove duplicate items.
890
891         * mini-mips.c (emit_load_volatile_arguments): New function to handle
892         arguments of tail calls as on other platforms.
893         (mono_arch_output_basic_block): Handle tail calls.
894
895         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
896         register.
897
898         * objects.cs (test_5_pass_static_struct): Add test for it.
899
900         Contributed under MIT/X11 license.
901
902 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
903
904         * Makefile.am: Use gmcs for compiling the regression tests.
905
906         * *.2.cs *.2.il: Rename to *.cs and *.il.
907
908 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
909
910         * regalloc.h: Make the vassign array smaller.
911
912         * mini.c (mini_method_compile): Remove an unused field in cfg.
913
914         * mini-codegen.c: Add a bunch of micro optimizations.
915
916 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
917
918         * regalloc.h: Remove some unused fields.
919
920 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
921
922         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
923
924         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
925
926 2008-02-22  Mark Probst  <mark.probst@gmail.com>
927
928         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
929
930         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
931         trampoline: Fetch an entry from the runtime generic context.  If
932         it's NULL, jump to the actual trampoline to fill the runtime
933         generic context.  Otherwise, return it.
934
935         * mini.c: Call the lazy fetch trampoline to get entries out of the
936         runtime generic context.
937
938         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
939         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
940         tramp-sparc.c: Stubs for the lazy fetch trampoline.
941
942 2008-02-21  Mark Probst  <mark.probst@gmail.com>
943
944         * mini.c: Fetch data out of the extensible part of the runtime
945         generic context instead of calling a helper function.
946
947         * generic-sharing.c: Some functions moved into
948         metadata/generic-sharing.c.  Helper function for fetching other
949         types now checks and asserts against extensible rgctx (just for
950         debugging purposes - the helper function isn't called anymore
951         unless for debugging).
952
953 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
954
955         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
956         for tail calls up to the point that the tests in iltests.exe run. Also add a
957         dummy CKFINITE implementation.
958         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
959         needed for trampoline LMF frames.
960
961         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
962         trampoline LMF frames.
963
964 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * mini.c (inline_method): clean any pending loader error when inlining fail.
967         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
968
969 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
970
971         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
972
973         * aot-runtime.c (decode_patch_info): Ditto.
974
975         * mini.c (mono_resolve_patch_target): Ditto.
976         
977         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
978         icall wrappers.
979
980         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
981         
982         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
983         if it references an icall address.
984
985 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
986
987         * cpu-s390x.md: Remove some more unused opcodes.
988         
989         * cpu-s390x.md: Remove some unused opcodes.
990
991         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
992         mono_op_imm_to_op ().
993
994         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
995         instead of a switch statement.
996         
997         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
998         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
999
1000         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
1001         
1002         * mini-codegen.c: Remove unused mono_regstate2_... functions.
1003
1004         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
1005         -1.
1006
1007 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * driver.c (mono_main): Improve error reporting when an assembly cannot be
1010         opened. Fixes #362607.
1011
1012         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
1013
1014         * iltests.il.in: Add a test for static methods in interfaces.
1015
1016 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * genmdesc.c (build_table): Fix a crash on older glib versions.
1019
1020         * cpu-sparc.md: Remove some unused opcodes.
1021         
1022         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
1023         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
1024
1025         * cpu-amd64.md: Remove some unused opcodes.
1026
1027         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
1028         like the other opcodes.
1029
1030 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
1033
1034         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
1035
1036         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
1037         variables 'cfg' instead of 'm' for consistency.
1038
1039         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
1040
1041         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
1042         argument holding the vtype return address, to avoid the ambigious use of
1043         cfg->ret for this purpose.
1044
1045         * mini.c (NEW_RETLOADA): Use vret_addr if set.
1046
1047         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
1048         
1049         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
1050         new mono_print_ins () function which only takes one argument.
1051
1052 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
1055         macro arguments.
1056
1057 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
1058
1059         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
1060
1061         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
1062
1063         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
1064         opcodes and other small changes.
1065
1066         * mini-ops.h: Add some new opcodes from the linear IR branch.
1067
1068         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
1069
1070         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
1071         opcodes, use the REG_MEMBASE opcodes instead.
1072         
1073         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
1074         opcodes, use the REG_MEMBASE opcodes instead.
1075         
1076         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
1077         linear IR branch.
1078
1079         * mini.c (mono_op_imm_to_op): New helper function.
1080
1081         * mini-ops.h: Add some opcodes from linear IR branch.
1082
1083 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
1086         <tsv@solvo.ru>.
1087
1088 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
1089
1090         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
1091         OP_ICONV_TO_R4/R8.
1092
1093         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
1094
1095 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * aot-compiler.c (emit_method_code): Add an assert.
1098
1099         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
1100         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
1101         methods.
1102
1103 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
1106         some load/store opcodes so they are consistent. 
1107         (mono_arch_emit_prolog): Simplify some code.
1108
1109         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
1110
1111         * objects.cs: Add tests for large argument offsets on ARM.
1112
1113         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
1114         stack offsets. Fixes #359651.
1115
1116         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
1117
1118         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
1119
1120         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
1121
1122         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
1123
1124         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
1125
1126         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
1127         rid of CEE_CONV_R_UN.
1128
1129         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
1130
1131 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
1134
1135         * mini.c (mono_normalize_opcodes): Add some more opcodes.
1136
1137         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
1138
1139         * cpu-amd64.md: Remove some unused opcodes.
1140
1141         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
1142
1143         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
1144
1145         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
1146         arch specific functions for its parts. Call the peephole pass after local
1147         regalloc so the prolog can compute a more accurate max_offset.
1148         
1149         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
1150         the corresponding OP_I/OP_L opcodes.
1151
1152         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
1153
1154         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
1155
1156 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
1159         as they are handled in mini.c.
1160
1161         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
1162         
1163         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
1164         case since it is handled in mini.c.
1165
1166         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
1167
1168         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
1169
1170         * *.c: Use the new opcodes in the IR and back end code.
1171
1172         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
1173
1174         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
1175
1176 2008-02-06  Mark Probst  <mark.probst@gmail.com>
1177
1178         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
1179         an assert because it has a race condition.
1180
1181 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
1184
1185         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
1186
1187         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
1188
1189         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
1190         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
1191
1192 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * cpu-amd64.md (move): Correct the maximum size of move.
1195
1196 2008-02-05  Mark Probst  <mark.probst@gmail.com>
1197
1198         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
1199         the generic class init trampoline to return quickly if the class
1200         is already inited.
1201
1202 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
1205         issues where an 32 bit callsite cannot be patched by a 64 bit address.
1206
1207 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
1208
1209         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
1210         branch.
1211
1212 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
1213
1214         * objects.cs: Add some soft-float tests.
1215
1216         * mini.c: Fix a couple more soft-float issues.
1217
1218         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
1219
1220         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
1221         avoid a REX prefix.
1222
1223 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
1226         exception happens while compiling a virtual method.
1227
1228 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
1231         
1232         * mini-sparc.c: Fix build.
1233
1234         * mini-sparc.c (get_call_info): Add support for generic sharing.
1235
1236         * mini-exceptions.c: Add a FIXME.
1237
1238 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
1241         altstack handling code.
1242
1243         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
1244         
1245         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
1246
1247         * mini-s390.c: Add support for generic sharing.
1248
1249         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
1250         Fix CAS on s390.
1251         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
1252
1253         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
1254
1255         * mini-s390x.c: Add support for generic sharing.
1256         
1257         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
1258         Fix CAS on ia64.
1259         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
1260
1261         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
1262         can be used since it takes a 16 bit signed immediate.
1263
1264         * inssel-s390x.brg: Fix OP_SETRET.
1265
1266         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
1267
1268         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
1269
1270         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
1271
1272         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
1273
1274         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
1275         in one place.
1276
1277         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
1278         stuff.
1279
1280         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
1281         of the unused mono_arch_patch_delegate_trampoline stuff.
1282
1283 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * basic-long.cs: Move the fp related tests to basic-float.cs.
1286
1287         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
1288
1289         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
1290
1291         * basic-calls.cs: Add a test for proper float argument passing.
1292
1293         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
1294         if the context corresponds to an exception received through a signal.
1295
1296         * exceptions.cs: Add a test for nullref handling at the start of a try
1297         clause.
1298
1299         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
1300
1301         * jit-icalls.c (mono_break): New JIT icall.
1302
1303         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
1304
1305         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
1306
1307 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * cpu-*.md: Get rid of unused opcodes.
1310
1311         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
1312
1313         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
1314         by all platforms.
1315
1316         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
1317         define.
1318
1319         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
1320         the arch independent trampoline code in mini-trampolines.c.
1321
1322         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
1323
1324         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
1325
1326         * mini-s390.h: Remove an unused define.
1327         
1328         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
1329         the arch independent trampoline code in mini-trampolines.c.
1330
1331         * mini-arm.c (mono_arch_emit_prolog): Fix build.
1332
1333 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
1336
1337         * mini-s390.c (mono_arch_emit_prolog): Fix build.
1338
1339         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
1340
1341         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
1342
1343         * cpu-amd64.md: Use smaller sizes for int opcodes.
1344
1345         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
1346
1347         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
1348         objects.cs.
1349
1350         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
1351         debugging.
1352
1353         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
1354         instead of though a pointer to save an indirection when accessing elements of
1355         the array.
1356
1357         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
1358         some typos.
1359         (NOT_IMPLEMENTED): New helper macro.
1360         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
1361         of a bb.
1362
1363         * *.c: Use the new helper macro.
1364
1365 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
1366
1367         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
1368
1369 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
1372         stack slots.
1373
1374 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
1377         profiling is enabled.
1378         
1379         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
1380         the end.
1381         (mono_arch_emit_prolog): Add more first bblock optimizations.
1382
1383         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
1384         in order if possible.
1385         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
1386         bblock, since the arguments are still in their original registers.
1387
1388         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
1389
1390 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
1393         as well.
1394
1395         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
1396         offset 0.
1397
1398         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
1399
1400         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
1401         process async exceptions received while in unmanaged code.
1402
1403         * mini.c (mini_init): Install a callback with the runtime which will be called
1404         when a thread receives an async exception while in unmanaged code.
1405
1406         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
1407
1408         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
1409
1410 2008-01-16  Wade Berrier  <wberrier@novell.com>
1411
1412         * cpu-g4.md:
1413         * cpu-arm.md:
1414         * cpu-s390x.md:
1415         fix build
1416
1417 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
1420         compilation with sun cc.
1421
1422         * cpu-*.md: Fix the build.
1423
1424         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
1425
1426         * mini-amd64.h: Add some comments to the MonoLMF structure.
1427
1428         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
1429         
1430         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
1431         in the LMF structure if possible. This saves two instructions in the
1432         managed->native wrappers.
1433
1434         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
1435
1436 2008-01-16  Mark Probst  <mark.probst@gmail.com>
1437
1438         * generic-sharing.c: New type argument lookup code which uses the
1439         runtime generic context template.
1440
1441 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
1444
1445         * mini-arm.c (add_general): Fix arm eabi parameter passing.
1446         (mono_arch_output_basic_block): Fix localloc implementation.
1447
1448         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
1449
1450         * mini-ia64.c (peephole_pass): Fix ia64 build.
1451
1452         * mini-amd64.c (peephole_pass): Fix a warning.
1453         
1454         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
1455         at a constant offset from sp/fp.
1456
1457         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
1458         instead of obtaining it from *lmf in the managed method case.
1459
1460 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
1463
1464 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
1465
1466         * mini.h (MonoInstList): New type.
1467         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
1468         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
1469         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
1470         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
1471         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
1472         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
1473         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
1474         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
1475         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
1476         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
1477         MONO_INST_LIST_FOR_EACH_ENTRY,
1478         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
1479         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
1480         mono_inst_list_first, mono_inst_list_last,
1481         mono_inst_list_next, mono_inst_list_prev): New instruction
1482         list handling interfaces.
1483         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
1484         list head 'ins_list'.
1485         (MonoInst): Replace next pointer with list head 'node'.
1486         (MonoCallInst): Make 'out_args' a MonoInstList.
1487         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
1488         (MonoCompile): Delete reverse_inst_list and
1489         reverse_inst_list_len.
1490         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
1491         mono_arch_lowering_pass, mono_arch_local_regalloc,
1492         mono_arch_output_basic_block, mono_arch_emit_prolog):
1493         Convert to new instruction lists.
1494         (insert_after_ins): Delete.
1495         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
1496         instruction lists.
1497         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
1498         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
1499         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
1500         mono_emulate_opcode, mono_emit_load_got_addr,
1501         inline_method, mono_method_to_ir, mono_print_bb_code,
1502         print_dfn, decompose_pass, nullify_basic_block,
1503         replace_out_block_in_code, remove_block_if_useless,
1504         merge_basic_blocks, move_basic_block_to_end,
1505         try_unsigned_compare, optimize_branches, mono_print_code,
1506         mini_select_instructions, remove_critical_edges): Likewise.
1507         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
1508         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
1509         mono_arch_output_basic_block, mono_arch_emit_prolog):
1510         Likewise.
1511         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
1512         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
1513         mono_arch_output_basic_block): Likewise.
1514         (inst_list_prepend, insert_after_ins): Delete.
1515         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
1516         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
1517         instruction lists.
1518         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
1519         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
1520         mono_arch_emit_prolog): Likewise.
1521         * cfold.c (mono_constant_fold): Likewise.
1522         * liveness.c (visit_bb, mono_analyze_liveness,
1523         optimize_initlocals): Likewise.
1524         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
1525         * graph.c (mono_draw_code_cfg): Likewise.
1526         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
1527         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
1528         mono_ssa_cprop): Likewise.
1529         * abcremoval (get_relations_from_previous_bb, process_block):
1530         Likewise.
1531         * local-propagation (mono_cprop_invalidate_values,
1532         mono_local_cprop_bb): Likewise.
1533         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
1534         peephole_pass, mono_arch_output_basic_block,
1535         mono_arch_emit_prolog): Likewise.
1536         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
1537         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
1538         mono_arch_emit_prolog): Likewise.
1539         (insert_after_ins): Delete.
1540         * aliasing.c (print_code_with_aliasing_information,
1541         mono_build_aliasing_information, mono_aliasing_deadce):
1542         Convert to new instruction lists.
1543         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
1544         peephole_pass, NEW_INS, mono_arch_lowering_pass,
1545         mono_arch_local_regalloc, mono_arch_output_basic_block):
1546         Likewise.
1547         (insert_after_ins): Delete.
1548         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
1549         peephole_pass, mono_arch_output_basic_block): Convert to
1550         new instruction lists.
1551         * mini-codegen (InstList, inst_list_prepend,
1552         insert_after_ins): Delete.
1553         (insert_before_ins, get_register_force_spilling,
1554         get_register_spilling, free_up_ireg, free_up_reg,
1555         create_copy_ins, create_spilled_store, alloc_int_reg,
1556         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
1557         to new instruction lists.
1558         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
1559         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
1560         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
1561         (insert_after_ins): Delete.
1562         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
1563         mono_arch_local_regalloc, mono_arch_output_basic_block,
1564         mono_arch_call_opcode): Convert to new instruction lists.
1565         (insert_after_ins): Delete.
1566         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
1567         peephole_pass, mono_arch_output_basic_block,
1568         mono_arch_emit_prolog): Convert to new instruction lists.
1569
1570 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
1571
1572         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
1573
1574         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
1575         Fixes #353182.
1576
1577         * Makefile.am (version.h): Make this work with non-bash shells.
1578
1579 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
1582
1583 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
1586         the InitializeArray optimization.
1587
1588 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
1589
1590         * mini.c driver.c: Don't include os/gc_wrapper.h.
1591
1592 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * mini.c (print_jit_stats): Print GC statistics if available.
1595
1596 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
1599
1600 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
1603
1604 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
1605
1606         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
1607         
1608         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
1609
1610         * driver.c (mono_main): Ditto.
1611
1612 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
1615
1616         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
1617         in the vtable can't be encoded.
1618         (compile_method): Ditto.
1619
1620 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
1623         defined.
1624
1625         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
1626         lmf->rbp.
1627
1628         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
1629         the top LMF entry belongs to the current method.
1630
1631         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
1632
1633 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
1636         
1637         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
1638
1639         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
1640
1641         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
1642
1643         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
1644
1645         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
1646         implementation.
1647
1648         * basic-float.cs: Add an ulong->double cast test.
1649
1650 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * mini.c (mono_method_to_ir): Fix a warning.
1653
1654 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * mini-ops.h: Add OP_SWITCH.
1657
1658         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
1659         CEE_SWITCH in back-end code, use OP_SWITCH instead.
1660
1661 2007-12-11  Geoff Norton  <gnorton@novell.com>
1662
1663         * mini-s390x.c: Minor change to the MAX() define to allow
1664         it to compile with other gcc versions.
1665
1666 2007-12-11  Geoff Norton  <gnorton@novell.com>
1667
1668         * cpu-s390x.md:
1669         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
1670
1671 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1672
1673         exceptions-arm.c (mono_arch_get_restore_context): Restore
1674         the frame pointer.
1675
1676         exceptions-arm.c (throw_exception): Save the frame pointer.
1677         This is a partial fix for #323747. Only the client side is
1678         fixed.
1679
1680 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
1683         was using an unrelated variable to log the class which
1684         needed the cctor to be called. This was crashing on arm.
1685
1686 2007-12-09  Robert Jordan  <robertj@gmx.net>
1687
1688         * mini-x86.c (mono_arch_emit_epilog):
1689         Consider all kinds of 64-bit types. Fixes #323114.
1690
1691 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
1694
1695 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * mini-amd64.c (peephole_pass): Add a missing instruction check.
1698
1699 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1700
1701         * mini.c: run type ctor before allocating an object, not only
1702         when running it's constructor method (fixes at least part of bug #342507).
1703
1704 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
1705         
1706         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
1707         
1708         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
1709         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
1710         function.
1711
1712         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
1713         mono_generic_class_init_trampoline () the same as it is done with the other
1714         trampolines.
1715
1716         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
1717         aot-runtime.c aot-compiler.c: Implement AOT support.    
1718
1719 2007-12-07  Mark Probst  <mark.probst@gmail.com>
1720
1721         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
1722         build for archs which don't have the vtable trampoline defined
1723         yet.
1724
1725 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
1728
1729         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
1730
1731         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
1732
1733         * tramp-<ARCH>.c: Use the new helper function.
1734
1735 2007-12-07  Mark Probst  <mark.probst@gmail.com>
1736
1737         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
1738         trampoline call, which takes a vtable argument.
1739
1740         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
1741         OP_TRAMPCALL_VTABLEs like other calls.
1742
1743         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
1744         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
1745         call.  Implemented a support function which fetches the vtable
1746         from a register set.
1747
1748         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
1749         Implemented a generic class init trampoline, using the
1750         OP_TRAMPCALL_VTABLE opcode.
1751
1752         * mini.c: Implemented static field access when sharing generic
1753         code.  This implies initing the class using the new
1754         OP_TRAMPCALL_VTABLE call.
1755
1756 2007-12-07  Mark Probst  <mark.probst@gmail.com>
1757
1758         * mini.c: Don't compile methods with sharing enabled if their
1759         classes are disabled for sharing.
1760
1761 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
1762
1763         * inssel.brg: Add a missing sign extension to the GETCHR and array access
1764         opcodes. Fixes #346563.
1765
1766         * objects.cs: Add a new test.
1767
1768         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
1769
1770         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
1771         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
1772
1773 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
1776
1777 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
1780         code stream.
1781
1782 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
1785
1786         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
1787         optimization in the AOT case.
1788         
1789 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
1792         
1793         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
1794
1795         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
1796
1797         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
1798
1799         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
1800         is created by the inlined delegate ctor.
1801
1802         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
1803
1804         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
1805
1806 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * cpu-x86.md: Fix the length of ckfinite.
1809
1810 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
1811
1812         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
1813         
1814         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
1815         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
1816
1817         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
1818
1819         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
1820         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
1821
1822 2007-11-28  Martin Baulig  <martin@ximian.com>
1823
1824         * mini-x86.c
1825         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
1826         after creating the trampoline.
1827
1828 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * aot-runtime.c (load_aot_module): Check runtime version if needed.
1831
1832         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
1833         the same version.
1834
1835         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
1836         instead of the calling method to help AOT.
1837
1838         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
1839
1840 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
1843         is defined.
1844
1845 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
1848         
1849         * aot-compiler.c (compile_method): Correct check for generic method definitions.
1850         (encode_method_ref): No need to handle generic method definitions specially.
1851
1852         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1853
1854         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
1855         decode_klass_info.
1856
1857         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
1858         encode_klass_info.
1859         (compile_method): Enable generic sharing.
1860
1861 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
1864         (mini_method_compile): Add preliminary support for AOTing shared generic code.
1865
1866         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
1867         generic code.
1868
1869         * mini-trampolines.c: Fix a warning.
1870
1871         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
1872         NEW_PCONST.
1873         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
1874         (generic_class_is_reference_type): Remove unused function.
1875
1876         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
1877         in the generic vtable trampoline case.
1878
1879         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
1880         
1881         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
1882         return an AOT method based on a vtable slot.
1883
1884         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
1885
1886         * mini.c (mini_get_vtable_trampoline): Export this.
1887
1888 2007-11-22  Martin Baulig  <martin@ximian.com>
1889
1890         * debug-debugger.h
1891         (MonoDebuggerInfo): Move `debugger_version' up.
1892
1893 2007-11-22  Martin Baulig  <martin@ximian.com>
1894
1895         * mini-amd64.c
1896         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
1897
1898         * mini-trampolines.c
1899         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
1900         after compiling the method.
1901
1902 2007-11-20  Martin Baulig  <martin@ximian.com>
1903
1904         * debug-mini.c
1905         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
1906         (mono_debugger_remove_breakpoint): Likewise.
1907         (mono_debugger_check_breakpoints): Likewise.
1908
1909         * debug-debugger.c: Implement the new breakpoint interface here.
1910
1911 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
1914         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
1915
1916         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
1917
1918 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
1921
1922         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
1923         mini.c.
1924
1925         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
1926         mini.c.
1927
1928         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
1929         returning a vtype in a register.
1930
1931         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
1932         here from the arch specific code.
1933
1934         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
1935         mini.c.
1936
1937         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
1938         (mono_arch_emit_prolog): Increment maximum prolog size.
1939
1940         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
1941         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
1942
1943         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
1944         MonoGenericSharingContext.
1945
1946         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
1947         MonoGenericSharingContext. Allocate memory from the cfg mempool.
1948
1949 2007-11-15  Mark Probst  <mark.probst@gmail.com>
1950
1951         * mini.c, mini.h, generic-sharing.c: Functions for producing code
1952         which extract fields out of the runtime generic context.  Full
1953         sharing of the NEWARR opcode.
1954
1955 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
1956
1957         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
1958         --enable-minimal=ssa.
1959
1960 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * mini-trampolines.c (mono_delegate_trampoline): Update after 
1963         mono_marshal_get_delegate_invoke () signature change.
1964
1965 2007-11-13  Mark Probst  <mark.probst@gmail.com>
1966
1967         * mini.c: Removed the shared context in favor of the generic
1968         sharing context.  Allocate the MonoJitInfo structure with room for
1969         the generic sharing context if it's needed.
1970
1971         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
1972         domain-internals.h now.
1973
1974         * mini-x86.c: Pass the generic sharing context to get_call_info ().
1975
1976         * generic-sharing.c: Several changes for working without a shared
1977         context and instead operating on open types instead.
1978
1979 2007-11-12  David S. Miller  <davem@davemloft.net>
1980
1981        * inssel-sparc.brg: Fix double instruction emit.
1982
1983 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
1986         Get/Set/Address methods.
1987         
1988         * mini.c debug-debugger.c mini-trampolines.c: Update after 
1989         mono_marshal_get_delegate_invoke signature change.
1990
1991 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
1992
1993         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
1994         This can happens with dynamic methods. Fixes the other bug in #322722.
1995
1996 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
1997
1998         * tramp-arm.c (mono_arch_patch_callsite): Support patching
1999         BX call sequence.
2000
2001         * mini-arm.c (arm_patch): Implement patching of BX call
2002         sequence. Fixes one of the bugs in #322722.
2003
2004 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
2005
2006        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
2007        under Linux.  We only need to flush every 32-byte cache line.    
2008
2009 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
2010
2011         * mini.c:
2012         move_basic_block_to_end: Add branches when needed, eventually creating
2013         a new BB.
2014         optimize_branches: added a parameter that tells if it's ok to create
2015         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
2016         and avoid calling move_basic_block_to_end when it's not ok.
2017         Fixes bug 318677.
2018
2019 2007-11-07  Mark Probst  <mark.probst@gmail.com>
2020
2021         * mini.c: Abort inlining call to InitializeArray if something
2022         looks wrong.  Let the icall handle it, which now has proper safety
2023         checks.
2024
2025 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2026
2027         * mini.c (mono_spill_call): add support for soft-float.
2028
2029         * mini.c (mono_method_to_ir): add support for soft-float
2030         to inlined functions that return float.
2031
2032         * mini.c (mono_method_to_ir): add support for soft-float
2033         to cee_stsfld opcode on float fields.
2034
2035 2007-11-05  Geoff Norton  <gnorton@novell.com>
2036
2037         * mini-x86.h: Fix the structure access for X86 Leopard.
2038
2039
2040 2007-11-05  Martin Baulig  <martin@ximian.com>
2041
2042         * mini-trampolines.c
2043         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
2044         after compiling the method to notify the debugger.
2045
2046 2007-11-05  Martin Baulig  <martin@ximian.com>
2047
2048         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
2049
2050 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
2053         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
2054
2055 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
2058         native-to-managed wrappers.
2059         
2060 2007-11-01  Geoff Norton  <gnorton@novell.com>
2061
2062         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
2063         members.
2064
2065 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
2066
2067         * mini.c, mini-x86.c: when getting back from unmanaged code
2068         to managed via a marshaled delegate we also need to set the
2069         right domain.
2070
2071 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
2072
2073         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
2074         for amd64.
2075
2076 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
2077
2078         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
2079         let the debugger or other external agents to tell the JIT when
2080         a sw breakpoint has been inserted in the code that the JIT needs
2081         to be able to inspect.
2082
2083 2007-10-31  Martin Baulig  <martin@ximian.com>
2084
2085         * debug-debugger.h
2086         (MonoDebuggerInfo): Remove `runtime_class_init'.
2087
2088 2007-10-30  Martin Baulig  <martin@ximian.com>
2089
2090         * debug-mini.h
2091         (mono_debugger_thread_created): Added `MonoThread *' argument.
2092         (mono_debugger_extended_notification): New public method.
2093         (mono_debugger_trampoline_compiled): New public method.
2094
2095         * debug-mini.c
2096         (MonoDebuggerThreadInfo): Added `thread' and
2097         `extended_notifications' fields.
2098
2099         * debug-debugger.c
2100         (debugger_executable_code_buffer): New static variable.
2101
2102         * debug-debugger.h
2103         (MonoDebuggerInfo): Added `executable_code_buffer',
2104         `executable_code_buffer_size', `breakpoint_info_area',
2105         `breakpoint_table' and `breakpoint_table_size'.
2106
2107 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
2108
2109         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
2110         that IP  either is an unused value or the vtable pointer. IMT 
2111         calls use vtable + offset now. Reduced by almost half the size
2112         of IMT entries.
2113
2114 2007-10-26  Jonathan Chambers <joncham@gmail.com>
2115
2116         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
2117         defines to access param registers. Replace long usage with
2118         gsize as sizeof(long) != sizeof(void*) on Win64.
2119
2120         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
2121         on Win64. Fix intrinsic, use _AddressOfReturnAddress
2122         instead of non-existant _GetAddressOfReturnAddress.
2123
2124         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
2125         param registers. Save/restore %rdi and %rsi in MonoLMF.
2126
2127         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
2128         param registers. Modify (throw_exception) signature to take 
2129         %rdi and %rsi on Win64. 
2130
2131         Code is contributed under MIT/X11 license.
2132
2133 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2134
2135         * helpers.c: unlink debugging output files.
2136
2137 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini.c: Move mono_create_ftnptr () to object.c.
2140
2141 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
2144         optional. This function can now be used to disassemble code generated
2145         outside the JIT such as trampolines and IMT thunks.
2146
2147         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
2148
2149         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
2150         vtable pointer from a ldr instruction.
2151
2152         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
2153         new IMT call sequence.
2154
2155         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
2156         call sequence for interface invocations.
2157
2158         * mini-arm.c (mono_arch_emit_imt_argument): added, required
2159         for imt support. This function is empty since IMT on ARM requires no
2160         special handling on the IR side.
2161
2162         * mini-arm.c (mono_arch_find_imt_method): added, required for
2163         imt support.
2164
2165         * mini-arm.c (mono_arch_find_this_argument): added, required
2166         for imt support.
2167
2168         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
2169         a ldr instruction to load a value stored in the code stream.
2170
2171         * mini-arm.c (mono_arch_build_imt_thunk):added, required
2172         for imt support.
2173
2174
2175 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini.c (mini_init): Install the jump trampoline callback.
2178
2179 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
2180
2181         * mini-trampolines.c: handle synchronized methods with the common
2182         vtable trampoline (bug #335601).
2183
2184 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
2187
2188         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
2189         64 bit platforms.
2190
2191         * mini-ia64.h mini-ia64.c: Add support for IMT.
2192
2193         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
2194         prolog. Fixes #331958.
2195
2196 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
2197
2198         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
2199
2200 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
2201
2202         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
2203         trampoline.
2204
2205 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
2206
2207         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
2208         trampoline.
2209
2210 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
2211
2212         * mini-x86.c, mini-x86.h: x86 support for the common vtable
2213         trampoline.
2214
2215 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
2216
2217         * mini-trampolines.c: changed the magic rampoline to understand
2218         the common vtable trampoline method: the method to invoke is
2219         determined by the vtable displacement of the call.
2220
2221 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
2222
2223         * mini.c, mini.h: register the common vtable trampoline if the
2224         architecture supports it.
2225
2226 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
2227
2228         * cpu-amd64.md: use the correct max length for tls_get.
2229
2230 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
2233         CEE_STELEM_ANY. Fixes #333696.
2234
2235 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
2236
2237         * exceptions-x86.c: provide more graceful handling of the case where
2238         we followed a bogus function pointer from managed code (bug #332866).
2239
2240 2007-10-11  Mark Probst  <mark.probst@gmail.com>
2241
2242         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
2243         replaces the generic_shared flag and will carry more information
2244         in the future.
2245
2246         * generic-sharing.c: Added mini_type_stack_size() which allows
2247         allows open types if given a generic sharing context.
2248         mini_get_basic_type_from_generic() takes a
2249         MonoGenericSharingContext* instead of a MonoCompile* now.
2250
2251         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
2252         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
2253         mini-sparc.c, mini-x86.c: Trivial changes required by the two
2254         changes above.  Just passing arguments through to the right
2255         places.
2256
2257 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
2258
2259         * mini-arm.c: unify the call emission to emit_code_seq().
2260
2261 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
2262
2263         * tramp-arm.c: reduced the trampoline size.
2264
2265 2007-10-10  Mark Probst  <mark.probst@gmail.com>
2266
2267         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
2268         variable handling out of arch-specific code.
2269
2270 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
2271
2272         * mini-arm.c: implemented fast delegate dispatch.
2273
2274 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
2277         that fp elimination is turned off if the space required by locals is too
2278         big. Fixes #331958.
2279
2280 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
2281
2282         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
2283         ARM to the new style trampoline.
2284
2285 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
2288
2289         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
2290
2291 2007-10-09  Martin Baulig  <martin@ximian.com>
2292
2293         * debug-debugger.h
2294         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
2295         `field_info_offset_offset'.     
2296
2297 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
2298
2299         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
2300         removed more internal usage of the r11 register and made it available
2301         to the register allocator.
2302
2303 2007-10-08  Mark Probst  <mark.probst@gmail.com>
2304
2305         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
2306         when sharing generics and treat type variables as references.
2307
2308 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2309
2310         * mini-ppc.c: started removing the internal uses of register r11
2311         to eventually allow the register allocator to manage it as an
2312         additional available register.
2313
2314 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
2315
2316         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
2317
2318 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
2319
2320         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
2321         specific trampolines as they are not performance critical as a jump
2322         target (maybe align as before only for AOT code?). This saves about
2323         200 KB of native code on x86 for monodevelop startup.
2324
2325 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2326
2327         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
2328         monodevelop startup.
2329
2330 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
2333
2334         * mini-sparc.h mini-sparc.c: Implement IMT support.
2335
2336         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
2337         its smaller and doesn't clobber sparc_g1.
2338
2339         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
2340
2341 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2342
2343         * mini-ppc.c: optimized the size of the IMT thunks a bit.
2344
2345 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
2346
2347         * mini-ppc.c: implemented fast delegate invocation.
2348
2349 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
2350
2351         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
2352
2353 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2354
2355         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
2356         code to the new style trampoline in preparation for IMT support.
2357
2358 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
2359
2360         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
2361         systems already. This also reduces the specific trampiline sizes and
2362         prepares for the use of r12 as the IMT identifier register.
2363
2364 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
2365
2366         * mini-mips.h: endianess fix (simplified from a patch by
2367         Thomas Kunze <thommy@tabao.de>, bug #323737).
2368
2369 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2370
2371         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
2372         to access ucontext fields and enable netbsd support
2373         (partially from Magnus Henoch <mange@freemail.hu>).
2374
2375 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
2376
2377         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
2378         use the preprocessor from the CPP env var if it is set.
2379
2380 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2381
2382         * mini-trampolines.c: fixed an assertion and moved it earlier in the
2383         code, before interface_offset gets used.
2384
2385 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
2388         mono_class_setup_vtable () before accessing klass->vtable.
2389
2390 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
2393         hackish.
2394
2395 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
2396
2397         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
2398         IMT slots (this saves hundreds of KB of memory in programs like
2399         IronPython and Monodevelop).
2400
2401 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
2402
2403         * mini.c: print the delegate counter.
2404
2405 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
2406
2407         * mini-x86.c: make it easier to enable the debugging code for IMT
2408         slots.
2409
2410 2007-09-28  Martin Baulig  <martin@ximian.com>
2411
2412         * debug-debugger.h
2413         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
2414         `mono_method_klass_offset' and `mono_method_token_offset'.
2415
2416 2007-09-20  Mark Probst  <mark.probst@gmail.com>
2417
2418         * mini.c: First generics sharing implementation.  Can only share
2419         in very simple cases.  If sharing doesn't work it falls back to
2420         dedicated compilation.
2421
2422         * mini.h: Flag in MonoCompile to specify whether generic
2423         compilation is shared.  Flags enum for marking which generic inst
2424         of a context is used.  Prototypes for helper functions.
2425
2426         * generic-sharing.c: Helper functions for generic method sharing.
2427
2428         * optflags-def.h: Optimization flag (gshared) for enabling generic
2429         method sharing added.
2430
2431         * Makefile.am: generic-sharing.c added.
2432
2433 2007-09-19 Daniel Nauck <dna@mono-project.de>
2434
2435         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
2436
2437 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
2438         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
2439         fixes bug 325507.
2440
2441 2007-09-19  Martin Baulig  <martin@ximian.com>
2442
2443         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
2444         mono_debug_cleanup() is now part of mono_cleanup().
2445
2446 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2447
2448         * driver.c (mono_main): Fix a warning.
2449
2450 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * aot-compiler.c: Optimize various parts when processing large assemblies.
2453         Fixes ##325568.
2454
2455         * mini.c (mono_patch_info_hash): Improve hash function.
2456
2457 2007-09-14  Jonathan Chambers <joncham@gmail.com>
2458
2459         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
2460         
2461         Code is contributed under MIT/X11 license.
2462
2463 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * mini.c (mini_init): Fix a leak.
2466
2467         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
2468
2469 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
2470
2471         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
2472
2473 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
2476
2477 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
2480         variance tests.
2481
2482         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
2483
2484         * mini.c (handle_alloc): Enable managed allocators in AOT code.
2485
2486         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
2487
2488         * aot-runtime.c (decode_patch_info): Ditto.
2489
2490 2007-09-12  Jonathan Chambers <joncham@gmail.com>
2491
2492         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
2493         static case. Cache delegates in architecture specific code, 
2494         based on number of parameters.
2495         
2496         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
2497         in architecture specific code, based on number of parameters.
2498         
2499         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
2500         caching happen in architecture specific code now.
2501         
2502         Code is contributed under MIT/X11 license.
2503
2504 2007-09-12  Jonathan Chambers <joncham@gmail.com>
2505
2506         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
2507         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
2508         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
2509
2510         Code is contributed under MIT/X11 license.
2511
2512 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
2513         * mini.c: (mono_thread_abort) Fixed bug #82416.
2514
2515 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
2516
2517         * mini.: hook the new managed GC allocation feature into the JIT.
2518
2519 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
2520
2521         * mini.c: implementation for the new runtime tls opcode.
2522
2523 2007-09-11  Martin Baulig  <martin@ximian.com>
2524
2525         * debug-debugger.h
2526         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
2527         `mono_method_inflated_offset'.
2528
2529 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * driver.c mini.h mini.c: Add a new devel command line option for injecting
2532         async exceptions into a method.
2533
2534         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
2535         purpose of testing whenever the unwinder works at every instruction.
2536
2537 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
2538
2539         * mini.c: check accessibility of method used in ldftn (fixes
2540         bug #82635).
2541
2542 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
2545
2546         * inssel.brg: Fix a warning.
2547
2548 2007-09-03  Martin Baulig  <martin@ximian.com>
2549
2550         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
2551         now takes the `main_method' as argument.
2552
2553 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * cpu-sparc.md (endfilter): Add missing src1:i argument.
2556
2557 2007-08-30  Jonathan Chambers <joncham@gmail.com>
2558
2559         * driver.c: include the cil-coff.h header on Windows.
2560         
2561         Code is contributed under MIT/X11 license.
2562
2563 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
2564
2565         * mini.c, driver.c: don't include the cil-coff.h header.
2566
2567 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
2568
2569         * mini.c: flag places that needs fixes fo soft-float support.
2570
2571 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
2572
2573         * mini.h, inssel-float.brg: fix soft-float constant loads on big
2574         endian systems (partially from Dean Jenkins, bug #81924).
2575
2576 2007-08-28  Mark Probst  <mark.probst@gmail.com>
2577
2578         * mini.c (check_linkdemand): Remove embedded reference object in
2579         call to LinkDemandSecurityException.
2580         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
2581         with an IntPtr instead of a reference object.
2582
2583 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
2584
2585         * mini.c (handle_initobj): Handle alignment properly.
2586
2587         * inssel.brg (mini_emit_memset): Ditto. 
2588
2589         * inssel.brg (mini_emit_memcpy): Ditto. 
2590
2591         * inssel-sparc.brg: Ditto.              
2592
2593         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
2594
2595 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
2598         exceptions raised in unmanaged code. Fixes part of #82594.
2599
2600 2007-08-24  Mark Probst  <mark.probst@gmail.com>
2601
2602         * mini.c (mono_method_to_ir), declsec.c
2603         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
2604
2605 2007-08-22  Martin Baulig  <martin@ximian.com>
2606
2607         * debug-mini.h
2608         (MonoDebuggerThreadInfo): New typedef.
2609         (mono_debugger_thread_table): New global variable.
2610         (mono_debugger_thread_created): New public function.
2611         (mono_debugger_thread_cleanup): New public function.
2612
2613         * debug-debugger.h
2614         (MonoDebuggerInfo):
2615         - removed `get_current_thread' and `lookup_assembly'.
2616         - removed `data_table'.
2617         - added `thread_table'.
2618
2619         * mini.c
2620         (mono_thread_start_cb): Call mono_debugger_thread_created().
2621         (mono_thread_attach_cb): Likewise.
2622         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
2623         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
2624         initial domain.
2625
2626         * driver.c (mono_main): Move mono_debug_init() up, before calling
2627         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
2628
2629 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
2630
2631         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
2632         together when passing several arguments of type double (gives a small
2633         speedup and saves a few bytes of generated code).
2634
2635 2007-08-20  Jb Evain  <jbevain@novell.com>
2636
2637         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
2638
2639 2007-08-20  Jb Evain  <jbevain@novell.com>
2640
2641         * mini.c (mono_method_to_ir): throw MethodAccessException
2642         and FieldAccessException instead of InvalidProgramException.
2643
2644 2007-08-20  Mark Probst  <mark.probst@gmail.com>
2645
2646         * mini.c: CoreCLR security checks.
2647
2648         * mini.h: Removed MonoSecurityMode (moved to
2649         metadata/security-manager.h) and mono_security_mode global var
2650         (replaced by set/get functions in security-manager.h).
2651
2652         * driver.c: Added "core-clr-test" security mode for testing.  Used
2653         set-function for setting security mode.
2654
2655 2007-08-17  Mark Probst  <mark.probst@gmail.com>
2656
2657         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
2658         the new jit_info_table.
2659
2660         * driver.c: Test code for the new jit_info_table (enabled by the
2661         define MONO_JIT_INFO_TABLE_TEST).
2662
2663 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
2666         detection of call <REG> instruction sequence. Fixes build on freebsd.
2667
2668 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * mini-exceptions.c: Fix a warning.
2671
2672 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
2675         stack overflow handling code on amd64 too.
2676
2677         * mini-exceptions.c (mono_setup_altstack): Make this use 
2678         mono_thread_get_stack_bounds ().
2679
2680         * mini-x86.h: Disable sigaltstack on solaris x86.
2681
2682 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
2683
2684         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
2685
2686 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
2687
2688         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
2689
2690 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
2693
2694         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
2695
2696 2007-08-03  Neale Ferguson <neale@sinenomine.net>
2697
2698         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
2699         due to alignment.
2700
2701 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
2702
2703         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
2704         to be emitted (bug #82281).
2705
2706 2007-08-01  Martin Baulig  <martin@ximian.com>
2707
2708         Merged the `debugger-dublin' branch.
2709
2710         * debug-debugger.h (MonoDebuggerInfo):
2711         Removed the `old_*' compatibility entries.
2712         Added `debugger_version' and `data_table'.
2713         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
2714         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
2715
2716         * debug-mini.c
2717         (MiniDebugMethodBreakpointInfo): Add `address_list'.
2718         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
2719         instead of a `gconstpointer'.
2720         (mono_debugger_insert_method_breakpoint): Return a
2721         `MonoDebugMethodAddressList *'.
2722
2723 2007-06-28  Martin Baulig  <martin@ximian.com>
2724
2725         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
2726
2727 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
2730         __builtin_frame_address () since it is broken on older gcc versions.
2731
2732 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
2733
2734         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
2735         on the stack overflow handling and made the managed stack overflows
2736         catchable in most cases using soft guard pages.
2737         * exceptions-x86.c: added code to restore the protection in the soft
2738         guard pages at the end of exception handling.
2739
2740 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
2743
2744 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
2745
2746         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
2747         exception handling.
2748
2749 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
2750
2751         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
2752         signal handling support until it has been ported to the new mechanism.
2753         * mini.c: fixed stack overflow detection and use the new
2754         architecture code  to handle signals on the altstack.
2755
2756 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
2757
2758         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
2759         stack overflows on the alt stack.
2760
2761 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
2762
2763         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
2764         stack overflows on the alt stack.
2765
2766 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
2767
2768         * exceptions-ppc.c: cleanup preparing for altstack support.
2769
2770 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
2771
2772         * exceptions-arm.c: cleanup preparing for altstack support.
2773
2774 2007-07-27  Mark Probst  <mark.probst@gmail.com>
2775
2776         * mini.c (print_jit_stats): Output hazard pointer stats.
2777
2778 2007-07-26  Mark Probst  <mark.probst@gmail.com>
2779
2780         * driver.c, mini.c: Replaced security mode flags with a single
2781         enum variable.
2782
2783 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
2784
2785         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
2786
2787 2007-07-25  Mark Probst  <mark.probst@gmail.com>
2788
2789         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
2790         (which doesn't do anything yet) for activating Core CLR
2791         (Silverlight) security.
2792
2793 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
2794
2795         * mini-codegen.c: work around a possible gcc bug on arm.
2796
2797 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
2798
2799         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
2800         message for platforms that don't support AOT compilation.
2801
2802 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
2803
2804         * mini.h, mini.c, driver.c: temporary smcs hack.
2805
2806 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
2807
2808         * mini-arm.h, mini-arm.c: arm EABI fixes.
2809
2810 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
2813         case.
2814
2815         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
2816         trampolines taking a method argument.
2817
2818         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
2819
2820         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
2821         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
2822
2823         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
2824         JIT compilation throws an exception. Fixes #82050.
2825
2826 2007-07-19  Mark Probst  <mark.probst@gmail.com>
2827
2828         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
2829         with the MONO_EXCEPTION_ defines.
2830
2831 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
2832
2833         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
2834         #82117.
2835         
2836         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
2837         the cause of an assertion.
2838
2839 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
2840
2841         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
2842         removed.
2843
2844 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
2845
2846         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
2847         assert. Should fix #82103.
2848
2849 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
2852         here too. Fixes #82095.
2853
2854         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
2855         addresses.
2856
2857         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
2858
2859         * mini-amd64.h: Enable IMT for amd64.
2860         
2861         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
2862
2863 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
2864
2865         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
2866
2867 2007-07-12  Mark Probst  <mark.probst@gmail.com>
2868
2869         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
2870         as soon as check_linkdemand sets an exception_type.
2871
2872 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
2873
2874         * mini-x86.c: fixed offsets for IMT call sequence.
2875         * mini-x86.h: enable IMT again.
2876
2877 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * trace.c (mono_trace_enter_method): Decode MonoType too.
2880
2881         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
2882
2883         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
2884
2885         * mini-amd64.c: Add preliminary IMT implementation.
2886         
2887 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
2888
2889         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
2890         understand the new IMT-base interface invocation (thanks to
2891         Daniel Nauck for the report and the remote debugging session).
2892
2893 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
2894
2895         * mini-x86.c: size and speed optimizations for the IMT bsearch.
2896
2897 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * Makefile.am (aotcheck): Make this actually use the AOTed code.
2900
2901 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
2902
2903         * mini-trampolines.c: implement AOT IMT support.
2904         * mini-x86.h: enable IMT support for wider testing.
2905
2906 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * inssel.brg (emit_imt_argument): Add aot support here.
2909
2910         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
2911
2912 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2913
2914         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
2915         of the IMT implementation, partially from massi, with my
2916         implementation of the bsearch sequence. Disabled by default until
2917         the AOT code is implemented.
2918
2919 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
2920
2921         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
2922
2923         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
2924
2925 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
2926
2927         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
2928         arch-independent IMT JIT code from Massimiliano
2929         Mantione (massi@ximian.com) with small cleanups from me.
2930
2931 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
2932
2933         * Makefile.am: fix svn invocation to get the svn revision to be
2934         independent of the local language (build fix).
2935
2936 2007-07-09  Mark Probst  <mark.probst@gmail.com>
2937
2938         * mini.c (inline_method): Reset cfg->exception_type if the
2939         inlining is aborted.  Fixes: 82049.
2940
2941 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
2942
2943         * mini.c: remove assert from exception handling code when exception_ptr
2944         is not set.
2945
2946 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * mini.c (mono_codegen): Add an assert.
2949
2950         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
2951         enter and leave code.
2952         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
2953
2954 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
2955
2956         * mini-ppc.c: fixed memory corruption for localloc(0)
2957         (bug #81852).
2958
2959 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
2960         
2961         * mini.c: Fix warnings.
2962
2963 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
2964
2965         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
2966         to emit better double->int conversions.
2967
2968 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
2969
2970         * mini.c: the provided Min/Max optimizations are valid for unisgned
2971         ints.
2972
2973 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
2974
2975         * 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
2976
2977 2007-06-28  Miguel de Icaza  <miguel@novell.com>
2978
2979         * mini.c (mono_running_on_valgrind): Add support for reporting the
2980         method and  its boundaries to valgrind.
2981
2982 2007-06-28  Martin Baulig  <martin@ximian.com>
2983
2984         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
2985
2986 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
2989
2990         * generic.2.cs: Add new test case.
2991
2992 2007-06-25  Martin Baulig  <martin@ximian.com>
2993
2994         Merged the `debugger-dublin' branch.
2995
2996         * debug-mini.c
2997         (mono_debugger_insert_method_breakpoint): New public method.
2998         (mono_debugger_remove_method_breakpoint): Likewise.
2999         (mono_debugger_check_breakpoints): New static method.
3000         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
3001
3002         * debug-debugger.h (MonoDebuggerInfo):
3003         Renamed (to keep backward compatibility in the vtable):
3004         `insert_breakpoint' -> `old_insert_breakpoint'.
3005         `remove_breakpoint' -> `old_remove_breakpoint'.
3006         `create_string' -> `old_create_string'.
3007         `lookup_class' -> `old_lookup_class'.
3008         `lookup_type' -> removed; changed into a dummy field.
3009         `lookup_assembly' -> `old_lookup_assembly'.
3010         Added (same functionality, but different signature):
3011         `create_string', `lookup_class', `lookup_assembly'
3012         Added new:
3013         `get_method_addr_or_bpt', `remove_method_breakpoint',
3014         `runtime_class_init'.
3015
3016         * debug-debugger.c: Merged the `debugger-dublin' branch.
3017
3018 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
3021         well.
3022         (peephole_pass): Likewise.
3023
3024 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
3025
3026         * driver.c: hopefully make setaffinity work also for ancient
3027         versions of linux.
3028
3029 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
3030
3031         * driver.c : win32 build fix.
3032
3033 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
3034
3035         * driver.c: check for the MONO_NO_SMP env var and bind to a single
3036         processor if it is set.
3037
3038 2007-06-21  Martin Baulig  <martin@ximian.com>
3039
3040         * debug-mini.h: New file.
3041
3042         * debug-mini.c
3043         (mono_debugger_insert_breakpoint_full): Moved here from
3044         ../metadata/mono-debug-debugger.c.
3045         (mono_debugger_remove_breakpoint): Likewise.
3046         (mono_debugger_breakpoint_callback): Likewise.
3047
3048 2007-06-15  Raja R Harinath  <rharinath@novell.com>
3049
3050         * jit-icalls.c (mono_helper_compile_generic_method): Update to
3051         changes in MonoGenericClass.
3052
3053 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
3054
3055         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
3056
3057 2007-06-14  Raja R Harinath  <rharinath@novell.com>
3058
3059         * jit-icalls.c (mono_helper_compile_generic_method): Update to
3060         removal of MonoGenericMethod.
3061
3062 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
3063
3064         * mini-exceptions.c: hooks for the exception events profiling API.
3065
3066 2007-06-14  Randolph Chung  <tausq@debian.org>
3067
3068         * Makefile.ma: Add hppa target.
3069         * mini-arch.h: Include mini-hppa.h
3070         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
3071         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
3072         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
3073
3074 2007-06-14  Randolph Chung  <tausq@debian.org>
3075
3076         * inssel.brg: Add rules for "chained" compare-branch operations so that
3077         a single compare op can affect multiple branches.  Adjust cost for
3078         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
3079         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
3080         cost for some rules so that they can more easily be overridden by
3081         per-arch rules (with fixes from lupus).
3082         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
3083
3084 2007-06-13  Randolph Chung  <tausq@debian.org>
3085
3086         * mini-ops.h: Reorder branch ops so that they match the order of the
3087         corresponding CEE_* ops.  The code expects them this way.
3088         Add new ops for HPPA target.
3089         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
3090
3091 2007-06-13  Randolph Chung  <tausq@debian.org>
3092
3093         * mini-exceptions.c: Handle cases where the stack grows towards
3094         larger addresses.
3095         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
3096
3097 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
3098
3099         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
3100         counter.
3101         * driver.c: explain where a non-matching corlib is found.
3102
3103 2007-06-13  Mark Probst  <mark.probst@gmail.com>
3104
3105         * mini.c (print_jit_stats): Output dynamic code allocation stats.
3106
3107 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
3108
3109         * mini-exceptions.c: Generate a method profile leave event during
3110         an exception to ensure that the profiler gets notified.
3111
3112 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
3115         branch.
3116
3117         * cpu-amd64.md: Add long_and/or/xor opcodes.
3118
3119 2007-06-06  Wade Berrier  <wberrier@novell.com>
3120
3121         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
3122         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
3123         length of instruction shr_imm (expected 8, got 10)
3124
3125 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
3128
3129 2007-06-06  Mark Probst  <mark.probst@gmail.com>
3130
3131         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
3132         MonoInternalHashTable again (fixed bug in the internal hash table
3133         code).
3134
3135 2007-06-06  Mark Probst  <mark.probst@gmail.com>
3136
3137         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
3138         Have to figure out what makes it crash the SWF regression.
3139
3140 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
3143
3144 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
3145
3146         * mini.c: optimize out the type check when storing null in a
3147         reference array.
3148
3149 2007-06-04  Mark Probst  <mark.probst@gmail.com>
3150
3151         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
3152         MonoInternalHashTable.
3153
3154 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
3155
3156         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
3157         signed integer methods.
3158
3159 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
3160
3161         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
3162         permanently since the current approach doesn't work.
3163
3164 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
3165
3166         * inssel.brg (stmt): Only call delegate->invoke_impl if 
3167         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
3168
3169 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
3172         the sreg2==rdx case.
3173         
3174         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
3175         account if it contains a rex prefix.
3176         (peephole_pass): Handle OP_FMOVE as well.
3177
3178 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
3179
3180         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
3181         as it causes regressions.
3182
3183 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
3184
3185         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
3186         static case as well.
3187
3188         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
3189
3190         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
3191         (mono_arch_get_this_arg_from_call): Ditto.
3192
3193         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
3194
3195         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
3196         invoke_impl field.
3197
3198         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
3199         (mono_arch_get_this_arg_from_call): Ditto.
3200
3201         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
3202         
3203         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
3204         try to create optimized invoke code and use that for further invocations. 
3205         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
3206
3207         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
3208
3209 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
3210
3211         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
3212         sealed classes or methods.
3213         *devirtualization.cs: tests for the new optimization
3214
3215 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
3218         by the update_volatile () function.
3219
3220 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
3221
3222         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
3223         require it.
3224
3225         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
3226
3227 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
3228
3229         * mini.c: Add configure checks for header files.
3230         * mini-x86.c: Add configure checks for header files.
3231         * trace.c: Add configure checks for header files.
3232         * aot-runtime.c: Add configure checks for header files.
3233         * aot-compiler.c: Add configure checks for header files.
3234         * driver.c: Add configure checks for header files.
3235         * mini-codegen.c: Add configure checks for header files.
3236         
3237         Code is contributed under MIT/X11 license.
3238
3239 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
3242         icompare_imm -128 + op_iclt. Fixes #81703.
3243
3244 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
3247
3248 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
3249
3250         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
3251         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
3252         so that all isinst checks now use "interface_bitmap".
3253
3254 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * cpu-amd64.md (jmp): Fix a warning.
3257
3258         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
3259
3260         * basic.cs: Add new regression test.
3261
3262         * basic.cs: Remove test which is now in basic-long.cs.
3263
3264         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
3265
3266         * basic-long.cs: Add new test.
3267         
3268 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
3271
3272 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
3275
3276         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
3277         places.
3278         
3279         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
3280         throwing code a bit.
3281
3282         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
3283         the exception throwing code a bit.
3284
3285         * mini-x86.c (get_call_info): Allocate result from a mempool.
3286
3287 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
3288
3289         * aot-compiler.c (find_typespec_for_class): Fix the assert.
3290
3291         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
3292
3293         * mini.h (MonoCompile): Add 'token_info_hash' field.
3294
3295         * mini.c: Save token->method associations during compilation so the AOT 
3296         compiler can use it.
3297         
3298         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
3299         which reference generic classes and methods.
3300
3301 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
3304
3305         * aot-compiler.c (compile_method): Fix a typo in a comment.
3306
3307         * aot-runtime.c (decode_cached_class_info): Skip generic types.
3308
3309         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
3310         everything generic.
3311
3312         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
3313
3314 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * mini.h (MonoCompile): Add 'args' field.
3317
3318         * mini.c (mono_compile_create_vars): Store variables representing the arguments
3319         into cfg->args.
3320
3321         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
3322
3323 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * mini.c (mono_compile_get_interface_var): Remove this unused function.
3326
3327         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
3328
3329         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
3330         opcodes for some opcodes.
3331
3332         * mini.h *.brg *.c: Use the new opcodes.
3333
3334 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
3335
3336         * mini.h: Bumped aot revision.
3337
3338         * inssel.brg: modified code generation of type checks for interfaces
3339         to use the new "MonoClass.interface_bitmap" instead of the old
3340         "MonoClass.interface_offsets".
3341
3342 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
3345
3346 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
3349         64 bit platforms.
3350
3351 2007-04-27  Neale Ferguson <neale@sinenomine.net>
3352
3353         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
3354
3355 2007-04-27  Wade Berrier  <wberrier@novell.com>
3356
3357         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
3358         mini.h) to fix build.
3359
3360 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
3363         
3364         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
3365         causes the corlib unit tests to fail.
3366
3367 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
3370
3371         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
3372
3373         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
3374         opcodes to the comparison relations.
3375
3376         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
3377         opcodes to their types.
3378         
3379         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
3380
3381         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
3382         it in cfg->arch.cinfo.
3383
3384         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
3385
3386         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
3387         cfg->cil_offset_to_bb.
3388
3389 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
3392         created becase of initlocals.
3393
3394 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * mini-alpha.c cpu-alpha.md: More alpha port work from 
3397         Sergey Tikhonov <tsv@solvo.ru>.
3398
3399 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
3400
3401         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
3402
3403 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * cpu-s390.md (break): Correct the length of break instruction.
3406
3407 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
3408
3409         * mini.c: fix a couple of soft-float issues and comments.
3410
3411 2007-04-15  Miguel de Icaza  <miguel@novell.com>
3412
3413         * trace.c (is_filenamechar): - is also a filename char.
3414
3415 2007-04-15  Neale Ferguson <neale@sinenomine.net>
3416
3417         * mini-s390.c: Correct checking for enum type in return value processing.
3418
3419 2007-04-14  Raja R Harinath  <rharinath@novell.com>
3420
3421         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
3422         (version.h): Makefile is in the build directory.
3423
3424 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
3425
3426         * mini-amd64.h: fix for assertion failure on Solaris/amd64
3427
3428 2007-04-11  Martin Baulig  <martin@ximian.com>
3429
3430         * mini.c (can_access_member): Fix handling of generic classes;
3431         fixes #81259.
3432
3433 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
3434
3435         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
3436
3437 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
3440
3441 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
3442
3443         * mini-codegen.c: make sure the right spill amount is
3444         used for fp or integer registers (fixes the float_sub_spill() on ppc).
3445
3446 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
3447
3448         * mini-ppc.c: fixes for the fp_branch_nan test.
3449
3450 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * basic.cs: Comment out new test which still fails on ia64.
3453
3454 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
3455
3456         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
3457
3458 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
3459
3460         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
3461
3462 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
3463
3464         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
3465         on 64 bit machines. Fixes part of #80738.
3466
3467         * basic.cs: Add regression test.
3468
3469 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * inssel.brg basic.cs: Revert previous change to fix build.
3472
3473         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
3474         platforms.
3475         
3476         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
3477
3478         * basic.cs: Add new regression test.
3479
3480 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
3481
3482         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
3483         many arguments.
3484
3485 2007-03-16  Neale Ferguson <neale@sinenomine.net>
3486
3487         * cpu-s390x.md: Correct length of break instruction.
3488
3489 2007-03-16  Neale Ferguson <neale@sinenomine.net>
3490
3491         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
3492         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
3493
3494 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
3495
3496         * *.c: Begin WIN64 port.
3497         * mini.c:  Use correct register in profiler.
3498         * mini-amd64.c: No inline assembly on Win64.
3499         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
3500         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
3501         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
3502         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
3503         mono_arch_ip_from_context for Win64.
3504         
3505         Contributed under MIT/X11 license.
3506
3507 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
3508
3509         * exceptions-amd64.c (seh_handler): Ditto.
3510
3511         * exceptions-x86.c (seh_handler): Fix a memory leak.
3512
3513 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
3514
3515         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3516         mini-s390x.c: fixed peephole optimizations to deal
3517         correctly with 1 and 2 byte reload avoidance.
3518
3519 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
3520
3521         * cpu-s390.md, cpu-s390x.md: update localloc length.
3522
3523 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
3524
3525         * cpu-g4.md: added missing descriptions.
3526
3527 2007-03-14  Miguel de Icaza  <miguel@novell.com>
3528
3529         *  Makefile.am: Add support so the tail tests are not executed on
3530         PowerPC as that is a known limitation of the PowerPC port.
3531
3532 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
3533
3534         * runmdesc.bat:  Move to msvc directory.
3535         
3536 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
3537
3538         * runmdesc.bat:  Run executable that was produced by the current
3539         target and sent via an argument.
3540         
3541 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
3544         #81102.
3545
3546         * generics.2.cs: Add regression test.
3547
3548 2007-03-09  Wade berrier  <wberrier@novell.com>
3549
3550         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
3551
3552 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
3555         AOT code depends on this.
3556
3557 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
3558
3559         * mini.c: more precise tracking of types in the eval stack
3560         (part of fix for bug #81044).
3561
3562 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
3565
3566         * aot-compiler.c (encode_patch): Remove an obsolete comment.
3567
3568 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
3571
3572         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
3573
3574 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
3577         a pointer on 64 bit systems. Fixes #80190.
3578
3579         * iltests.il: Add new regression test.
3580
3581 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
3582
3583         * mini.c: inline a constant for Environment.IsRunningOnWindows.
3584
3585 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
3586
3587         * trace.c: Remove an erroneous alignemnt check when tracing.
3588           Fixes --trace on OSX86.
3589
3590 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
3591
3592         * mini-$(arch).h: initialize SP in context for all the archs.
3593
3594 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
3595
3596         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
3597         regressions in the thread tests.
3598
3599 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
3602         - fixed implementation of LOCALLOC opcode
3603         - implemented non-un compare for floats
3604         - code cleanup
3605         - implementation of FDIV and CKFINITE opcodes
3606         - fixes for latest mono updates
3607         - additional arch opcodes
3608
3609 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
3610
3611         * Makefile.am: simplify and merge rules for cross-compilation.
3612
3613 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
3614
3615         * local-propagation.c: Actually *apply* the fix for bug 80591...
3616
3617 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
3618
3619         * mini-exceptions.c: backuot part of the last change
3620         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
3621
3622 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
3623         * inssel.brg: Fix bug 59286.
3624
3625
3626 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
3627
3628         * mini-exceptions.c: patch from Zoltan to correctly check for
3629         stack boundaries (using the stack register, not the frame register),
3630         fixes bugs #80724, #79717.
3631
3632 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
3635         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
3636
3637         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
3638         presence of frame pointer elimination.
3639
3640 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
3641         
3642         * mini-x86.h: NetBSD UCONTEX_REG defines.
3643
3644 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * inssel-amd64.brg: Fix amd64 build.
3647
3648 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
3649
3650         * mini.h: remove extern to workaround what looks likes gcc bug 26905
3651         on amd64.
3652
3653 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
3656         ends.
3657
3658         * mini-<ARCH>.c: Use mono_is_regsize_var ().
3659
3660 2007-01-30 Mark Mason <mason@broadcom.com>
3661
3662            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
3663            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
3664            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
3665            beginning support for CEE_JMP [not quite working yet]
3666            * tramp-mips.c: LMF handling now works
3667         
3668 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
3671
3672         * mini.h (NULLIFY_INS): New macro.
3673
3674 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
3675
3676         * mini.c: statistical profiler fix for windows, patch
3677         from Tor Lillqvist (tml@novell.com).
3678
3679 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
3680         * local-propagation.c: Fix bug 80591.
3681
3682 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
3683
3684         * Makefile.am: put back the --export-dynamic option as with
3685         the previous gmodule flags (thanks to Robert Jordan).
3686
3687 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
3690
3691         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
3692         simplify and speed up the local register allocator. Also rename some fields
3693         like iassign->vassign.
3694         
3695         * regalloc.c: Remove some functions which are no longer used since their
3696         inlined version is in mini-codegen.c.
3697         
3698         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
3699
3700         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
3701
3702 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
3703
3704         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
3705         narrowing. Fixes #80622.
3706
3707         * iltests.il: Add new regresssion test. 
3708
3709 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
3710
3711         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
3712         debug-debugger.c, debug-debugger.h: warning fixes.
3713         * driver.c: updated copyright year and made it fit in one line.
3714
3715 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
3716
3717         * aot-runtime.c: updated to use mono-dl instead of gmodule.
3718
3719 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
3722
3723         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
3724
3725         * iltests.il: Add new test for bug #80507.
3726
3727 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
3728
3729         * mini-arm.h: use soft-float also on vfp for now.
3730
3731 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
3732
3733         * mini.c: fix some more soft-float issues.
3734
3735 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
3738
3739 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
3740         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
3741         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
3742         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
3743
3744 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
3745
3746         * mini-arm.c: typo fix.
3747
3748 2007-01-23  Neale Ferguson <neale@sinenomine.net>
3749
3750         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
3751
3752 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
3755         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
3756
3757         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
3758
3759         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
3760
3761         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
3762         
3763         * inssel.brg: Fix a warning.
3764
3765         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
3766
3767         * abcremoval.c ssa.c ssapre.c: Update after this change.
3768         
3769         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
3770
3771         * dominators.c (df_set): Use mono_bitset_union_fast.    
3772
3773 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
3774
3775         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
3776         mini-codegen.c: reduce relocations and memory usage for the cpu
3777         description.
3778
3779 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
3782
3783         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
3784         to reduce their size.
3785
3786 2007-01-19 Mark Mason <mason@broadcom.com>
3787
3788         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
3789         * mini-mips.c: more configuration macros, support long conditional branches, additional
3790         asserts, fix epilog instrumentation.
3791         * mini-mips.h: use standard stack walk
3792         * cpu-mips.md: increase size of div, rem and conditional branches
3793         
3794 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
3795
3796         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
3797         to cpu spec data.
3798
3799 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
3802         (compile_method): Ditto.
3803
3804         * aot-runtime.c (decode_klass_info): Ditto.
3805
3806         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
3807         needed by the code generated by inssel.brg. Also fix a warning.
3808
3809 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
3810
3811         * mini.c: deal with enums that become genericinsts by
3812         being nested in a generic class (bug #79956).
3813
3814 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
3815
3816         * mini.c: match the generic definition to check for
3817         private access with generic types (bug #78431).
3818
3819 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
3820
3821         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
3822         to make life easier for people cross-compiling that insist on not
3823         using scratchbox.
3824
3825 2007-01-17 Mark Mason <mason@broadcom.com>
3826
3827         * inssel-long.brg: patch to deal with mips missing flags
3828         * inssel-long32-mips.brg: implement overflow checks
3829         * insset-mips.brg: implement overflow checks
3830         * mini-mips.h: implement conditional exception handling
3831         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
3832           Remove unused code, minor cleanups.
3833         * exceptions-mips.c: minor cleanups
3834         * mini-ops.h: add mips conditional exception ops
3835         * cpu-mips.md: add mips conditional exception ops
3836
3837         
3838 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
3839
3840         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
3841         to deal with mips missing of flags.
3842
3843 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
3844
3845         * exceptions-ppc.c: execute fault handlers.
3846
3847 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
3848
3849         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
3850
3851 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
3852
3853         * mini.c: handle also floating point values in initialize_array.
3854
3855 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
3856
3857         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
3858         array initialization and make it conditional on the intrins option.
3859
3860 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
3861
3862         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
3863         relocations and put the patch info names close to the enum definition.
3864
3865 2007-01-15 Mark Mason <mason@broadcom.com>
3866
3867         * basic.cs, exceptions.cs: break up large tests to increase debugability.
3868
3869 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
3870
3871         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
3872
3873 2007-01-12  Raja R Harinath  <rharinath@novell.com>
3874
3875         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
3876
3877 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
3878
3879         * Makefile.am: distribute the mips sources.
3880
3881 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
3882
3883         * mini-codegen.h: handle bug #80489 here, by excluding ecx
3884         directly.
3885
3886 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
3887
3888         * cpu-x86.md: back out for now as this triggers other regressions.
3889
3890 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
3891
3892         * cpu-x86.md: force src1 and dest regpair for long shift instructions
3893         to eax:edx, so ecx can't get allocated to them (bug #80489).
3894
3895 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
3896
3897         * mini.c, mini-exceptions.c: enabled running fault handlers
3898         (bug #80469).
3899
3900 2007-01-03  Miguel de Icaza  <miguel@novell.com>
3901
3902         * driver.c: If nothing fail, do not use the string "failed",
3903         because it makes it very annoying to view test result logs on the
3904         web. 
3905
3906 2006-12-30  Miguel de Icaza  <miguel@novell.com>
3907
3908         * debug-debugger.c (mono_debugger_main): Rename "main" to
3909         "main_method" to prevent a warning.
3910
3911         Remove a warning for unused field.
3912
3913 2006-12-28  Martin Baulig  <martin@ximian.com>
3914
3915         * debug-debugger.c
3916         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
3917
3918 2006-12-22  Martin Baulig  <martin@ximian.com>
3919
3920         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
3921         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
3922         seperate `.mdb_debug_info' section, so we can access it from the
3923         debugger even if the binary is stripped.
3924
3925         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
3926         from the `.mdb_debug_info' here to prevent the linker from
3927         removing that section.
3928
3929         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
3930         mdb-debug-info64.s.
3931
3932 2006-12-19  Robert Jordan  <robertj@gmx.net>
3933
3934         * mini-x86: enable the code to return small structures in
3935         registers for FreeBSD as well. Fixes bug #80278.
3936         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
3937
3938 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3939
3940         * mini-x86.c: align the stack when calling the profiler
3941         function instrumenting the prolog (on OSX).
3942
3943 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
3944
3945         * mini.c: emit a break opcode where Debugger.Break () is called.
3946
3947 2006-12-13  Miguel de Icaza  <miguel@novell.com>
3948
3949         * mini.c (mono_method_to_ir): Provide useful information on this
3950         assert, to prevent others from debugging like I did.
3951
3952 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
3953
3954         * mini.c: enable code which was incorrectly commented
3955         (bug #80235).
3956
3957 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
3958
3959         * mini-x86.c: enable on OSX, too, the code to return small
3960         structures in registers.
3961
3962 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
3963
3964         * mini-x86.c: remove the use of the dynamic code manager here, too.
3965
3966 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
3967
3968         * mini.h, debug-debugger.c, tramp-*.c: fixed 
3969         mono_debugger_create_notification_function() to use
3970         mono_global_codeman_reserve () instead of a dynamic code manager.
3971
3972 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
3973
3974         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
3975         ves_array_element_address() jit icall and use a generated
3976         managed method instead (which is about 4 times faster for a rank 3
3977         array access).
3978
3979 2006-11-29  Mark Mason  <mason@broadcom.com>
3980
3981         * basic-calls.cs: additional tests for passing
3982         structures as function arguments.
3983
3984 2006-11-29  Mark Mason  <mason@broadcom.com>
3985
3986         * mini-mips.h: disable custom exception handling
3987         * mini-mips.c: throw/rethrow should use jalr to call
3988         exception stubs.  Fixed bug with passing structures
3989         by value. More support for tracing floating point
3990         functions.
3991
3992 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3993
3994         * mini.c: fixed typo in the soft-float ldind.r4 handling
3995         (bug #80086).
3996
3997 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
3998
3999         * mini.c, mini.h, driver.c: added --runtime command line
4000         option to select a different runtime than the autodetected one.
4001         * jit.h: added API for embedders to initialize with a specific
4002         runtime version.
4003
4004 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
4005
4006         * mini.c: handle also boxing of r4 values (bug #80024).
4007
4008 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
4009
4010         * mini-ppc.c: force indirect calls until we reserve
4011         enough address space for all the generated code.
4012
4013 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
4014
4015         * exceptions-arm.c: workaround bugs in the libc definition
4016         of struct ucontext.
4017
4018 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
4019
4020         * inssel.brg: fixes from me and Mark Mason.
4021
4022 2006-11-23  Dick Porter  <dick@ximian.com>
4023
4024         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
4025         semaphore display now we've fixed the initial value
4026
4027 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
4028
4029         * inssel.brg: partially revert the last change to fix the build.
4030
4031 2006-11-21  Mark Mason  <mason@broadcom.com>
4032
4033         * inssel.brg: Add and use compare-and-branch macros to support
4034         architectures that do not have condition code registers (ie. MIPS).
4035         * *-mips.{c,brg,md}: Fix copyright statements
4036
4037 2006-11-20  Mark Mason  <mason@broadcom.com>
4038
4039         * Makefile.am: remove mini-codegen.c from list of MIPS sources
4040         * mini.c: Allow GET_CONTEXT to be specified by the arch port
4041         * mini.h: Added declaration for mono_print_ins()
4042         * mini-codegen.c: added ins_spec initializer for MIPS
4043         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
4044         vreg to be virtual and hreg to be non-virtual.
4045         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
4046         is not yet working/implemented correctly.
4047         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
4048         non-static, fixup calls to print_ins() from other parts in the file.
4049
4050 2006-11-20  Mark Mason  <mason@broadcom.com>
4051
4052         * basic-calls.cs: added tests for passing structures as arguments
4053         to calls.
4054
4055 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
4056
4057         * inssel-long32.brg: optimize signed division by power of two.
4058
4059 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
4060
4061         * mini-arm.c: added support for interworking with thumb code
4062         (mono must be still be built using the ARM instruction encoding).
4063
4064 2006-11-19  Miguel de Icaza  <miguel@novell.com>
4065
4066         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
4067         verifier has different rules for it.   Fixes a few verifier issues
4068         in the test suite.
4069
4070         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
4071         at the end, so people know what happened.
4072
4073 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
4074
4075         * brach-opts.c: in optimize_exception_target() make sure we
4076         are in a catch clause (fixes bug #79871).
4077
4078 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
4079
4080         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
4081         more soft-float support fixes.
4082
4083 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
4084
4085         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
4086         that are passed half on the stack and half in registers.
4087
4088 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
4089
4090         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
4091         more mips integration work from Mark E Mason 
4092         <mark.e.mason@broadcom.com>.
4093
4094 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
4095
4096         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
4097         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
4098         tramp-mips.c: added sources for the mips port, not
4099         integrated in the build yet. Contributed by
4100         Mark E Mason <mark.e.mason@broadcom.com>.
4101
4102 2006-11-14  Neale Ferguson <neale@sinenomine.net>
4103
4104         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
4105
4106 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
4107
4108         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
4109         put the soft-float rules in its own file since it seems to
4110         break s390 compilation.
4111
4112 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
4113
4114         * mini-arm.c: fixed wrnings.
4115
4116 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
4117
4118         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
4119         inssel-arm.brg: ARM support for soft-float.
4120
4121 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
4122
4123         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
4124         loads and stores of 32 bit fp values.
4125
4126 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
4129
4130         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
4131         works. Fixes #79852 and #79463.
4132
4133 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
4134
4135         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
4136         more soft-float support WIP and fixes.
4137
4138 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
4139
4140         * mini-arm.c: some VFP updates.
4141
4142 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
4143
4144         * mini-exceptions.c: 0 is a valid local var offset in some
4145         architectures, don't assert (bug #78508).
4146
4147 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
4148
4149         * exceptions-arm.c: fixed off by one error in stack walk code.
4150
4151 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
4152
4153         * mini.h, mini.c: more precise tracking of type load exceptions.
4154
4155 2006-11-03  Robert Jordan  <robertj@gmx.net>
4156
4157         * Makefile.am: [WIN32] Add monow.exe target.
4158         * driver.c: [WIN32] Don't detach the console when debugging.
4159         Fixes bug #79797.
4160         
4161 2006-10-30  Miguel de Icaza  <miguel@novell.com>
4162
4163         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
4164
4165 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
4166
4167         * aot-compiler.c (emit_method_info): Add a case missed earlier.
4168
4169         * driver.c (mini_regression): Fix --regression with AOT.
4170
4171         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
4172
4173 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
4176
4177         * mini-sparc.h: Don't use sigaction on sparc/linux.
4178
4179         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
4180
4181         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
4182
4183         * mini-exceptions.c: Add proper include files for getpid ().
4184
4185 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
4188         address instead of a MonoJitInfo* to avoid decoding the exception info for the
4189         method.
4190
4191         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
4192         name cache to reduce its size.
4193
4194         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4195
4196 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
4197
4198         * mini-x86.c: Save/restore the current LMF structure more efficiently using
4199         the mono_lmf TLS variable.
4200
4201         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
4202         trampoline lmf frames.  
4203
4204         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
4205
4206 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
4207
4208         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
4209         the mono_lmf TLS variable.
4210
4211         * mini-exceptions.c: Access the LMF structure through accessors.
4212
4213         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
4214         variable instead of in jit_tls->lmf.
4215
4216         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
4217         
4218         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
4219         trampoline lmf frames.
4220
4221         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
4222
4223 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
4224
4225        * mini.c trace.c mini-x86.c: Revert these too.
4226         
4227        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
4228        signature change.
4229
4230 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
4231
4232         * genmdesc.c: removed now dead code.
4233
4234 2006-10-09  Robert Jordan <robertj@gmx.net>
4235
4236         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
4237
4238 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
4239
4240         * mini.h: do not leave gaps in the opcode values.
4241
4242 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
4243
4244         * jit-icalls.h: flag functions as internal here, too.
4245
4246 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
4247
4248         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
4249         functions with the internal attribute.
4250
4251 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
4252
4253         * aot-compiler.c: fclose the file descriptor in the profile read loop.
4254
4255 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
4256
4257         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
4258         for soft-float.
4259
4260 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
4261
4262         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
4263         tail calls as on other platforms.
4264
4265         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
4266
4267         * iltests.il: Add a few tailcall tests.
4268
4269 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
4270
4271         * driver.c: fix loop for old compilers (bug #79521).
4272
4273 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
4274
4275         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
4276
4277         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
4278
4279         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
4280         metadata without any code.
4281
4282         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
4283         more precise debugging information using gdb.
4284
4285 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
4286
4287         * inssel-ia64.brg: Make the helper methods static.
4288
4289 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
4290
4291         * inssel-x86.brg: make the helper methods static.
4292
4293 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
4294
4295         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
4296
4297 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
4298
4299         * mini.c: updates for monoburg changes.
4300         * inssel.brg: make a few helper functions static as they should.
4301
4302 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * Makefile.am: Move mini-codegen.c to common_sources.
4305
4306 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
4307
4308         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
4309         instructions.
4310         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
4311         mini-ppc.h: port to use the common local register allocator.
4312
4313 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * mini.h: Remove the comment too then.
4316
4317 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
4318
4319         * mini.h: put back backend.data which is to be used shortly and
4320         doesn't increase the size of MonoInst. If any 64 bit arch aligned
4321         pointers on 4 byte boundaries it'd have much bigger issues running
4322         and you can ifdef it out anyway.
4323
4324 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
4327         MonoInst size by 4 bytes on 64 bit machines.
4328
4329 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
4330
4331         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
4332         replacement with more meaningful field names. Arch maintainers, please
4333         check the assigned names are good enough for your arch.
4334
4335 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
4336
4337         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
4338         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
4339
4340 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
4341
4342         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
4343         relocations and memory requirements, put the optimization flags
4344         definitions in their own file.
4345
4346 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
4347
4348         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
4349
4350         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
4351
4352 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
4355
4356 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
4357
4358         * inssel.brg: use the correct function to get the size of an item
4359         in an array, given an element class.
4360         * aot-compiler.c: do not access class->class_size directly.
4361
4362 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
4363
4364         * mini.h, debug-mini.c: added a debugging function to print
4365         info about local variables and arguments in a jitted method.
4366
4367 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
4368
4369         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
4370
4371         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
4372
4373 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
4376         inner and outer loops when passing vtypes.
4377
4378 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
4379
4380         * mini-ppc.c: take into account the cpu errata for cache flushing
4381         which caused some random errors (bug #79381).
4382
4383 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
4386         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
4387
4388 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
4391         loaded.
4392
4393         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
4394         freebsd ports tree.
4395
4396         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
4397         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
4398
4399         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
4400         displacement.
4401
4402 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
4403
4404         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
4405
4406 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
4409         macro does not have to be changed during debugging.
4410
4411         * 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>.
4412
4413         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
4414
4415         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
4416         
4417         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
4418         MONO_ARCH_NO_EMULATE_MUL is defined.
4419
4420         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
4421
4422         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
4423
4424         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
4425
4426         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
4427         
4428 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
4431         stuff to mini-exceptions.c where it is used.
4432
4433         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
4434         setup code, the real one is in mini-exceptions.c.
4435
4436         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
4437         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
4438         some changes from the freebsd ports tree.
4439
4440         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
4441         constants.
4442         
4443         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
4444
4445 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
4446
4447         * mini.c: on Linux, check for /proc to be mounted
4448         (bug# 79351, novell bug#201204).
4449
4450 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
4451
4452         * mini.c: handle cases where pthread_attr_getstack() behaves
4453         incorrectly (bug #78096).
4454
4455 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
4456
4457         * mini-arm.c: support larger stack frames (bug #79272).
4458
4459 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
4462
4463         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
4464         tokens.
4465
4466         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
4467         mono_class_from_name () to find a class from its name.
4468
4469         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
4470
4471 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
4474
4475 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
4476
4477         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
4478
4479 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
4482         callinfo->trampoline.
4483
4484         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
4485         fixes #79271.
4486         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
4487         future.
4488
4489 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
4492
4493 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
4494
4495         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
4496         stats.method_trampolines, it is already done by the generic trampoline code.
4497
4498         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
4499         
4500 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
4503
4504         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
4505
4506         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
4507
4508         * mini.c (print_jit_stats): Print mscorlib mempool size too.
4509         
4510         * mini.c (print_jit_stats): Print new stats.
4511
4512         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
4513
4514 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
4517         Address on two dimensional arrays. Fixes #78729.
4518
4519         * mini.h (MonoCompile): Add a 'skip_visibility' field.
4520
4521         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
4522         a method.
4523
4524         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
4525
4526         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
4527         #79130.
4528         
4529         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
4530         a race condition.
4531         (mini_get_ldelema_ins): Ditto.
4532
4533 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
4536         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
4537         Fixes #79213.
4538
4539 2006-08-29 Neale Ferguson <neale@sinenomine.net>
4540
4541         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
4542         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
4543
4544         * exceptions-s390x.c: Cosmetic change.
4545
4546         * tramp-s390.c: Fix warning.
4547
4548         * cpu-s390.md: Correct length of mul_imm.
4549
4550 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
4551
4552         * aot-compiler.c: added binary writer with ELF backend
4553         implementation (only on Linux/x86 for now).
4554
4555 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * Makefile.am: Don't run net 2.0 AOT tests.
4558
4559         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
4560         (mono_compile_assembly): Skip net 2.0 assemblies as well.
4561
4562         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
4563
4564 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
4565
4566         * aot-compiler.c: simplified and refactored the asm-writing code
4567         to allow different backends.
4568
4569 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4572
4573         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
4574         little. Share patches of type TYPE_FROM_HANDLE as well.
4575
4576         * mini.c (mono_patch_info_equal): New helper function.
4577         (mono_patch_info_hash): Ditto.
4578
4579         * aot-compiler.c (emit_method_code): Fix s390 build.
4580
4581         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
4582         is not handled because it is stored as a flag and not as a type ctor. Fixes
4583         #79016.
4584
4585 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
4586
4587         * aot-compiler.c: Fix computation of GOT slot statistics.
4588         
4589         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
4590         Also remove support for not PIC AOT.
4591
4592         * mini.h: Bump AOT file format version.
4593
4594         * objects.cs: Add a test for #78990.
4595
4596         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
4597         (peter.dettman@iinet.net.au). Fixes #79087.
4598
4599         * basic-long.cs: Add a test for the above.
4600
4601 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
4604         
4605         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
4606         code somewhat.
4607
4608 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
4611         exceptions.
4612
4613 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
4614
4615         * mini.c: Don't verify COM proxy invoke calls
4616         
4617
4618 2006-08-10  Dick Porter  <dick@ximian.com>
4619
4620         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
4621         which process is holding semaphores locked.
4622
4623 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * mini-ia64.c mini-amd64.c: Fix #79027.
4626
4627         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
4628
4629         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
4630
4631         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
4632         implicit arguments in a vararg call. Fixes #79027.
4633
4634 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
4635
4636         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
4637         (mono_get_array_new_va_signature): Ditto.
4638
4639 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
4640
4641         * aot-runtime.c: Call init_plt lazily.
4642
4643         * inssel-long.brg: Fix unsigned long->int conversion.
4644
4645         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
4646
4647         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
4648         that most data is now in the .rss/.data section.
4649
4650 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
4651
4652         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
4653
4654         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
4655
4656         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
4657
4658         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
4659
4660         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
4661         virtual call. Fixes #79010.
4662
4663         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
4664         and use the result as the this argument in the real call.
4665
4666         * generics.2.cs: Add a new test for #79010.
4667         
4668 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
4669
4670         * mini-x86.c: Fix a warning.
4671
4672         * aot-compiler.c: Add a bunch of statistics.
4673
4674         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
4675
4676 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
4679
4680 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
4681
4682         * 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>.
4683
4684 2006-07-13  Miguel de Icaza  <miguel@novell.com>
4685
4686         * mini.c (mono_method_to_ir): Obtain the original method in the
4687         CIL stream and use this to perform validation.
4688
4689         Fixed: #78816
4690
4691 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
4692
4693         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
4694         (mono_arch_call_opcode): Ditto.
4695
4696         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
4697         #78826.
4698
4699         * mini.c (mono_patch_info_dup_mp): New helper function.
4700         
4701         * aot-compiler.c (compile_method): Fix some of the memory allocated during
4702         compilation. Fixes #78827.
4703
4704 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
4705
4706         * declsec.c: Use original security informations for
4707           MONO_WRAPPER_MANAGED_TO_MANAGED.
4708
4709 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
4710
4711         * mini.c: Allow Com Interop methods/classes and
4712         don't verify COM wrapper calls
4713         
4714
4715 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * inssel-long32.brg: Fix long->i4 checked conversion.
4718
4719         * exceptions.cs: Add a test for the above.
4720
4721 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
4724
4725         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
4726         leaks.
4727
4728         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
4729         #78775.
4730
4731 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * mini.c: Fix solaris/x86 exception handling.
4734
4735         * Makefile.am: Get rid of $(ICU_LIBS).
4736
4737 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
4738
4739         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
4740         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
4741         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
4742
4743         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
4744
4745         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
4746         this function causes a SIGSEGV.
4747
4748 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * mini.c: Remove unused solaris/x86 includes.
4751
4752 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
4755
4756 2006-06-20  Jb Evain  <jbevain@gmail.com>
4757
4758         * cpu-g4.md: fix max length of start_handler instruction.
4759
4760 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
4761         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
4762
4763 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
4764         * ssa.c: Fixed bug 78653 for SSA based deadce.
4765         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
4766         MonoInst.flags, used in SSA based deadce.
4767         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
4768         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
4769
4770 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
4771
4772         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
4773         it can end up using non executable memory on ppc64 systems
4774         running ppc32 userspace (fix from Johannes Berg).
4775
4776 2006-06-14  Dick Porter  <dick@ximian.com>
4777
4778         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
4779         4.1.1
4780
4781 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
4782         * mini.c: Made so that inline is locally disabled if it would
4783         trigger a .cctor, because too many apps depend on this behavior
4784         (which seems to be also the one of the MS CLR).
4785
4786 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
4787
4788         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
4789         No idea why this worked before.
4790
4791         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
4792         which branch to outer exception clauses since they could skip the
4793         inner finally clauses. Fixes #78633.
4794
4795         * exceptions.cs: Add a test for the above.
4796
4797         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
4798         Fixes #78629.
4799
4800         * iltests.il: Add a test for the above.
4801
4802 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
4805         after the end of a try bblock, to prevent asserts in mini_method_compile ().
4806
4807         * iltests.il: Add a test for the above.
4808
4809 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
4810
4811         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
4812         
4813         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
4814         methods as instrinsics.
4815
4816 2006-06-09  Wade Berrier <wberrier@novell.com>
4817
4818         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
4819         (simple-cee-ops.h ssapre-mini-ops.h)
4820
4821 2006-06-09  Neale Ferguson <neale@sinenomine.net>
4822
4823         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
4824         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
4825         instruction).
4826         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
4827         * cpu-s390x.md: Fix max. length values for a couple of instructions.
4828
4829 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
4830
4831         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
4832
4833 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
4834
4835         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
4836         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
4837         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
4838         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
4839         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
4840         of opcodes, so that bug 78549 should not happen again.
4841         * ssapre.c: Updated to use the renamed files.
4842
4843 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
4846         in OP_ATOMIC_EXCHANGE_I4.
4847
4848 2006-06-07  Wade Berrier <wberrier@novell.com>
4849
4850         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
4851         in mono_debugger_create_notification_function)
4852
4853 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
4856         
4857         * mini.c (type_from_stack_type): Disable some changes which do not
4858         seem to work.
4859
4860         * driver.c: Reenable opts.
4861
4862         * mini.h (MonoStackSlot): New structure to keep track of the verification state
4863         of the evaluation stack.
4864         
4865         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
4866         evaluation stack trace at entry to the bblock.
4867
4868         * mini.c (merge_stacks): New function to perform verification of stack merges.
4869         Turned off by default.
4870
4871         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
4872         STACK_MP.
4873         
4874 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
4875
4876         * local-propagation.c: Fixed bug 78549.
4877
4878 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
4881
4882 2006-06-02  Miguel de Icaza  <miguel@novell.com>
4883
4884         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
4885         tramp-arm.c, tramp-ia64.c
4886         (mono_debugger_create_notification_function): Update signature to
4887         new signature and use new protocol for creating the notification
4888         function.  
4889
4890         Should fix the build.
4891
4892 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
4893
4894         * exceptions-ppc.c (mono_jit_walk_stack)
4895         (ves_icall_get_frame_info): Fix the build
4896
4897 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
4898
4899         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
4900
4901 2006-05-31  Raja R Harinath  <rharinath@novell.com>
4902
4903         * il2tests.2.il: New file for generics CIL tests.  Add test for
4904         #78019.
4905         * Makefile.am: Update.
4906
4907         Fix #78019
4908         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
4909         to nullable types.
4910
4911 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
4912
4913         * aliasing.c: Fixed bug 78311.
4914
4915 2006-05-29  Martin Baulig  <martin@ximian.com>
4916
4917         * mini-exceptions.c (mono_find_jit_info): When computing the
4918         native offset, check whether we're actually inside the method's
4919         code; call mono_debug_print_stack_frame() to format the frame.
4920         (ves_icall_System_Exception_get_trace): Call
4921         mono_debug_print_stack_frame() to format the stack frame.
4922         (ves_icall_get_trace): Update to the new debugging API.
4923         (mono_jit_walk_stack_from_ctx): Likewise.
4924         (ves_icall_get_frame_info): Likewise.
4925
4926         * mini.c (get_method_from_ip): Use the new debugging API.
4927         (mono_print_method_from_ip): Likewise.
4928
4929         * exceptions-ppc.c
4930         (mono_jit_walk_stack): Use the new debugging API.
4931         (ves_icall_get_frame_info): Likewise.   
4932
4933 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
4934
4935         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
4936
4937 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
4938
4939         * mini.c: Added "limitator" to inline for debugging.
4940
4941 2006-05-24  Martin Baulig  <martin@ximian.com>
4942
4943         * debug-debugger.c (mono_debugger_init): Create a private,
4944         malloc()-based code manager for the notification function and
4945         intentionally leak it on exit.  This fixes the crash-on-exit race
4946         condition.
4947
4948         * tramp-amd64.c
4949         (mono_debugger_create_notification_function): Added
4950         `MonoCodeManager *' argument.
4951
4952         * tramp-x86.c
4953         (mono_debugger_create_notification_function): Added
4954         `MonoCodeManager *' argument.
4955
4956 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
4957
4958         * aliasing.c: Fixed 64 bit issue.
4959         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
4960         default since all known bugs are fixed (one more time!).
4961
4962 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
4963
4964         * mini.c: write barrier support.
4965
4966 2006-05-23  Martin Baulig  <martin@ximian.com>
4967
4968         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
4969         check at the top of the file.
4970
4971 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
4972
4973         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
4974         reverting changes without reason and without changelog entries.
4975
4976 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
4977
4978         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
4979         to a few opcodes. Fixes #78439.
4980
4981         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
4982         consistency with other archs.
4983
4984         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
4985
4986 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
4987
4988         * debug-debugger.c: fix the build.
4989
4990 2006-05-17  Martin Baulig  <martin@ximian.com>
4991
4992         * debug-debugger.c
4993         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
4994         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
4995         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
4996         (debugger_attach): Call GC_mono_debugger_add_all_threads().
4997
4998 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
5001
5002 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
5003
5004         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
5005         MONO_TYPE_GENERICINST.
5006         
5007         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
5008         MONO_TYPE_GENERICINST.
5009
5010 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
5013         #78325.
5014
5015 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
5016
5017         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
5018         mempool.
5019         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
5020
5021 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
5024         mono_trace_cleanup ().
5025
5026         * iltests.il: Fix problem with the newly added test.
5027
5028         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
5029         due to register constraints, free up the previous hreg. Fixes #78314.
5030
5031         * iltests.il: Add new test for #78314.  
5032
5033         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
5034         Interlocked.Add. Fixes #78312.
5035
5036         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
5037         
5038 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
5039
5040         * inssel.brg (mini_emit_virtual_call): Fix a warning.
5041
5042 2006-05-05  Martin Baulig  <martin@ximian.com>
5043
5044         * debug-mini.c (mono_debug_open_block): New method.
5045
5046         * mini-amd64.c
5047         (mono_arch_output_basic_block): Call mono_debug_open_block() at
5048         the beginning of each basic block.
5049
5050         * mini-x86.c
5051         (mono_arch_output_basic_block): Call mono_debug_open_block() at
5052         the beginning of each basic block.
5053
5054 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
5055
5056         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
5057         default until I understand why they break the build on amd64.
5058
5059 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * mini.c (mini_cleanup): Call mono_cleanup ().
5062
5063         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
5064         errors.
5065
5066 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
5067
5068         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
5069         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
5070         default since all known bugs are fixed, and I cannot reproduce bug
5071         77944... I'm asking Matt Hargett to test again after this commit.
5072
5073 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
5074
5075         * mini-codegen.c: Fixed typo that thrashed inline.
5076
5077 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * dominators.c (compute_dominators): Avoid using a worklist since
5080         it is not correct in some cases. Instead, iterate over all bblocks as
5081         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
5082
5083 2006-04-28  Miguel de Icaza  <miguel@novell.com>
5084
5085         * mini.c (mono_jit_compile_method_inner): Use
5086         mono_prepare_exception_from_error that resets the value
5087         internally.
5088
5089 2006-04-27  Miguel de Icaza  <miguel@novell.com>
5090
5091         * mini.c: Move the mini_loader_error_to_exception to metadata. 
5092         
5093 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
5094
5095         * aliasing.c: Fixed bug 78210.
5096
5097 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
5098
5099         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
5100         default until all their problems (or the ones they trigger) are fixed.
5101
5102 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
5103
5104         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
5105         
5106         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
5107         as loaded only after resolving patches since that could invoke the same method.
5108
5109         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
5110
5111         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
5112         functions.
5113
5114         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
5115         AOT loader.
5116
5117         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
5118         stack.
5119
5120         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
5121         made from AOT code through the PLT table.
5122
5123         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
5124         holding the plt offset when a call is made to the aot plt trampoline.
5125         
5126 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
5127
5128         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
5129         amd64 AOT support.
5130
5131         * Makefile.am (common_sources): Fix build breakage.
5132
5133         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
5134         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
5135         intra-assembly calls if possible.
5136         
5137         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
5138
5139         * mini-trampolines.c: Handle PLT entries.
5140
5141         * mini.c: Avoid creating a GOT var for calls.
5142
5143         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
5144         from mscorlib code.
5145
5146         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
5147         from mscorlib code.
5148
5149         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
5150         AOT code.       
5151
5152         * mini.h: Bump AOT file format version.
5153         
5154         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
5155         covers more cases.
5156
5157 2006-04-25  Martin Baulig  <martin@ximian.com>
5158
5159         * driver.c: Disable copyprop, consprop and inline when running
5160         inside the debugger.
5161
5162 2006-04-25  Martin Baulig  <martin@ximian.com>
5163
5164         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
5165         with `get_current_thread' and added `detach'.
5166         (MonoDebuggerMetadataInfo): Added `thread_size',
5167         `thread_tid_offset', `thread_stack_ptr_offset' and
5168         `thread_end_stack_offset'.
5169
5170 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
5171
5172         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
5173         aot-runtime.c.
5174
5175         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
5176         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
5177
5178         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
5179
5180         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
5181
5182         * aot.c: Add support for ADJUSTED_IID.  
5183
5184 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
5185
5186         * aot.c (emit_method_order): Don't align method_order_end.
5187
5188         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
5189         the interface ID changes.
5190
5191 2006-04-21  Dick Porter  <dick@ximian.com>
5192
5193         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
5194         cleaning up a thread.  Fixes the new part of bug 77470.
5195
5196 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
5197
5198         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
5199         to managed wrapper.
5200                      
5201 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
5202
5203         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
5204         
5205         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
5206         SIGSEGV. Fixes #78072.
5207
5208         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
5209         unregister our SIGABRT handler.
5210
5211 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
5212
5213         * mini.c: Disabled inline where it can alter the call stack in a
5214         way visible from managed code.
5215         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
5216         default.
5217
5218 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
5221         on other platforms. Fixes #78089.
5222
5223 2006-04-13  Martin Baulig  <martin@ximian.com>
5224
5225         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
5226         determine whether we're inside the debugger.
5227
5228         * debug-debugger.h
5229         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
5230
5231 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
5232
5233         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
5234         handler clauses. Fixes #78024.
5235
5236         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
5237         in the CALL_MEMBASE opcodes. Fixes #78088.
5238         (mono_arch_get_vcall_slot_addr): Ditto.
5239
5240 2006-04-10  Martin Baulig  <martin@ximian.com>
5241
5242         * debug-debugger.c: The thread handling code has now been moved
5243         into ../metadata/threads.c.
5244
5245 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
5246
5247         * driver.c (mono_main): Fix --with-gc=none build.
5248
5249         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
5250         (mono_spillvar_offset_float): Ditto.
5251         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
5252         hreg, not when its !global, since on ia64, there is a third category: stacked
5253         registers.      
5254
5255 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
5256
5257         * mini.c: set MonoInst->klass for load field address and a few other
5258         places.
5259
5260 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
5261
5262         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
5263
5264 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
5265
5266         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
5267         the branch opt changes.
5268
5269 2006-04-06  Dick Porter  <dick@ximian.com>
5270
5271         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
5272         
5273         * wapihandles.c (mini_wapi_seminfo): 
5274         * driver.c (mono_main): Add semaphore info option
5275
5276 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
5277
5278         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
5279         branch optimization changes. Fixes #78009.
5280
5281 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
5282
5283         * mini.c: ignore accessibility of methods in managed->native wrappers.
5284
5285 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
5288         
5289         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
5290
5291 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
5292
5293         * mini.c: Modify the branch optimizations to preserve the invariant that
5294         the entries inside the in_bb and out_bb arrays are unique.
5295         (mono_unlink_bblock): Avoid creation of new arrays.
5296
5297 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * mini.c (mono_unlink_bblock): Fix regression caused by previous
5300         change (#77992).
5301
5302 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * mini.c (optimize_branches): Remove the "optimizations" in
5305         the cbranch1/cbranch2 -> branch cases which were causing several
5306         problems in the past. Fixes #77986.
5307
5308 2006-03-31  Chris Toshok  <toshok@ximian.com>
5309
5310         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
5311         default optimizations :(
5312
5313 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
5316         branch.
5317
5318 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
5319
5320         * local-propagation.c: Added comments to structs and removed
5321         "Mono" prefixes from local tree mover types.
5322
5323 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
5324
5325         * Makefile.am (arch_sources): Define this for each architecture so 
5326         libmono_la_SOURCES is defined in one place.
5327
5328 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
5329
5330         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
5331         from handles/.
5332
5333 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
5334
5335         * driver.c: print the GC name supplied by configure.
5336
5337 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
5338
5339         * local-propagation.c: Added tree mover, and moved here all the
5340         local propagation code from mini.c
5341         * mini.c: Added support for treeprop, and moved all the local
5342         propagation code to local-propagation.c
5343         * mini.h: Added support for treeprop
5344         * driver.c: Added support for treeprop, enabled consprop, copyprop,
5345         treeprop, inline and deadce by default
5346         * Makefile.am: Added local-propagation.c
5347
5348 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
5349
5350         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
5351
5352 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
5353
5354         * debug-debugger.c: make it compile without the Boehm GC.
5355
5356 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
5357
5358         * mini.c: fixed issue with mismatch when an icall is registered
5359         with multiple names but same address.
5360
5361 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
5362
5363         * declsec.c, mini-exceptions.c: use write barrier to set reference
5364         fields of managed objects.
5365
5366 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
5367
5368         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
5369         (can_access_internals): Fix a warning.
5370
5371         * mini.c (print_method_from_ip): Rename this to 
5372         mono_print_method_from_ip so it gets exported.
5373
5374         * trace.c: Deal with strings inside StringBuilder's containing garbage
5375         and fix memory leaks. Fixes #77848.
5376
5377 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
5380         fixes #77787.
5381
5382 2006-03-16 Neale Ferguson <neale@sinenomine.net>
5383         
5384         * mini-s390.c: Remove OP_X86_TEST_NULL.
5385
5386 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
5387
5388         * mini.c: use the correct GetHashCode() for the moving collector.
5389
5390 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
5391
5392         * liveness.c: Regalloc spill cost tuning.
5393
5394 2006-03-15 Neale Ferguson <neale@sinenomine.net>
5395         
5396         * mini-s390x.h: Correct S390_LONG macro.
5397
5398         * mini-s390x.c: Cleanup unused code.
5399
5400 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * jit-icalls.h: New file.
5403
5404         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
5405         icalls and include that instead of including jit-icalls.c.
5406
5407         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
5408         OP_X86 opcodes.
5409
5410 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
5411
5412         * mini.c: when checking for member accessibility, also check for
5413         friend assemblies and for explicit interface implementations.
5414
5415 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
5418
5419         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
5420
5421         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
5422         common cases are done first.    
5423
5424         * mini-ops.h: Only define platform specific opcodes on the given platform.
5425
5426         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
5427         branch.
5428         
5429 2006-03-14  Martin Baulig  <martin@ximian.com>
5430
5431         Revert Paolo's change from r57348:
5432
5433         * mini.h: don't use gboolean for bitfields.
5434         * mini.c: verifier changes for fields and methods accessibility.
5435
5436 2006-03-13  Neale Ferguson <neale@sinenomine.net>
5437
5438         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
5439
5440         * mini-s390x.c: Fix conv_r_un.
5441
5442         * cpu-s390, cpu-s390x.md: Fix lengths.
5443
5444 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
5445
5446         * mini.c: nested types have access to all the nesting
5447         levels, not just the enclosing types.
5448
5449 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
5450
5451         * mini.c: added a few more verification checks.
5452
5453 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * liveness.c: Merge optimizations from the linear-il branch.
5456
5457 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * mini-ia64.c (emit_call): Add a comment.
5460
5461         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
5462
5463         * tramp-ia64.c: Fix some warnings.
5464
5465 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
5466
5467         * mini.h: don't use gboolean for bitfields.
5468         * mini.c: verifier changes for fields and methods accessibility.
5469
5470 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
5473         lazy icall wrapper changes.
5474
5475         * dominators.c: Replace all the dominator algorithms with faster
5476         ones from the linear-il branch.
5477
5478         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
5479         the mempool.
5480
5481         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
5482         common cases are done first.
5483
5484         * mini-amd64.c: Fix some warnings.
5485
5486         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
5487         from the mempool.
5488
5489         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
5490         added code.
5491
5492         * mini.h: Add a missing prototype.
5493
5494 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * mini.c: Compile icall wrappers lazily.
5497
5498         * mini-codegen.c: Use printf instead of g_print since its much faster.
5499
5500         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
5501         function.
5502
5503         * mini.c (optimize_branches): Cache the negative result from 
5504         remove_block_if_useless ().
5505
5506         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
5507         Also fix some bblock linking issues.
5508
5509         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
5510         assembly files.
5511
5512         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
5513
5514         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
5515         accessed fields first, for better cache behavior.
5516         
5517 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
5518
5519         * mini.c: speedup IList<T> array accesses.
5520
5521 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
5524         inline_costs counter. Fixes #77190.
5525
5526 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
5527
5528         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
5529         trace messages. Fixes #77706.
5530
5531 2006-03-04  Martin Baulig  <martin@ximian.com>
5532
5533         * tramp-amd64.c, tramp-x86.c
5534         (mono_debugger_create_notification_function): Use
5535         mono_global_codeman_reserve() to allocate a buffer at runtime and
5536         return it.
5537
5538         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
5539
5540         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
5541         notification function at runtime and then call `initialize' in the
5542         `MONO_DEBUGGER__debugger_info' vtable.
5543
5544 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * iltests.il: Fix a visibility problem.
5547
5548 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
5549
5550         * driver.c, mini.c: add hooks for the counters API.
5551
5552 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
5553
5554         * driver.c: show disabled options.
5555
5556 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
5557
5558         * linear-scan.c: always use cost-driven selection.
5559
5560 2006-02-28  Raja R Harinath  <rharinath@novell.com>
5561
5562         * jit-icalls.c (helper_compile_generic_method): Revert change from
5563         2006-02-24.
5564
5565 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
5566
5567         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
5568
5569 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
5570
5571         * inssel.brg: style fixes, mostly to force the updated monoburg
5572         to run for people using svn.
5573
5574 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
5575
5576         * mini.c: match monoburg changes.
5577
5578 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
5579
5580         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
5581         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
5582         declaration in the header file.
5583
5584 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
5585
5586         * helpers.c: reduce relocations and mem usage.
5587
5588 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
5589
5590         * mini.h, mini-codegen.c: disable logging features if
5591         requested by configure.
5592
5593 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
5594
5595         * mini.c: tiny verifier changes.
5596
5597 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
5598
5599         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
5600         cpu-pentium.md: stack alignment changes for osx/x86,
5601         partially from Geoff Norton <gnorton@customerdna.com>.
5602
5603 2006-02-24  Raja R Harinath  <harinath@gmail.com>
5604
5605         * jit-icalls.c (helper_compile_generic_method): Update to changes
5606         in metadata/class.c.
5607
5608 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
5609         
5610         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
5611         
5612         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
5613         interface calls with large offsets.
5614
5615 2006-02-23  Raja R Harinath  <rharinath@novell.com>
5616
5617         * jit-icalls.c (helper_compile_generic_method): Document the
5618         special-case we depend on so that we can inflate the method twice
5619         with the same context with no bad side-effects.
5620
5621 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
5622
5623         * mini-x86.c, mini-amd64.c: fix for case when xen support
5624         is disabled.
5625
5626 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
5627
5628         * mini-x86.c, mini-amd64.c: generate code to access tls items
5629         in a faster way for Xen systems.
5630
5631 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
5632
5633         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
5634         updates and compilation fixes for the OSX/x86 port, mostly from
5635         Geoff Norton <gnorton@customerdna.com>.
5636
5637 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
5638
5639         * inssel.brg: faster interface call implementation
5640         to sync with the interface_offsets MonoVTable changes.
5641
5642 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
5643
5644         * mini.c: more verification checks.
5645
5646 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
5647
5648         * mini.c: added a few more verification checks.
5649
5650 2006-02-17      Neale Ferguson <neale@sinenomine.net>
5651
5652         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
5653         facility on the processor and use it if available.
5654
5655 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
5656
5657         * driver.c, aot.c, mini.c: throw exception if the IL code is
5658         invalid or unverifiable.
5659
5660 2006-02-17  Raja R Harinath  <rharinath@novell.com>
5661
5662         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
5663         m.StructField.
5664
5665 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
5666
5667         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
5668
5669 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
5670
5671         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
5672         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
5673         handling of instantiated generic valuetypes.
5674
5675 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
5678         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
5679         instead.
5680
5681         * generics.2.cs: Revert the nullable reftypes tests.
5682
5683 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
5686         using __builtin_frame_address (1) as it doesn't work in the presence
5687         of optimizations. Hopefully fixes #77273.
5688
5689         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
5690         -> generics.cs change as it doesn't work with some automake versions.
5691
5692 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
5693
5694         * mini.c: handle systems that sue a different way to
5695         retrieve the stack address of the current thread.
5696
5697 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
5698
5699         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
5700         it specially in the makefile.
5701
5702         * generics.2.cs: Add tests for nullable reference types.
5703
5704 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
5705
5706         * mini.c: always handle the case when mono_jit_init()
5707         is called in a thread different from the main thread,
5708         confusing libgc (bug #77309).
5709
5710 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
5711
5712         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
5713
5714 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
5715
5716         * mini.c: change optimize_branches () to use a single loop
5717         and introduce a new optimization to simplify some range checks.
5718
5719 2006-02-03  Martin Baulig  <martin@ximian.com>
5720
5721         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
5722         and merged with debugger_thread_manager_add_thread().
5723         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
5724         inform the debugger about the main thread.
5725
5726 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * basic.cs: Add test for div.un/rem.un constant folding.
5729
5730 2006-02-03  Neale Ferguson <neale@sinenomine.net>
5731
5732         * cpu-s390x.md: correct int_xor_imm length
5733
5734 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
5735
5736         * generics.2.cs: New test for #77442.
5737
5738         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
5739         #77442.
5740
5741 2006-02-02  Martin Baulig  <martin@ximian.com>
5742
5743         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
5744         <mono/metadata/mono-debug-debugger.h>   
5745
5746         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
5747
5748 2006-02-02  Martin Baulig  <martin@ximian.com>
5749
5750         * debug-debugger.h: New header file for debug-debugger.c.
5751
5752         * debug-debugger.c: Big API cleanup; don't run the managed Main()
5753         function is a separate thread anymore; add support for attaching.
5754
5755 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
5756
5757         * tramp-x86.c: Fix a warning.
5758
5759 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
5762         on very large methods.
5763
5764         * aot.c (load_patch_info): Fix a warning.
5765
5766 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5767
5768         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
5769         mini-ops.h: alu membase optimizations.
5770
5771 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
5772
5773         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
5774         to speedup StringBuilder.
5775
5776 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * dominators.c (mono_compute_natural_loops): Fix detection of
5779         loop body start blocks.
5780
5781         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
5782
5783 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
5786         #75145.
5787
5788 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
5789
5790         * aliasing.c: Fixed aliasing issue on 64 bit archs.
5791
5792 2006-01-25  Martin Baulig  <martin@ximian.com>
5793
5794         * debug-debugger.c: Moved the `MonoDebuggerManager' and
5795         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
5796         started to cleanup this file a little bit.
5797
5798 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
5799
5800         * mini.c: optimize a codepath frequently happening in generics code.
5801
5802 2006-01-23  Martin Baulig  <martin@ximian.com>
5803
5804         * Makefile.am: Only compile debug-debugger.c on supported platforms.
5805
5806         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
5807         functions directly.
5808
5809         * driver.c: debug-debugger.c is only available if
5810         `MONO_DEBUGGER_SUPPORTED' is defined.   
5811
5812 2006-01-23  Martin Baulig  <martin@ximian.com>
5813
5814         * debug-debugger.c: Only enable this on platforms where the Mono
5815         Debugger is working (x86 and x86_64).
5816
5817 2006-01-21  Martin Baulig  <martin@ximian.com>
5818
5819         The Mono Debugger is now using the normal `mono' instead of the
5820         `mono-debugger-mini-wrapper' when executing managed code.
5821
5822         * debug-debugger.c: New file; previously known as
5823         debugger/wrapper/wrapper.c.
5824
5825         * debug-mini.c (mono_init_debugger): Removed.
5826
5827         * driver.c (mono_main): Added new `--inside-mdb' command line
5828         argument which is used when running inside the debugger.
5829
5830 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * liveness.c (mono_analyze_liveness): Remove some unused data
5833         structures.
5834
5835 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
5838
5839 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
5840
5841         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
5842         depends on implementation details of monobitset.
5843
5844         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
5845         Fixes #77271.
5846
5847 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * liveness.c: Update after monobitset changes.
5850
5851 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
5854
5855 2006-01-11 Neale Ferguson <neale@sinenomine.net>
5856
5857         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
5858
5859         * mini-s390x.c: Remove warning messages.
5860
5861 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
5862
5863         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
5864
5865 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
5866
5867         * generics.2.cs: Add ldelem/stelem_any test.
5868
5869 2006-01-10 Neale Ferguson <neale@sinenomine.net>
5870
5871         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
5872
5873 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
5876         
5877 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * generics.2.cs: Reenable vtype tests.
5880
5881         * inssel-x86.brg: Remove an icorrect valuetype rule.
5882
5883 2006-01-06 Neale Ferguson <neale@sinenomine.net>
5884
5885         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
5886         initial support for OP_ABS.
5887
5888 2006-01-05 Neale Ferguson <neale@sinenomine.net>
5889
5890         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
5891
5892 2006-01-05 Neale Ferguson <neale@sinenomine.net>
5893
5894         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
5895         conversion and implement LADD/LSUB.
5896
5897         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
5898         architectures.
5899
5900 2006-01-05 Neale Ferguson <neale@sinenomine.net>
5901
5902         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
5903
5904         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
5905         architectures.
5906
5907 2006-01-05 Neale Ferguson <neale@sinenomine.net>
5908
5909         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
5910         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
5911         (stack walk problem).
5912
5913 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * aot.c (mono_aot_load_method): Fix a warning.
5916
5917 2006-01-03  Neale Ferguson <neale@sinenomine.net>
5918
5919         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
5920
5921 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * iltests.il: Add test for #77148.
5924
5925         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
5926         #77148.
5927
5928 2006-01-03  Neale Ferguson <neale@sinenomine.net>
5929
5930         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
5931
5932 2006-01-03  Neale Ferguson <neale@sinenomine.net>
5933
5934         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
5935         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
5936
5937         * basic-long.cs: Add lconv-to-r4/r8 tests.
5938
5939 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
5940
5941         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
5942
5943         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
5944         here as on other archs.
5945
5946 2005-12-29 Neale Ferguson <neale@sinenomine.net>
5947
5948         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
5949
5950 2005-12-29 Neale Ferguson <neale@sinenomine.net>
5951
5952         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
5953         
5954         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
5955
5956         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
5957         instrument_prolog; Add memory_barrier instruction.
5958
5959 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
5962
5963 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
5964
5965         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
5966
5967         * aliasing.c inssel.brg: Fix warnings.
5968
5969         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
5970         could skip initialization of some parts of memory.
5971
5972         * mini.c mini-ia64.c: Fix warnings.
5973
5974         * inssel-sparc.brg: Add an implementation of lneg which actually works.
5975
5976 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
5977
5978         * aliasing.c (mono_build_aliasing_information): Add a workaround for
5979         a crash seen on sparc.
5980
5981         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
5982         
5983         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
5984
5985 2005-12-21 Neale Ferguson <neale@sinenomine.net>
5986
5987         * mini-ops.h: Add s390_backchain instruction
5988
5989         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
5990
5991         * cpu-s390.md: Add s390_backchain instruction
5992
5993         * mini-s390.c: Significant ABI changes
5994
5995         * mini-s390.h: Cater for zero length structures
5996
5997 2005-12-20 Neale Ferguson <neale@sinenomine.net>
5998
5999         * mini-s390.c: ABI fixes
6000
6001         * inssel-s390.brg: Remove debug statements
6002
6003         * cpu-s390.md: Fix length of ATOMIC_xx operations
6004
6005 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * basic-float.cs: Add float<->long conversion tests.
6008
6009 2005-12-16 Neale Ferguson <neale@sinenomine.net>
6010
6011         * mini-s390.c: Fix LOCALLOC processing.
6012
6013         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
6014
6015 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
6016
6017         * iltests.il: Add tests for some opcodes not covered by the other
6018         tests.
6019
6020 2005-12-15 Neale Ferguson <neale@sinenomine.net>
6021
6022         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
6023         register loading for Tail processing; Correct trace output.
6024
6025         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
6026
6027         * cpu-s390.md: Correct size of jmp instruction. 
6028
6029 2005-12-13 Neale Ferguson <neale@sinenomine.net>
6030
6031         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
6032
6033 2005-12-13 Neale Ferguson <neale@sinenomine.net>
6034
6035         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
6036           Bring s390 up to current level.
6037
6038 2005-12-12  Zltan Varga  <vargaz@gmail.com>
6039
6040         * generics.2.cs: Disable the newly added tests as they do not work yet.
6041         
6042         * generics.2.cs: Add valuetype tests.
6043
6044 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * basic-long.cs: Add i4->u8 test.
6047
6048         * objects.cs: Add tests for JIT intrinsic.
6049
6050         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
6051         optimizations lost by a mistake.
6052
6053 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
6054
6055         * basic-long.cs: Remove a test moved to objects.cs.
6056
6057         * arrays.cs: Add more array tests.
6058
6059 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
6060
6061         * arrays.cs: Add new tests for multi-dimensional arrays.
6062
6063 2005-12-06  Raja R Harinath  <rharinath@novell.com>
6064
6065         * Makefile.am (test_sources2): Add generics.2.cs.
6066         (EXTRA_DIST): Add test_sources2.
6067
6068 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
6069
6070         Support for boxing and unboxing nullable types as well as the
6071         isinst operation on nullables, per the CLI ammendment.
6072
6073         * inssel.brg (CEE_ISINST): Special case for nullable
6074
6075         * mini.c (handle_unbox_nullable): new method
6076         (handle_box): Special case for nullable types
6077         (mono_method_to_ir): Call handle_unbox_nullable in correct
6078         places.
6079
6080         * generics.2.cs: New test suite
6081
6082         * Makefile.am: Support for regression tests with generics.
6083
6084 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
6087         allocated to registers. Fixes #76800.
6088
6089 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
6090
6091         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
6092
6093 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
6096         of platforms.
6097
6098 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
6101         objects.cs.
6102
6103         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
6104         
6105         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
6106 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
6107
6108         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
6109         single precision before storing to a single precision location.
6110
6111 2005-11-28  Raja R Harinath  <rharinath@novell.com>
6112
6113         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
6114
6115 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
6116
6117         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
6118         correct files.
6119
6120         * basic.cs: Remove test_0_byte_compares test which was moved to
6121         objects.cs a long time ago.
6122
6123 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
6124
6125         * aliasing.c: Fixed aliasing issue on 64 bit archs.
6126
6127 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
6130         handlers are called.
6131
6132         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
6133         throwing code.
6134
6135          * mini-ia64.c: Add support for the throw->branch exception 
6136         optimization.   
6137
6138         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
6139
6140 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
6141
6142         * mini.c: Enabled "fastpath" deadce :-)
6143         
6144 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
6145
6146         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
6147         alias analysis pass to support it.
6148         * mini.h: Likewise.
6149         * ssa.c: Likewise.
6150         * liveness.c: Likewise (liveness computation can use aliasing
6151         information to be more accurate).
6152         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
6153         moreover made so that "--compile-all" uses the given optimization
6154         flags and not the default ones.
6155         * aliasing.c: Alias analysis (new file).
6156         * aliasing.h: Likewise.
6157         * Makefile.am: added "aliasing.c" and "aliasing.h".
6158         
6159 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
6160
6161         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
6162         OP_L opcodes.
6163
6164 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
6167         fp >= end_of_stack exit condition, as it is not needed, and it might
6168         become true for fp eliminated frames.
6169
6170 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
6173         coded offsets.
6174
6175 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
6176
6177         * mini-arm.c: fixed alignment of doubles/longs to match
6178         the C ABI (bug #76635).
6179
6180 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
6181
6182         * aot.c: fix compilation with --enable-minimal=aot.
6183
6184 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
6185
6186         * mini-arm.c: fixed compatibility with the new
6187         floating point emulator package for compares.
6188
6189 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
6190
6191         * mini.c : reverted sig->pinvoke changes (r51396-51397).
6192
6193 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
6194
6195         * mini-exceptions.c (print_stack_frame): Output to stderr.
6196         (mono_handle_native_sigsegv): Ditto.
6197
6198 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
6199
6200         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
6201         OP_LCONV_TO_OVF_I implementation.
6202
6203         * mini-amd64.c: Add support for the throw->branch exception 
6204         optimization.
6205
6206         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
6207         when the catch clause catches a more general exception, i.e. Object.
6208
6209 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
6210
6211         * cpu-ia64.md: Remove unused opcodes.
6212
6213         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
6214         specific defines for architectures defining USE_SIGACTION.
6215
6216         * mini-ia64.c: Fix some warnings.
6217
6218         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
6219         version seemed to skip a frame.
6220
6221 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
6222
6223         * mini.c: Clean up the usage of sig->pinvoke flag. Now
6224         only calls which are made to native code use this flag.
6225
6226 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
6227
6228         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
6229         varargs methods as well.
6230         
6231         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
6232         which have save_lmf set. Reorganize methods prologs a bit.
6233
6234         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
6235         debugger to the proper place.
6236
6237 2005-10-29  Martin Baulig  <martin@ximian.com>
6238
6239         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
6240         when running inside the debugger until the debugger has support
6241         for it.
6242
6243 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * mini.h: Fix a warning.
6246
6247 2005-10-24  Miguel de Icaza  <miguel@novell.com>
6248
6249         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
6250         we expose publicly, this returns the string.
6251
6252 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
6253
6254         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
6255         with fp elimination.
6256
6257 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
6260         native stacktrace using the glibc 'backtrace' function if available.
6261
6262 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
6263
6264         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
6265
6266         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
6267         handle SIGSEGVs received while in native code.
6268
6269         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
6270         code, call mono_handle_native_sigsegv which will abort the runtime
6271         after printing some diagnostics, instead of converting it into a
6272         confusing NullReferenceException.
6273
6274 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
6275
6276         * cpu-pentium.md: Remove unused opcodes.
6277
6278 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
6279
6280         * mini-amd64.h (MonoLMF): Add rsp field.
6281
6282         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
6283         the lmf too.
6284
6285 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
6286
6287         * mini-codegen.c (get_register_spilling): Fix some warnings.
6288
6289 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
6290
6291         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
6292         elimination during exception handling. Enable fp elimination by
6293         default.
6294
6295         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
6296         elimination.
6297
6298 2005-10-16  Martin Baulig  <martin@ximian.com>
6299
6300         * mini-exceptions.c
6301         (mono_debugger_run_finally): New public method for the debugger.
6302
6303 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
6304
6305         * debug-mini.c (mono_debug_init_method): Fix warning.
6306
6307         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
6308         the 'exname' parameter const to fix some warnings.
6309
6310 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
6311
6312         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
6313         introduced by the previous patch.
6314
6315 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * basic-float.cs: Add test for precision of float arithmetic.
6318
6319         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
6320         when loading/storing single values from/to memory.
6321
6322         * mini.c (mono_jit_compile_method_with_opt): Create the function
6323         pointers in the correct domain.
6324
6325 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
6326
6327         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
6328         introduced by previous patch.
6329         
6330         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
6331         when out_filter_idx is NULL.
6332
6333         * mini-exceptions.c: Don't run filter clauses twice during exception
6334         handling. Fixes #75755.
6335
6336 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
6337
6338         * aot.c: Add support for ldflda wrappers.
6339
6340         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
6341         #75902.
6342
6343 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
6344
6345         * mini.c, mini.h: do not consider exception handlers blocks when
6346         setting up interface variables.
6347
6348 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
6349
6350         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
6351
6352 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
6355         causes a regression.
6356
6357         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
6358
6359 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
6360
6361         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
6362         of the OP_P definitions.
6363
6364         * TODO: Add a proposal for dealing with the CEE/OP mess.
6365
6366         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
6367         optimizations from the x86 port.
6368
6369         * cpu-amd64.md: Ditto.
6370
6371         * basic.cs basic-long.cs: Add tests.
6372
6373 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
6374
6375         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
6376         Patrik Torstensson's implementation of my exception-handling
6377         optimization idea, when the exception object is not used
6378         (bug #62150).
6379
6380 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
6381
6382         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
6383         of the mul_imm optimizations from the old jit.
6384
6385 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
6386
6387         * mini.c, liveness.c: patch by Patrik Torstensson and
6388         Zoltan Varga to improve performance in methods with
6389         exception clauses.
6390
6391 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
6392
6393         * driver.c: Remove 'Globalization' entry from --version.
6394
6395 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
6398         there is a profiler interested in JIT events.
6399
6400         * aot.c: Load profile files produced by the AOT profiling module, and
6401         reorder methods based on the profiling info. Add a 'method_order' table
6402         to the AOT file to make mono_aot_find_jit_info work with the reordered
6403         methods.
6404
6405         * mini.h: Bump AOT file version info.
6406
6407 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
6408
6409         * mini-arm.h: work around what looks like a gcc bug when optimizations
6410         are enabled.
6411
6412 2005-09-28  Raja R Harinath  <rharinath@novell.com>
6413
6414         * Makefile.am (AM_CFLAGS): Don't use += to append inside
6415         conditionals.  Use ...
6416         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
6417
6418 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
6419
6420         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
6421         to determine the amount of memory to copy when passing valuetypes.
6422
6423         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
6424         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
6425
6426 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
6427
6428         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
6429         information about aot.
6430
6431 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
6432
6433         * *.c: Replace the use of {Enter,Leave}CriticalSection with
6434         macros. This will allow a deadlock debugger to easily be plugged
6435         in.
6436
6437 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
6438
6439         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
6440
6441 2005-09-27  Raja R Harinath  <rharinath@novell.com>
6442
6443         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
6444         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
6445         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
6446         ($(arch_built)) [CROSS_COMPILING]: Error out.
6447
6448 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
6449
6450         * aot.c: Add support for the no_special_static flag for classes.
6451
6452 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
6453
6454         * Reapply reverted patches.
6455
6456         * *: Revert r50174 as well.
6457
6458         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
6459
6460 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
6461
6462         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
6463
6464 2005-09-23  Miguel de Icaza  <miguel@novell.com>
6465
6466         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
6467         part of the SIG_HANDLER_SIGNATURE.  
6468
6469 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
6472         statistics.
6473
6474         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
6475         introduced by previous patch.
6476
6477 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
6478
6479         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
6480         saved registers too.
6481
6482         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
6483         upon the information returned by get_call_info ().
6484         
6485         * mini-x86.c (add_float): Fix stack size calculation.
6486         (mono_arch_call_opcode): Rewrite this so it works based up the
6487         information returned by get_call_info ().
6488         (mono_arch_get_this_vret_args): Ditto.
6489
6490 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
6491
6492         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
6493         in cinfo to determine the registers which need to be used.
6494
6495 2005-09-20  Miguel de Icaza  <miguel@novell.com>
6496
6497         * driver.c (mono_main): Add --server and --desktop flags. 
6498
6499 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
6502         registers as global registers.
6503
6504         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
6505         longer needed with the new register allocator.
6506
6507         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
6508
6509         * cpu-ia64.md: Remove unused opcodes.
6510         
6511         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
6512         
6513 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
6514
6515         * cpu-amd64.md: Remove unused opcodes.
6516
6517         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
6518         needed with the new register allocator.
6519
6520         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
6521         reg-reg moves.
6522
6523 2005-09-16  Raja R Harinath  <rharinath@novell.com>
6524
6525         * Makefile.am (check-local): Don't invoke semdel-wrapper.
6526
6527 2005-09-16  Martin Baulig  <martin@ximian.com>
6528
6529         * exceptions-amd64.c
6530         (throw_exception): Don't call mono_debugger_throw_exception() if
6531         we're a rethrow - see the FIXME in the code.
6532
6533 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
6534
6535         * mini.c (mono_init_exceptions): This only works on some architectures.
6536         
6537 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
6540         on ia64.
6541
6542         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
6543
6544         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
6545         now in mini-exceptions.c.
6546
6547 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
6548
6549         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
6550         now in mini-exceptions.c.
6551
6552 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
6553
6554         * exceptions-x86.c: Applied patch from Patrik Torstensson 
6555         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
6556
6557         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
6558         code into mini-exceptions.c. Add some assertions to it.
6559
6560 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * aot.c (emit_section_change): Applied patch from "The Software Team" 
6563         (<software@solmersa.com>). Fix as errors on windows.
6564
6565 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
6566
6567         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
6568         method info into the LMF.
6569
6570 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
6571         
6572         * mini-ia64.c: Add proper unwind info for method epilogs.
6573
6574         * exceptions-ia64.c: Add some code to help debugging.
6575         
6576         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
6577
6578         * mini-exceptions.c: Fix warning.
6579
6580 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
6581
6582         * mini.c: Really fix build.
6583
6584         * mini-x86.c mini-amd64.c: Fix build.
6585
6586 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
6587
6588         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
6589
6590         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
6591         some Interlocked methods as intrinsics.
6592
6593         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
6594         for Thread methods as well.
6595
6596         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
6597
6598         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
6599
6600         * mini-ia64.c mini-x86.c mini-amd64.c 
6601         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
6602         OP_MEMORY_BARRIER.
6603         
6604         * mini.c (mono_init_exceptions): Fix build breakage.
6605
6606 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
6607
6608         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
6609         of instructions. Use the new ia64_unw_op macros for emitting unwind
6610         info.
6611
6612         * mini.c (mono_init_exceptions): Initialize exception handling
6613         related trampolines at startup.
6614
6615 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
6616
6617         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
6618
6619 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
6620
6621         * mini.c: Handle type loading errors gracefully during compilation and
6622         throw the appropriate exception.
6623
6624 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
6625
6626         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
6627         for the mono binary.
6628
6629 2005-09-09  Martin Baulig  <martin@ximian.com>
6630
6631         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
6632         the release.
6633
6634 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
6635
6636         * mini-arm.h: use emulation for conv.r.un for the release.
6637
6638 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
6639
6640         * mini-arm.c, objects.cs: more fixes and tests for them.
6641
6642 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
6643
6644         * mini-arm.c: align structures to at least 4 bytes to be able
6645         to keep our current optimized memcpy.
6646
6647 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
6648
6649         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
6650
6651 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6652
6653         * mini.c: ignore SIGPIPE.
6654
6655 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
6658
6659         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
6660
6661 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * mini.h: Add prototype for mono_allocate_stack_slots_full.
6664
6665 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
6666
6667         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
6668         exception handling support.
6669         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
6670         patch by Brian Koropoff <briank@marakicorp.com>).
6671
6672 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
6673
6674         * mini.c: revert another 'optimization' which breaks when
6675         items on the eval stack need to be saved at a basic block end
6676         (bug #75940).
6677
6678 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
6679
6680         * jit-icalls.c: for arrays, ensure we always provide
6681         lower bounds.
6682
6683 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
6684
6685         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
6686         
6687         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
6688
6689 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
6690
6691         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
6692         arguments in their original register.
6693
6694 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
6695
6696         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
6697         memset/memcpy.
6698
6699         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
6700         when ssapre is enabled.
6701
6702         * inssel-long.brg: Fix bug in previous patch.
6703
6704         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
6705         multiplication by a constant.
6706
6707 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
6708
6709         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
6710         icc.
6711
6712         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
6713         saving registers.
6714
6715 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
6716
6717         * inssel-arm.brg: apply changes tested by Brian Koropoff
6718         <briank@marakicorp.com>.
6719
6720 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
6723         
6724 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
6727         to the same register if dreg is just a base register.
6728         (print_ins): Improve printing of membase opcodes.
6729
6730         * inssel-x86.brg: Add optimized ldind(reg) rules.
6731
6732         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
6733
6734 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
6735
6736         * mini.c: when running under valgrind, set the stack bottom for
6737         the GC at the actual approximate stack for the app (fixes running
6738         mono with valgrind).
6739
6740 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
6741
6742         * mini.c: do no break at the first valuetype to init found
6743         (fixes bug #75791).
6744
6745 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
6746
6747         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
6748
6749 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
6750
6751         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
6752
6753 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
6754
6755         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
6756
6757 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
6758
6759         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
6760
6761         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
6762         code.
6763
6764         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
6765         code.
6766
6767         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
6768         methods.
6769
6770 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
6771
6772         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
6773
6774 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
6775
6776         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
6777         in the tail recursion optimization.
6778
6779         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
6780         debug info into the assembly file.
6781
6782         * iltests.il: Add test for filter regions.
6783
6784         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
6785         initial stack of filter regions. Fixes #75755.
6786
6787 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
6788
6789         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
6790         stack requirements.
6791
6792 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
6793
6794         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
6795         the check for an already compiled method on non-ia64 platforms.
6796         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
6797         proper domain.
6798
6799         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
6800
6801         * inssel-x86.brg: Add some optimized call rules.
6802
6803 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
6804
6805         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
6806         method here.
6807
6808         * mini.h mini-trampolines.c: Pass the trampoline argument to 
6809         mono_arch_patch_delegate_trampoline.
6810
6811         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
6812
6813         * mini-trampolines.c: Fix build.
6814
6815         * mini-amd64.h: Add delegate trampolines.
6816
6817         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
6818
6819         * inssel-amd64.brg: Add optimized call rules.
6820         
6821         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
6822
6823         * inssel-ia64.brg: Add optimized ldind(reg) rules.
6824
6825 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
6826
6827         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
6828         change.
6829
6830         * mini-ia64.c: Remove LMF fixmes.
6831
6832         * mini-ia64.h: Remove most fields from LMF.
6833
6834         * inssel-ia64.brg (stmt): Fix unaligned access errors.
6835
6836         * mini-trampolines.c: Add support for IA64 function descriptors.
6837
6838         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
6839         for IA64 function descriptors.
6840
6841 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
6842
6843         * tramp-arm.c: patch the vtable for virtual calls. Added
6844         support code to register/unregister the LMF.
6845         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
6846         more LMF work.
6847
6848 2005-08-19  Dick Porter  <dick@ximian.com>
6849
6850         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
6851         bit value if needed.
6852
6853 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
6854
6855         * mini.c (mini_get_method): Move handling of wrapper data here.
6856
6857         * mini.c (mono_method_to_ir): Add support for dynamic methods.
6858
6859         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
6860         virtual.
6861
6862         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
6863         bblock->code does not remain empty.
6864
6865 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
6866
6867         * arrays.cs: Add regression test for #75832.
6868
6869         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
6870         rules. Fixes #75832.
6871
6872         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
6873         instruction scheduling.
6874
6875 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
6876
6877         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
6878
6879 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
6880
6881         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
6882
6883         * mini-codegen.c: Fix VC build.
6884
6885         * cpu-pentium.md: Increase length of atomic_exhange_i4.
6886
6887 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6888
6889         * mini.h: fix signature for mono_register_opcode_emulation.
6890
6891 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
6892
6893         * mini.c: Get rid of most of the helper_sig_... constants using
6894         mono_create_icall_signature ().
6895
6896 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
6897
6898         * jit-icalls.c (helper_ldstr): New helper function.
6899
6900         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
6901
6902         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
6903         throw, load the string using a helper call instead of creating a string object.
6904
6905         * aot.c: Update after LDSTR changes.
6906
6907         * mini.h: Bump AOT file version.
6908         
6909         * aot.c: Save class size info into the AOT file. Print more statistics during
6910         compilation.
6911
6912         * mini.h: Bump AOT file version.
6913
6914         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
6915         ordering of disasm cases. Fixes #74957.
6916
6917 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
6918
6919         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
6920         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
6921         the generic code needed for the ARM port.
6922
6923 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
6924
6925         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
6926         inssel-arm.brg: more ARM features and fixes.
6927
6928 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
6929
6930         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
6931         ARM port work in progress.
6932
6933 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
6934
6935         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
6936
6937         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
6938
6939         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
6940
6941         * inssel.brg (mini_emit_memset): Add support for unaligned access.
6942
6943         * *-ia64.*: Ongoing IA64 work.
6944         
6945         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
6946
6947 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
6948
6949         * TODO: Remove out-of-data todo stuff.
6950
6951         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
6952         dead code.
6953
6954         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
6955
6956         * mini.h: Bump corlib version.
6957
6958 2005-07-27  Martin Baulig  <martin@ximian.com>
6959
6960         * mini-codegen.c
6961         (create_copy_ins): Added `const unsigned char *ip' argument; set
6962         `copy->cil_code' from it.
6963
6964 2005-07-27  Martin Baulig  <martin@ximian.com>
6965
6966         * mini-exceptions.c (mono_handle_exception): Don't call
6967         mono_debugger_handle_exception() for filters.
6968
6969 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
6970
6971         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
6972         as well.
6973
6974 2005-07-26  Martin Baulig  <martin@ximian.com>
6975
6976         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
6977
6978         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
6979         helper_compile_generic_method() if the method is actually virtual
6980         and non-final.
6981
6982 2005-07-26  Martin Baulig  <martin@ximian.com>
6983
6984         * mini.c
6985         (trampoline_code): Renamed to `mono_trampoline_code' and made it
6986         public; this is now accessed directly by the debugger.
6987         (mono_generic_trampoline_code): Removed.
6988
6989         * debug-mini.c
6990         (mono_debug_init_method): Also add interncalls and wrappers.
6991
6992 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
6993
6994         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
6995
6996 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
6997
6998         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
6999
7000 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
7001
7002         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
7003
7004 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
7005
7006         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
7007         getting TLS offsets on AMD64 too.
7008
7009 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
7010
7011         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
7012
7013 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
7014
7015         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
7016         inssel-arm.brg, mini-arm.h: ARM port work in progress.
7017
7018 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
7019
7020         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
7021
7022         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
7023         to mini.c.
7024
7025         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
7026         mono_sparc_is_virtual_call ().
7027         
7028         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
7029
7030         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
7031         trampoline parameters.
7032
7033         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
7034         
7035         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
7036         to mono_arch_get_vcall_slot_addr.
7037
7038         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
7039         trampoline code.
7040
7041         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
7042
7043 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
7044
7045         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
7046
7047 2005-07-19  Martin Baulig  <martin@ximian.com>
7048
7049         * exceptions-amd64.c (throw_exception): Call
7050         mono_debugger_throw_exception() here like we're doing it on i386.
7051
7052 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
7053
7054         * mini-ia64.c: Add optimized TLS access support.
7055
7056 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
7057
7058         * mini-exceptions.c: Ongoing IA64 work.
7059
7060         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
7061
7062         * mini.c: Use the default optimization set when embedding. Fixes
7063         #75194.
7064
7065 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
7066
7067         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
7068         of trampolines to a separate file.
7069
7070         * mini-trampolines.c: New file.
7071
7072         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
7073         separate file.
7074         
7075         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
7076         amd64/ia64 code.
7077
7078         * mini-codegen.c: Fix cygwin build.
7079
7080 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
7081
7082         * mini.c: Add some minor changes needed by the IA64 port.
7083
7084         * *-ia64.*: Ongoing IA64 work.
7085
7086 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
7087
7088         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
7089         trampolines into arch-independent and arch-dependent parts.
7090
7091         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
7092
7093 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
7094
7095         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
7096
7097         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
7098         the xp-regalloc-branch for amd64.
7099
7100         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
7101         xp-regalloc-branch for x86.
7102
7103 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
7104
7105         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
7106
7107 2005-07-06  Martin Baulig  <martin@ximian.com>
7108
7109         * mini.c
7110         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
7111         (mono_jit_runtime_invoke): Likewise.
7112
7113 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
7114
7115         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
7116         on x86 too.
7117         
7118         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
7119         without loading their metadata. Reorganize the file format so exception handling+
7120         debug info is kept separate from normal method info. Create MonoJitInfo 
7121         structures for methods lazily.
7122
7123         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
7124         loading metadata.
7125         (x86_class_init_trampoline): Patch AOT class init trampolines too.
7126
7127         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
7128
7129         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
7130         in AOT code.
7131
7132         * mini.h: Bump AOT file version.
7133
7134 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
7135
7136         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
7137
7138 2005-07-01  Raja R Harinath  <rharinath@novell.com>
7139
7140         * Makefile.am (check-local): Call semdel-wrapper.
7141
7142 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
7143
7144         * mini-x86.c: Revert the last change as it seems to break the build..
7145
7146 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
7147
7148         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
7149         
7150         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
7151
7152 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
7153
7154         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
7155         outside of the macro, so strange stuff doesn't happen with gcc4
7156         (NEW_AOTCONST_TOKEN): Likewise.
7157
7158 2005-06-28  Martin Baulig  <martin@ximian.com>
7159
7160         * mini.c (mini_class_is_system_array): New static method; use this
7161         instead of `klass->parent == mono_defaults.array_class' everywhere
7162         since this also works for the new generic array class.
7163
7164 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
7165
7166         * inssel.brg: Remove warnings.
7167
7168 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
7169
7170         * mini-ia64.c: Ongoing IA64 work.
7171
7172         * basic-float.cs: Add float->i1 conversion test.
7173
7174         * iltests.il: Add conv.u4 test.
7175
7176 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
7177
7178         * inssel-long.brg: Fix bug caused by last change.
7179
7180 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
7181
7182         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
7183         BSDs.  Allows the x86 JIT to work on OSX86
7184
7185 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
7186
7187         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
7188         u4->i8 conversion.
7189
7190         * mini-ia64.c: Ongoing IA64 work.
7191
7192 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
7193
7194         * mini-ia64.c: Ongoing IA64 work.
7195
7196         * driver.c: Clean up jit_code_hash as well when using --regression.
7197
7198         * inssel-long.brg: Fix long->i4/u4 conversion rules.
7199
7200         * basic-long.cs: Add tests for long->u4 conversion.
7201
7202 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
7203
7204         * mini.c: Take mono_get_domainvar out of macros. This makes sure
7205         that we do not depend on undefined C behavior: the order stuff
7206         gets evaluated within an expression. Fixes mono when compiled on
7207         GCC 4.
7208
7209 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
7210
7211         * *-ia64.*: Ongoing IA64 work.
7212
7213         * aot.c: Lower memory usage while loading AOT methods.
7214
7215         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
7216
7217         * mini.h: Bump AOT file format version.
7218
7219 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
7220
7221         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
7222
7223 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
7224
7225         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
7226         not on callee assembly). Fixed some comments.
7227
7228 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
7229
7230         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
7231         it gets proper disassembly.
7232         (emit_method_info): Remove some dead code.
7233
7234         * mini.c (mini_method_compile): Allways allocate the GOT var in
7235         mono_method_to_ir for emulating opcodes.
7236
7237 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
7238
7239         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
7240         before freeing the code memory. Fixes #74990.
7241
7242         * objects.cs: Add regression test for #74992.
7243
7244         * liveness.c: Extend live ranges of arguments to the beginning of the
7245         method. Fixes #74992.
7246
7247         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
7248         so it points into the faulting instruction.
7249
7250 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
7251
7252         * jit-icalls.c (mono_imul_ovf): Add exception handling.
7253
7254         * *-ia64.*: Ongoing IA64 work.
7255
7256         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
7257
7258 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
7259
7260         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
7261
7262         * *-ia64.*: Ongoing IA64 work.
7263
7264 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
7265
7266         * basic-long.cs: Add tests for add/sub.ovf.
7267
7268         * basic.cs: Add tests for sub.ovf.
7269
7270         * *-ia64.*: Ongoing IA64 work.
7271
7272 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
7273
7274         * *-ia64.*: Ongoing IA64 work.
7275
7276         * basic.cs: Add conv.ovf.i4.un test.
7277
7278 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
7279
7280         * mini.c: (remove_block_if_useless) Fixed bug 75061.
7281         
7282 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7283
7284         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
7285
7286 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
7287
7288         * *-ia64.*: Ongoing IA64 work.
7289
7290 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7291
7292         * trace.[ch]:
7293         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
7294
7295 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
7296
7297         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
7298
7299 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
7300
7301         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
7302
7303         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
7304         of a call is callable by a near call.
7305
7306 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
7307
7308         * mini-ia64.c: Ongoing IA64 work.
7309
7310 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
7311
7312         * genmdesc.c: Make the generated array non-static.
7313
7314         * inssel-long.brg: Fix LSHR_IMM rule.
7315
7316         * *-ia64.*: Ongoing IA64 work.
7317
7318         * *-ia64.*: Ongoing IA64 work.
7319
7320 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
7321
7322         * *-ia64.*: Ongoing IA64 work.
7323
7324         * *-ia64.*: Ongoing IA64 work.
7325         
7326         * mini-ia64.c: Ongoing IA64 work.
7327
7328         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
7329
7330 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
7331
7332         * objects.cs basic-calls.cs: Move some tests to objects.cs.
7333         
7334         * objects.cs basic-long.cs: Move some tests to objects.cs.
7335
7336 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
7337
7338         * *-ia64.*: Ongoing IA64 work.
7339
7340         * iltests.il: Add a new test.
7341
7342         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
7343         newobj. Fixes #75042.
7344
7345 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
7346
7347         * *-ia64.*: Ongoing IA64 work.
7348         
7349         * *-ia64.*: Ongoing IA64 work.
7350         
7351         * *-ia64.*: Ongoing IA64 work.
7352
7353         * basic.cs objects.cs: Move tests accessing static variables as well.
7354
7355         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
7356
7357 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
7358
7359         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
7360
7361         * driver.c: Always print failed tests.
7362
7363         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
7364         frame pointer.
7365
7366         * *ia64*: Ongoing IA64 work.
7367
7368 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
7369
7370         * basic.cs: Add tests for add.ovf. Fix warnings.
7371
7372 2005-05-18  Miguel de Icaza  <miguel@novell.com>
7373
7374         * driver.c (mono_main): Avoid crash if no argument is passed to
7375         --break;  Do not use g_error, but f_printf.   And fix all other
7376         ocurrences of the same crash.
7377
7378 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
7379
7380         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
7381         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
7382         Fixes #74742.
7383
7384 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
7385
7386         * *-ia64.*: Add beginnings of IA64 backend.
7387
7388         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
7389
7390 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
7391
7392         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
7393         Fixes #74925.
7394
7395         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
7396
7397         * mini-amd64.c: Fix a warning.
7398
7399 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
7400
7401         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
7402         in float_neg. Fixes #74897.
7403
7404         * mini-amd64.c (emit_call): Fix another near call bug.
7405
7406 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
7407
7408         * declsec.c: Keep the appdomain information in the structure. Added a 
7409         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
7410         value gets overwritten).
7411         * declsec.h: Set the default MonoArray for the the stack to 6. Added
7412         an MonoAppDomain member to MonoSecurityFrame.
7413         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
7414         used in the stack walk. Now use a MonoArray which grow (double) when
7415         it gets full.
7416
7417 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
7418
7419         * mini.c: Re-enabled runtime cleanup, since running threads should
7420         now properly stop when exiting.
7421
7422 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
7423
7424         * mini-codegen.c: New file contaning the arch-independent local
7425         register allocator. Not used by any architectures yet.
7426
7427         * mini.h linear-scan.c: Merge some changes from the 
7428         mini-xp-local-regalloc branch.
7429
7430 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
7431
7432         * mini-amd64.c (emit_call): Fix calls to native functions when the
7433         runtime is compiled as a shared library. Fixes #74756.
7434
7435         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
7436         on a literal field. Fixes #74751.
7437
7438 2005-04-25  Raja R Harinath  <rharinath@novell.com>
7439
7440         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
7441
7442 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
7443
7444         * objects.cs: Add missing null casting test.
7445
7446 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
7447
7448         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
7449         in wrapper methods. Also rename 'address' variable to 'offset'.
7450
7451 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
7452
7453         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
7454         warnings.
7455         
7456         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
7457
7458         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
7459         work on windows.
7460
7461 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
7462
7463         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
7464
7465 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
7466
7467         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
7468         just the last bytes.
7469
7470 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
7471
7472         * aot.c (mono_compile_assembly): Fix warning.
7473
7474         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
7475         by the _MSC_VER stuff.
7476
7477 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
7478
7479         * inssel-long.brg: Fix #74588.
7480
7481         * cpu-amd64.md: Fix #74591.
7482
7483         * iltests.il: Add new regression tests.
7484
7485 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
7486
7487         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
7488         valuetype.
7489
7490 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
7491
7492         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
7493
7494         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
7495         from Bill Middleton <flashdict@gmail.com>.
7496
7497 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
7498
7499         * arrays.cs: Add new regression test. Fix warnings.
7500
7501 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
7502
7503         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
7504         and leakage in CKFINITE.
7505
7506         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
7507         this to a null op since it is called on amd64 too.
7508
7509         * exceptions-amd64.c (get_throw_trampoline): Align stack.
7510
7511         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
7512         body since this is not used on amd64.
7513         
7514         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
7515
7516         * mini-amd64.c: Remove obsolete fixmes.
7517
7518         * mini.c (print_method_from_ip): Fix debugging support.
7519
7520 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
7521
7522         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
7523         so that expressions that don't give much gain are not reduced.
7524         * ssapre.h: Likewise.
7525
7526 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
7527
7528         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
7529
7530         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
7531
7532         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
7533
7534 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
7535
7536         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
7537
7538         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
7539
7540 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
7541
7542         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
7543         stack touching.
7544
7545         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
7546
7547         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
7548
7549         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
7550
7551         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
7552         MONO_ARCH_USE_SIGACTION. Fixes #74252.
7553
7554         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
7555
7556         * mini-x86.c: Fix up stack overflow handling.   
7557
7558         * exceptions.cs: Add new regression test.
7559
7560 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
7561
7562         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
7563         mono_jit_thread_attach.
7564
7565         * mini.c (mono_method_to_ir): Verify called method is not abstract.
7566
7567 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
7568
7569         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
7570         avoid calling constructors using callvirt.
7571
7572         * inssel.brg: Fix #74073.
7573
7574 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
7575
7576         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
7577         compilation with non-GCC compilers.
7578         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
7579         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
7580
7581 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
7582
7583         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
7584         klass->interface_offsets (will likely fix bug#74073).
7585
7586 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
7587
7588         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
7589
7590 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
7591
7592         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
7593         to amd64_div_reg_size ().
7594         
7595         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
7596
7597 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
7598
7599         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
7600
7601 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
7602
7603         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
7604
7605 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
7606
7607         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
7608         
7609         * mini.c (mono_precompile_assembly): Load and precompile referenced
7610         assemblies as well. Fixes #74015.
7611
7612 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
7613
7614         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
7615
7616 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
7617
7618         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
7619         a lot of checks and (anyway) permissions cannot work until corlib is 
7620         loaded.
7621
7622 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
7623
7624         * mini-ppc.c: fixed ABI issue on sysv/ppc.
7625
7626 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
7627
7628         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
7629         calls (fixes bug#72824).
7630
7631 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
7632
7633         * mini.c: fix tail recursion elimination (see test in bug#73936).
7634
7635 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
7636
7637         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
7638         some fp functions in sse2 mode.
7639
7640 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
7641
7642         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
7643
7644 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
7645
7646         * mini.h mini.c: Add mono_get_jit_tls_key ().
7647
7648         * mini-x86.c: Enable fast TLS support on windows.
7649
7650 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7651
7652         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
7653         * mini.c: Check for p/invoke method when generating code. If a
7654         p/invoke method, or it's class, isn't decorated with [Suppress
7655         UnmanagedCodeSecurity] then generate code to call System.Security.
7656         UnmanagedDemand (only if the security manager is active).
7657
7658 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
7659
7660         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
7661         last change as it seems to cause strange crashes.
7662         
7663 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
7664
7665         * *.c: handle unsafe function pointers where needed.
7666
7667 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
7668
7669         * mini.c (mono_jit_free_method): Remove the fixme too.
7670
7671 2005-03-15  Miguel de Icaza  <miguel@novell.com>
7672
7673         * mini.c: As discussed, make the code actually free the delegate
7674         thunk now, to enable the debugging of delegate problems, use
7675         MONO_DEBUG=1 when running Mono. 
7676
7677         This takes also care of parts of the leaks as seen by Joe.
7678
7679 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
7680
7681         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
7682         thread_tls_offset calculation.
7683
7684 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
7685
7686         * declsec.c: Reworked linkdemand checks for icall. The previous code
7687         was using the declaration code (untrusted) and didn't work as expected
7688         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
7689         specific case.
7690
7691 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
7692
7693         * iltests.il: Add new localloc test.
7694
7695         * mini-amd64.c: Handle large stack allocations the same way as on
7696         windows if stack overflow handling is working.
7697         
7698         * mini-amd64.c: Allocate the signal stack using mmap.
7699
7700         * mini.c (sigsegv_signal_handler): Fix reading of context.
7701
7702         * mini-exceptions.c: Fix up stack overflow handling.
7703
7704         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
7705
7706         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
7707
7708         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
7709
7710         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
7711
7712         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
7713         tramp_init functions as they are no longer needed.
7714
7715 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
7716
7717         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
7718         
7719         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
7720
7721         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
7722         
7723         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
7724         support that now.
7725
7726         * mini-ops.h: Add OP_LMUL_IMM.
7727
7728         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
7729         long mul/div opcodes as intrinsic.
7730
7731         * mini-amd64.c (emit_call): Handle the case when the callee might be
7732         an AOT method.
7733
7734 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
7735
7736         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
7737         extra safe.
7738         
7739         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
7740
7741         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
7742
7743 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
7744
7745         * mini.c (mono_codegen): Don't leak here, to help people running
7746         monogrind.
7747
7748 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
7749
7750         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
7751         conversions in sse2 mode.
7752
7753         * basic-float.cs: Add regression test.
7754         
7755         * mini-amd64.c: Reenable sse2.
7756
7757 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
7758
7759         * mini-amd64.c: Disable sse2 until some regressions are fixed.
7760
7761 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
7762
7763         * driver.c: Copyright text should include 2005.
7764         
7765 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
7766
7767         * cpu-amd64.md (load_membase): Fix more max lengths.
7768
7769 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
7770
7771         * cpu-amd64.md (load_membase): Fix max length.
7772
7773         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
7774
7775         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
7776
7777         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
7778         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
7779
7780         * basic-float.cs: Add rounding regression test.
7781
7782         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
7783
7784 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
7785
7786         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
7787         structures in registers for pinvoke wrappers.
7788
7789 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
7790
7791         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
7792
7793 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
7794
7795         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
7796         wrapper to mono_jit_thread_attach.
7797
7798         * mini.c (mini_jit_thread_attach): New jit icall.
7799
7800         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
7801         native->managed wrappers.
7802
7803         * exceptions.cs: Add new regression test.
7804
7805         * mini.c (optimize_branches): Check regions in the cbranch to throw
7806         block case as well. Fixes #73242.
7807
7808 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
7809
7810         * mini.c: thread safety fixes.
7811
7812 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
7813
7814         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
7815         patching stuff, since delegates use jump trampolines so there is
7816         no caller.
7817
7818         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
7819         jump trampolines.
7820         
7821         * tramp-amd64.c: Fix build.
7822
7823         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
7824         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
7825
7826         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
7827         Rename this to mono_arch....
7828         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
7829
7830         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
7831
7832         * mini-amd64.c (emit_call): If both the caller and the callee is
7833         guaranteed to have 32 bit addresses, emit a normal call.
7834
7835         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
7836
7837         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
7838         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
7839         method_ptr inside delegates.
7840
7841 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
7842
7843         * mini.c (mono_jit_free_method): Free the method info even if the native code is
7844         invalidated. Fixes #73001.
7845
7846         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
7847
7848         * mini-x86.c: Only use stdcall for pinvokes on windows.
7849
7850 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
7851
7852         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
7853         * mini-x86.c: remove unreliable __thread var offset detection,
7854         use the correct accessors and enable by default.
7855
7856 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
7857
7858         * mini.c (mono_jit_free_method): Fix memory leak.
7859
7860 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
7861
7862         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
7863
7864 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
7865
7866         * cpu-amd64.md: Fix lengths of atomic opcodes.
7867
7868 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
7869
7870         * driver.c: try to not imply using ICU is any good.
7871
7872 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
7873
7874         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
7875         functions as inline ops.
7876
7877         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
7878         some Interlocked functions as inline ops.
7879
7880         * mini.c (move_basic_block_to_end): Fix bug in last patch.
7881
7882         * mini.h (MonoBasicBlock): Reorganize fields a bit.
7883
7884         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
7885
7886         * mini.c: Add support for OP_NOT_TAKEN.
7887
7888         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
7889         structures in registers for pinvoke wrappers.
7890
7891         * mini-amd64.c: Fix warnings.
7892
7893 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
7894
7895         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
7896
7897         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
7898
7899         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
7900         address instead of loading the address from it.
7901
7902         * mini-x86.c: Add support for returning small structs in registers
7903         on Win32. Fixes part of #70864.
7904         
7905 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
7906
7907         * trace.c (get_token): Improve error checking.
7908
7909 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
7910
7911         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
7912
7913 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
7914  
7915         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
7916         it can be reused for MonoClass.
7917         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
7918         _LINKDEMAND.
7919
7920 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
7921
7922         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
7923         instead of a MonoReflectionMethod. The method information wasn't used
7924         when displaying SecurityException details (but will be now).
7925
7926 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
7927
7928         * Makefile.am : windows build fix.
7929
7930 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
7931
7932         * iltests.il: Add new regression test.
7933
7934         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
7935         #72522.
7936
7937 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
7938  
7939         * mini.c: Moved linkdemand check into helper function check_linkdemand
7940         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
7941         LDFTN, LDVIRTFTN).
7942
7943 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
7944
7945         * declsec.c: Added statistics counter for different kinds of 
7946         LinkDemands.
7947         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
7948         (and commented) declaration.
7949         * mini.c: Added statistics counter for security Demand code 
7950         generation. Added display of security statistics.
7951
7952 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
7953
7954         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
7955         Fix compilation errors under gcc-2.95.
7956
7957 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
7958
7959         * mini.c, driver.c: Use the new jit trampoline hashtable
7960
7961 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
7962
7963         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
7964
7965 2005-02-11  Martin Baulig  <martin@ximian.com>
7966
7967         * debug-mini.c (mono_debug_close_method): Free the line number array.
7968
7969 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
7970
7971         * aot.c: Break up large methods into smaller ones. Share GOT slots for
7972         icalls.
7973
7974         * mini.h: Bump AOT file format version. 
7975
7976 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
7977
7978         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
7979         APTC and P/Invoke.
7980         * declsec.h: Added macros to get/set lazyly initialized security 
7981         informations about assemblies. Added new enum for different type of
7982         possible LinkDemand violation. Added function to check LinkDemands.
7983         * mini.h: Added a field to MonoCompile to hold any security violation
7984         detected when JITting a method (so it can be thrown later).
7985         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
7986         and CEE_CALLVIRT. Added code to throw exception at the end of
7987         mini_method_compile (note: the exception is unhandled right now).
7988
7989 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
7990
7991         * mini.c, jit-icalls.c: use the managed implementation of
7992         memset for initobj and memset, to avoid managed <-> unmanaged
7993         transitions.
7994
7995 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
7996
7997         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
7998         optimization if it would need a GOT var.
7999
8000         * basic.cs: Add tests for constant propagation and switch statements.
8001
8002         * ssa.c: Fix out-of-range constant propagation and switch statements.
8003
8004 2005-02-09    <vargaz@freemail.hu>
8005
8006         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
8007
8008 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
8009
8010         * cpu-amd64.md (load_membase): Fix max length of load_membase.
8011
8012 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
8013
8014         * mini.c: update to new signature of mono_class_get_allocation_ftn().
8015
8016 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
8017
8018         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
8019         arithmetic operations.
8020
8021 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
8022
8023         * mini-ppc.c: add a workaround for broken user code that
8024         DllImports vararg functions with non-vararg signatures.
8025
8026 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
8027
8028         * mini.c (mono_jit_compile_method_inner): Add detection and a 
8029         meaningfull error message for assemblies written in Managed C++.
8030
8031         * tramp-amd64.c mini-amd64.h: Add support for 
8032         create_trampoline_from_token ().
8033
8034         * aot.c mini-x86.c abcremoval.c: Applied patch from
8035         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
8036
8037 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
8038
8039         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
8040         which takes a MonoImage/token as parameter instead of a MonoMethod.
8041
8042         * aot.c: Use the new trampoline for initializing vtables.
8043
8044         * aot.c: Add support for ldfld/stfld_remote wrappers.
8045
8046         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
8047         rules for compare <MEM>, IMM.
8048
8049         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
8050
8051         * aot.c: Handle inherited finalizers correctly.
8052
8053 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
8054
8055         * inssel.brg (stmt): Add a missing _setup_... ().
8056
8057         * aot.c: Save some parts of the class state to the AOT file and use it
8058         to recompute that state when a class is initialized.
8059
8060         * mini.c: Install AOT hooks into the runtime.
8061
8062         * mini.h: Bump AOT file format version.
8063         
8064         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
8065         Fixes #72148.
8066
8067         * iltests.il: Add new test.
8068
8069 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
8070
8071         * mini.c: fix typo.
8072
8073 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
8074
8075         * mini.c: setup the statistical profiler in the thread attach
8076         callback to cope with the new single thread code.
8077
8078 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
8079
8080         * mini-ppc.c: ensure we have enough room for the profiler
8081         calls (fixed bug#72084).
8082
8083 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
8084
8085         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
8086         it.
8087
8088 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
8089
8090         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
8091
8092 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
8093
8094         * ssapre.c: Fixed an issue with down safety (this allows IronPython
8095         to succesfully execute parrotbench).
8096         * ssapre.h: Likewise.
8097
8098 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
8099
8100         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
8101         variable for stores to method arguments (fixes a SSAPRE issue).
8102
8103 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
8104
8105         * mini.c: handle value types in dup, fixes gen-112.cs.
8106
8107 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
8108
8109         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
8110         sequence for calls in dynamic methods to avoid thunks.
8111
8112 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
8113
8114         * mini.c: correctly remove dynamic methods from the hashtable.
8115
8116 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
8117
8118         * driver.c: Disabled SSAPRE until fix the bug that appears
8119         in IronPython's parrotbench.
8120
8121 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
8122
8123         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
8124
8125         * mini.c (mono_method_to_ir): Revert the previous change.
8126         
8127         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
8128         when AOT compiling.
8129
8130         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
8131         mono_jit_info_table_find () etc. when running under valgrind.
8132
8133         * inssel.brg: Fix warnings.
8134
8135         * mini-exceptions.c: Fix warnings.
8136
8137 2005-01-31  Martin Baulig  <martin@ximian.com>
8138
8139         * driver.c (compile_all_methods_thread_main): Don't try to compile
8140         generic methods or anything which has type parameters.
8141
8142 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
8143
8144         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
8145
8146         * TestDriver.cs: Add --verbose flags.
8147
8148         * graph.c ssa.c: Fix 64 bit warnings.
8149         
8150         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
8151         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
8152         Fix 64 bit warnings.
8153
8154         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
8155         variable not spotted by gcc.
8156         
8157         * mini-amd64.c inssel-amd64.brg: Applied patch from  
8158         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
8159         X86_COMPARE_MEMBASE opcodes.
8160
8161         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
8162
8163 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
8164
8165         * *: MonoMethod->signature might be NULL now. You *MUST* use
8166         mono_method_signature.
8167
8168 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
8169
8170         * driver.c (compile_all_methods_thread_main): Compile the methods
8171         without invoking cctors.
8172
8173 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
8174
8175         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
8176         * basic-calls.cs: test for the above.
8177
8178 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
8179
8180         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
8181         MonoJitInfo changes.
8182
8183 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
8184
8185         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
8186         eagerly if it contains dynamic methods.
8187         
8188         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
8189
8190         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
8191         trace, it is now computed by an icall from trace_ips.
8192         
8193         * mini-exceptions.c: Fix a warning.
8194
8195 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
8196
8197         * mini-exceptions.c: don't bother getting stack trace info if
8198         it's not going to be used.
8199
8200 2005-01-27  Raja R Harinath  <rharinath@novell.com>
8201
8202         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
8203         ssapre-mini-ops.h.
8204
8205 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
8206
8207         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
8208
8209         * aot.c: Avoid calling mono_method_get_header () if not needed.
8210
8211         * mini.h: Bump AOT file format version.
8212         
8213         * mini.c (mono_emit_native_call): Allocate a GOT var here.
8214
8215         * mini.c (mono_print_tree): Print more info for calls.
8216
8217 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
8218
8219         * declsec.h: Remove warning by adding missing include for marshal.h
8220
8221 2005-01-26  Martin Baulig  <martin@ximian.com>
8222
8223         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
8224         `ip' twice.
8225
8226 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
8227
8228         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
8229         flags.
8230
8231         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
8232
8233         * aot.c (mono_compile_assembly): Fix a warning.
8234
8235 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
8236
8237         * declsec.c: Look for security attributes on the original MonoMethod 
8238         (and not the wrapped one). This fix permissions on icalls.
8239
8240 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
8241
8242         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
8243
8244         * mini.c (mono_allocate_stack_slots): Add a fixme.
8245
8246         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
8247
8248 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
8249
8250         * inssel.brg: optimize casts of sealed types (more
8251         optimizations waiting for fixes in remoting).
8252
8253 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
8254
8255         * inssel.brg (stmt): Add another dummy rule.
8256
8257         * driver.c: Fix warnings.
8258
8259         * driver.c (mono_main): If running under valgrind, instruct glib to use
8260         the system allocation functions so valgrind can track the memory
8261         allocated by the g_... functions.
8262
8263         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
8264
8265         * mini-ops.h: Add OP_DUMMY_STORE opcode.
8266
8267         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
8268
8269         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
8270         variables in try regions.
8271
8272         * mini.c (mini_method_compile): Don't disable optimizations on large
8273         methods when AOT compiling.
8274
8275         * mini.c (mono_allocate_stack_slots): New arch independent method to 
8276         allocate stack slots. Not yet used.
8277
8278 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
8279
8280         * debug-mini.c (mono_debug_close_method): Plug some leaks.
8281
8282 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
8283
8284         * mini-ppc.c: make the branch info relative as the code
8285         buffer can be reallocated.
8286
8287 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
8288
8289         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
8290         * driver.c: Removed the AOT/security restriction. Now initialize the
8291         security manager (in metadata) if --security is used.
8292         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
8293         rather than the pointer to declarative security, when AOT is used.
8294
8295 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
8296
8297         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
8298         basic blocks, reduced intrinsic exception throwing code size.
8299
8300 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
8301
8302         * driver.c (mini_usage): Reorder the usage screen.
8303
8304 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
8305
8306         * mini.c (mono_resolve_patch_target): Fix warning.
8307
8308 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
8309
8310         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
8311         previous patch.
8312
8313         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
8314
8315         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
8316         breaks the amd64 build.
8317
8318         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
8319         register allocation. Fixes #71454.
8320
8321         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
8322
8323         * arrays.cs: Add new regression test.   
8324
8325 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
8326
8327         * ssapre.c: Turned usage of snprintf to GString.
8328         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
8329         (I left it on by mistake in my previous commit).
8330
8331 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
8332
8333         * mini.c, cfold.c, basic-calls.cs: preserve side effects
8334         on cond branch optimization (fixes bug# 71515).
8335
8336 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
8337
8338         * abcremoval.c: Fixed bug 71062.
8339         * abcremoval.h: Likewise.
8340
8341 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
8342
8343         * mini.c: Added a new functionality to optimize_branches, the removal
8344         of useless basic blocks, and fixed some problem in the removal of
8345         critical edges; some utility functions added for both purposes.
8346         * ssapre.c: Added complex expression support, and fixed bug 70637.
8347         * ssapre.h: Likewise.
8348         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
8349         enabled in SSAPRE.
8350         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
8351         * driver.c: Re-enabled SSAPRE.
8352
8353 2005-01-19  Martin Baulig  <martin@ximian.com>
8354
8355         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
8356         the result of mono_get_method_constrained().
8357
8358 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
8359
8360         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
8361         manager.
8362
8363 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
8364
8365         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
8366         be detected.  Fixes #59296.
8367
8368 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
8369
8370         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
8371         which can happen. Fixes #71361.
8372
8373 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
8374
8375         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
8376         manager.
8377
8378 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
8379
8380         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
8381         appdomain-unload.exe to fail.
8382         
8383         * mini.c: Fix some memory leaks.
8384
8385 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
8386
8387         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
8388         Fixed bug and sped up some codepaths.
8389
8390 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
8391
8392         * mini.c: Fix some memory leaks.
8393
8394         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
8395         conversion.
8396
8397         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
8398
8399         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
8400         #71320.
8401
8402         * iltests.il: Add regression test for #71320.
8403
8404 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
8405
8406         * mini.c (mono_codegen): Fix installation of profiler hooks.
8407
8408         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
8409
8410 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
8411
8412         * mini.h, mini.c, cfold.c: optimize access to enum
8413         readonly fields, too. Eval conditional branches if possible
8414         to perform unreachable code removal in more cases.
8415
8416 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
8417
8418         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
8419
8420         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
8421         code manager.
8422
8423         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
8424         WinXP DEP. Fixes #71244.
8425
8426 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
8427
8428         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
8429
8430 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
8431
8432         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
8433
8434 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
8435
8436         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
8437         changes.
8438
8439         * mini.h: Bump AOT version.
8440
8441         * mini.h (MonoCompile): Change exvar to a hash table.
8442
8443         * mini.c: Allocate a separate exvar for each handler block.
8444
8445         * mini.c: Get rid of the computation of filter_lengths, its not needed.
8446
8447         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
8448         ex var with the pending exception and only throw if the two are equal.
8449         Fixes #68552.
8450         
8451         * exceptions.cs: Add tests for rethrow and nested catch clauses.
8452
8453         * mini-x86.c: Fix warnings.
8454
8455         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
8456         used by all the ports now.
8457
8458         * aot.c: Add write-symbols and save-temps options.
8459
8460 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
8461
8462         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
8463
8464 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
8465
8466         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
8467         operations.
8468
8469         * tramp-s390.c: Check vtable slot belongs to the domain.
8470
8471         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
8472         as per other platforms.
8473
8474         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
8475
8476 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
8477
8478         * driver.c: we don't run the Main() code in a subthread anymore.
8479
8480 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
8481
8482         * mini.c: added experimental rtc support in the statistical
8483         profiler: if the user has the permission, more accurate statistics
8484         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
8485         The MONO_RTC value must be restricted to what the linux rtc allows:
8486         power of two from 64 to 8192 Hz.
8487
8488 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
8489
8490         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
8491
8492 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
8493
8494         * mini-ppc.c: better icache flush for smp.
8495
8496 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
8497
8498         * mini-amd64.c (emit_move_return_value): Fix memory leak.
8499
8500         * mini-x86.c (get_call_info): Add the get_call_info () code from the
8501         amd64 port, not yet used.
8502
8503 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
8504
8505         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
8506         a struct type.
8507
8508 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
8509
8510         * driver.c: Added --security option to activate the security manager.
8511         Right now this will allow code generation for declarative demands and
8512         is disabled when AOT is specified.
8513         * mini.c: Add code generation for declarative security demands.
8514         * mini.h: Add mono_use_security_manager as an extern gboolean.
8515
8516 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
8517
8518         * aot.c (mono_compile_assembly): Speed up compilation a bit by
8519         emitting more dense assembly code.
8520
8521         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
8522         exception throwing stuff.
8523
8524 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
8525
8526         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
8527         dead code.
8528
8529         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
8530         left in by mistake.
8531
8532         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
8533         fixed.
8534
8535         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
8536
8537         * tramp-*.c: Only patch vtable slots if the object is in the current
8538         domain. Fixes appdomain-unload.exe.
8539
8540         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
8541         
8542         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
8543         x86 branch.
8544
8545 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
8546
8547         * mini.c (reverse_branch_op): New helper function.
8548
8549         * mini.c (optimize_branches): Run the new optimization only on 
8550         platforms which support it. Also reverse all kinds of branches.
8551
8552         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
8553
8554         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
8555         a throw statement.
8556
8557         * mini.c (optimize_branches): Reverse not-equals branches if the false
8558         bblock is a throw. This happens a lot of time with argument checking in
8559         corlib.
8560
8561         * mini.c (mono_codegen): Add support for placing basic blocks after
8562         the function epilogue.
8563
8564         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
8565         function epilogue.
8566         
8567 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
8568
8569         * mini.c (setup_stat_profiler): Only set this up if the platform
8570         supports ITIMER_PROF.
8571
8572 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
8573
8574         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
8575         previous patch.
8576
8577         * inssel.brg: Fix a warning.
8578
8579 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
8580
8581         * mini.c: added support for statistical profiler 
8582         (run with: --profile=default:stat).
8583
8584 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
8585
8586         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
8587
8588         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
8589
8590         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
8591         related to global registers from the amd64 port.
8592
8593 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
8594
8595         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
8596
8597         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
8598         with global registers.
8599         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
8600
8601         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
8602
8603 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
8604
8605         * debug-mini.c (encode_value): Fix off-by-one.
8606
8607         * aot.c (encode_value): Likewise.
8608
8609         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
8610
8611 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
8612
8613         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
8614         AOT.
8615
8616         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
8617         
8618         * aot.c (emit_method_info): Increase size of temp buffer.
8619
8620         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
8621         the AOT case.
8622
8623 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
8624
8625         * aot.c (emit_method_info): Fix build.
8626         
8627         * aot.c: Further rework of the AOT file format to reduce the size of
8628         the method info data.
8629
8630         * mini.h: Bump AOT file format version.
8631
8632 2004-12-27  Martin Baulig  <martin@ximian.com>
8633
8634         * mini.c (mini_get_method): New static method; call
8635         mono_get_method_full() and mono_get_inflated_method().
8636         (mono_method_to_ir): Use mini_get_method() instead of
8637         mono_get_method_full(). 
8638
8639 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
8640
8641         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
8642
8643 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
8644
8645         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
8646
8647         * inssel-amd64.brg: Add some optimization rules.
8648
8649 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
8650
8651         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
8652         standard not GC'd stuff is fine.
8653
8654 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
8655
8656         * aot.c: Rework the AOT file format to get rid of most of the global
8657         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
8658
8659         * mini.h: Bump AOT file format version.
8660         
8661 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
8662
8663         * mini.h: Bump AOT file format version.
8664
8665         * aot.c (mono_aot_is_got_entry): New function to determine if an 
8666         address is inside a GOT.
8667
8668         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
8669
8670         * cpu-pentium.md: Increase the maximum size of some instructions which
8671         might involve a got access.
8672         
8673         * mini.c (get_method_from_ip): Another debug helper function.
8674
8675         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
8676         when got var accesses are created during the decompose phase.
8677
8678         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
8679
8680         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
8681         argument mini_compile_method and to MonoCompile, and use this to
8682         determine whenever a given method is compiled for AOT. This allows the
8683         other methods compiled during AOT compilation to be free of AOT stuff,
8684         so the backends does not need to add special support for them by
8685         creating a fake GOT etc.
8686
8687         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
8688         longer needed.
8689
8690 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
8691
8692         * mini.c (mono_method_to_ir): It turns out that some of the
8693         x-appdomain wrappers are lax with types, so just ignore this for
8694         all wrappers.
8695
8696         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
8697         at the vtable->klass. If it is non-shared code we can just use the
8698         vtable.
8699
8700 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
8701
8702         * mini-ppc.c: access MonoDomain from tls, too.
8703
8704 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
8705
8706         * declsec.c: Removed unused variable (and related warning ;-)
8707
8708 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
8709
8710         * iltests.il: New test for LDELEMA on an array of ref types.
8711
8712         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
8713         all ldelema's on reftypes.
8714         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
8715         it was the wrong place to put it.
8716
8717         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
8718         register to pop to make this cleaner, at the request of Paolo.
8719
8720 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
8721
8722         * mini-ops.h (OP_GETHASHCODE): New op.
8723
8724         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
8725
8726         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
8727         operation.
8728
8729         For a microbenchmark, this reduces the cost of Hashtable.get_Item
8730         by 25%.
8731         
8732         * mini-x86.c (mono_arch_output_basic_block): Rather than
8733
8734         add ebp, 4
8735
8736         Emit
8737
8738         pop edx
8739
8740         The first is 3 bytes while the second is 1. This saves 36 kb on
8741         mscorlib, quite a big saving. When bootstraping mcs, I was able to
8742         see a small boost because of icache locality.
8743
8744         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
8745
8746 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
8747
8748         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
8749         started code sharing with the generic code.
8750
8751 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
8752
8753         * mini-ppc.c, cpu-g4.md: added code for direct access to
8754         tls data slots.
8755
8756 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
8757
8758         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
8759          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
8760         to OP_TLS_GET.
8761
8762 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
8763
8764         * declsec.c|h: Added functions to cache the declarative stack modifiers
8765         in MonoJitInfo and to create a security frame from a MonoJitInfo 
8766         structure.
8767         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
8768         created. Register internal calls for System.Security.SecurityFrame::
8769         _GetSecurityFrame and _GetSecurityStack.
8770         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
8771         the definitions for the new stack walk/callback mechanism.
8772         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
8773         first security frame for LinkDemands and InheritanceDemands) and
8774         GetSecurityStack for Demands. Both use the new mono_walk_stack code
8775         from lupus.
8776         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
8777         walk initialization (lupus).
8778
8779 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
8780
8781         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
8782         idiom.
8783         (handle_loaded_temps): Do not create a temporary variable for
8784         things that we know are temps. They will never be modified.
8785         (mono_spill_call): Set MONO_INST_IS_TEMP
8786         (mono_emulate_opcode): ditto
8787         (emit_tree): ditto
8788         (mono_method_to_ir.CEE_DUP): ditto
8789
8790 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
8791
8792         * mini.c (type_to_eval_stack_type): Make this handle the void type
8793         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
8794         (emit_tree): use ip_in_bb to special case some common idioms
8795         Update all callers to pass in the IP.
8796         (mono_method_to_ir): Make CEE_CALL* do the above as well.
8797
8798         This gives us a nice 2% speedup in mcs bootstrap.
8799
8800         * mini-x86.c (peephole_pass): Peephole pass to make
8801         mov  [foo], eax
8802         push [foo]
8803
8804         into
8805
8806         mov [foo], eax
8807         push eax
8808
8809         * mini.c (ip_in_bb): new method.
8810         (mono_method_to_ir): use this method rather than doing the hash
8811         lookup ourselves.
8812
8813         * linear-scan.c (mono_linear_scan): When expiring actives, you
8814         don't need to keep around variables that expire on this
8815         instruction. This makes it so that:
8816              a = b + 1
8817         will turn into:
8818              store (ebx add (ebx, 1))
8819         which will become
8820              add ebx, 1
8821
8822 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
8823
8824         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
8825         combination to avoid doing two copies. Fix up problems with previous
8826         patch.
8827
8828         * mini.c: Fix 64 bit warnings.
8829
8830         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
8831
8832 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
8833
8834         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
8835         changes from the x86 code.
8836
8837         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
8838
8839 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
8840
8841         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
8842         throwing code to reduce its size, unify the AOT and non-aot code and 
8843         get rid of relocations in the AOT case.
8844
8845         * mini-x86.h mini.c exceptions-x86.c 
8846         (mono_arch_get_throw_corlib_exception): New arch specific function to 
8847         raise corlib exceptions which doesn't require relocations in the 
8848         caller.
8849
8850         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
8851
8852 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
8853
8854         * mini.c (mono_emit_method_call): Only allocate the got var when it is
8855         needed.
8856
8857         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
8858         in the AOT case.
8859
8860 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
8861
8862         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
8863         with add function when used from Inc/dec atomic 
8864         functions. Re-enabled optimization on x86.
8865         * mini-ops.h: renamed atomic_add functions to
8866         allow _add to match the Interlocked::Add and
8867         _add_next to match Interlocked::Inc/Dec.
8868
8869 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
8870
8871         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
8872         linking of BBs to the end BB, and enabled SSAPRE also with
8873         consprop and copyprop (which was prevented by that bug).
8874
8875 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
8876
8877         * mini-x86.c: disabling the Interlocked optimizing code. 
8878
8879 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
8880
8881         * aot.c (load_aot_module): Move reading of got_addr after the AOT
8882         file version check.
8883         
8884 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
8885
8886         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
8887         interlocked optimization due lack of support on x86, rewrote 
8888         exchange to take into account that base may be in eax.
8889         
8890         xsp works again; activated Interlocked optimizing code.
8891         
8892 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
8893
8894         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
8895
8896 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
8897
8898         * mini-ops.h: Add new opcodes.
8899
8900         * mini.h: Add new patch types. Add got_var to MonoCompile.
8901
8902         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
8903         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
8904         make it work with all kinds of patchable code.
8905
8906         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
8907         address of the GOT, and referencing entries in the GOT.
8908
8909         * mini.c: Add code to load the GOT address if needed by an opcode.
8910
8911         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
8912         independent AOT code on the x86 using an elf-style Global Offset Table.
8913
8914 2004-12-14  Raja R Harinath  <rharinath@novell.com>
8915
8916         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
8917
8918 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8919
8920         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
8921         when running xsp.
8922
8923 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
8924
8925         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
8926         of Interlocked:Increment/Decrement/Add as inline ops.
8927         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
8928
8929 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
8930
8931         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
8932         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
8933
8934 2004-12-12  Duncan Mak  <duncan@ximian.com>
8935
8936         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
8937         again. `patch_info->table_size' is no longer valid after Zoltan's
8938         commit #37636.
8939
8940 2004-12-12  Martin Baulig  <martin@ximian.com>
8941
8942         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
8943         if we are the "real" method, ie. not an inlined method inside it.
8944
8945 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
8946
8947         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
8948         before we look in the special fields table. This fixes
8949         ../tests/thread-static-init.cs.
8950
8951 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8952
8953         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
8954         for Array get_Rank and get_Length. Fixes bug #70465.
8955
8956 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
8957
8958         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
8959         separate structure to reduce the size of MonoJumpInfo.
8960
8961 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
8962
8963         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
8964
8965 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
8966
8967         * mini.c (mini_get_inst_for_method): Changed to allow ports
8968         to return a MonoInst instead of opcode 
8969         (renamed mini_get_opcode_for_method to better reflect the new functionality)
8970         
8971         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
8972         Allow ports to return a created MonoInst instead of op-code, will enable
8973         new optimizations.
8974         (renamed mini_get_opcode_for_method to better reflected the functionality)
8975
8976 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
8977
8978         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
8979
8980 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
8981
8982         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
8983         Fixes #69985.
8984
8985 2004-12-08  Martin Baulig  <martin@ximian.com>
8986
8987         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
8988         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
8989
8990 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
8991
8992         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
8993         correctly.
8994
8995         * exceptions.cs: Disable some tests which depend on properties of x86 fp
8996         arithmetic.
8997
8998 2004-12-08  Raja R Harinath  <rharinath@novell.com>
8999
9000         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
9001
9002 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
9003
9004         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
9005         bug introduced by the previous patch.
9006
9007 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
9008
9009         * mini-ppc.c, objectc.cs: handle large structs passed by value
9010         (fixes bug #69972).
9011
9012 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
9013
9014         * mini-ppc.c: OP_ARGLIST implementation from
9015         Geoff Norton  <gnorton@customerdna.com>.
9016
9017 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
9018
9019         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
9020         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
9021
9022 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
9023
9024         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
9025
9026 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9027
9028         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
9029         support.
9030
9031 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
9032
9033         * mini-sparc.c: Zero out localled-ed memory.
9034
9035         * iltests.il: Add tests for zeroing out localloc-ed memory.
9036
9037 2004-12-04  Martin Baulig  <martin@ximian.com>
9038
9039         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
9040         mono_method_get_signature_full().       
9041
9042 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
9043
9044         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
9045         and some utility functions (always for SSAPRE), integrated SSAPRE.
9046         * mini.h: Likewise.
9047         * driver.c: Added ssapre option.
9048         * ssa.c: Small fix on OP_ARG handling.
9049         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
9050         * Makefile.am: Likewise.
9051
9052 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
9053
9054         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
9055         now in the xp code.
9056
9057         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
9058         icall.
9059
9060 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9061
9062         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
9063         
9064         * cpu-s390.md : Increase instruction length of oparglist.
9065
9066         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
9067
9068 2004-11-30  Martin Baulig  <martin@ximian.com>
9069
9070         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
9071         virtual generic methods.  We call a special helper_compile_generic_method()
9072         icall to retrieve the method from the vtable, inflate and compile
9073         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
9074
9075         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
9076
9077 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
9078
9079         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
9080
9081 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
9082
9083         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
9084         Fixes #69929.
9085
9086 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
9087
9088         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
9089         platforms with PIC aot.
9090
9091 2004-11-28  Martin Baulig  <martin@ximian.com>
9092
9093         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
9094         Fixes gen-112.cs.
9095
9096 2004-11-28  Martin Baulig  <martin@ximian.com>
9097
9098         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
9099         the result of mono_type_get_underlying_type() to check whether
9100         we're byref.
9101
9102 2004-11-26  Martin Baulig  <martin@ximian.com>
9103
9104         * mini.c
9105         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
9106         in the g_assert().
9107
9108 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
9109
9110         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
9111         the same way as the other arguments so they won't get clobbered.
9112
9113         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
9114         calls through R11 since it is clobbered by the trampoline code.
9115
9116 2004-11-26  Raja R Harinath  <rharinath@novell.com>
9117
9118         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
9119         pick up in-tree mscorlib.dll.
9120
9121 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
9122
9123         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
9124
9125         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
9126         runtime data/code are now stored in a table similar to the GOT in ELF. 
9127         This allows the code itself to be position independent.
9128
9129         * aot.c: Fix loading of referenced assemblies after the lazy assembly
9130         loading changes.
9131
9132         * aot.c: Attach ELF type (object/function) directives to all global
9133         symbols.
9134
9135         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
9136
9137         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
9138
9139         * mini-amd64.h: Turn on PIC AOT code.
9140
9141         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
9142         returning the offset within an OP_AOTCONST instruction where the GOT
9143         offset needs to be added.
9144
9145         * mini.h: Bump AOT file format version.
9146
9147 2004-11-25  Martin Baulig  <martin@ximian.com>
9148
9149         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
9150         uninflated generic methods.
9151
9152 2004-11-25  Martin Baulig  <martin@ximian.com>
9153
9154         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
9155
9156 2004-11-24  Martin Baulig  <martin@ximian.com>
9157
9158         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
9159         original klass (this only applies for generic instances).
9160
9161 2004-11-24  Martin Baulig  <martin@ximian.com>
9162
9163         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
9164         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
9165         that array).
9166
9167 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
9168
9169         * mini.c (mono_method_to_ir): Disable inlining for methods containing
9170         localloc. Fixes #69678.
9171
9172         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
9173         
9174 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
9175
9176         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
9177         used SSE registers on pinvoke calls. Fixes #69774.
9178
9179 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
9180
9181         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
9182         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
9183
9184 2004-11-23  Raja R Harinath  <rharinath@novell.com>
9185
9186         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
9187         Refer directly to the mcs/ tree.
9188
9189 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9190
9191         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
9192         Check if a trampoline for a synchronized method is required. 
9193
9194 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
9195
9196         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
9197         with localloc if needed. Throe arithmetric exception in
9198         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
9199         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
9200
9201 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
9202
9203         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
9204         types before switching on type.  Fixes #69622.
9205
9206 2004-11-19  Raja R Harinath  <rharinath@novell.com>
9207
9208         * Makefile.am (check-local): New.  Integrate into 'make check'.
9209         (MCS,RUNTIME): Define using in-tree mono and mcs.
9210         (ILASM): New.
9211         (%.exe): Use $(ILASM).
9212
9213 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
9214
9215         * mini-ppc.c: adjust initial prolog size (bug #69691).
9216
9217 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
9218
9219         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
9220         #69664.
9221
9222 2004-11-17  Raja R Harinath  <rharinath@novell.com>
9223
9224         * Makefile.am (clean-local): Rename from 'clean'.
9225
9226 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9227
9228         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
9229         to mono_arch_is_int_overflow. 
9230         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
9231         SIGFPE events.
9232
9233 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
9234
9235         * declsec.c|h: New files to support declarative security attributes.
9236         Added function to check if a method has (applicable) security.
9237         * mini.c|h: Add check for declarative security attributes in
9238         mono_method_check_inlining.
9239         * Makefile.am: Added declsec.c and declsec.h to the build.
9240
9241 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
9242
9243         * mini.c, mini.h: update to keep dynamic code info per-domain.
9244
9245 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
9246
9247         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
9248         (mini_init): Get rid of it from here too.
9249
9250 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
9251
9252         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
9253         implemented OP_RETHROW (patch by Geoff Norton
9254         <gnorton@customerdna.com>).
9255
9256 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
9257
9258         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
9259         between appdomains.  Fixes appdomain-unload on PPC.
9260
9261 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
9262
9263         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
9264         mini-exceptions.c: handle the new wrapper types.
9265         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
9266         token value as a MonoClass* when compiling a wrapper.
9267         mono_jit_create_remoting_trampoline now takes an additional
9268         MonoRemotingTarget parameter.
9269         
9270 2004-11-10  Martin Baulig  <martin@localhost>
9271
9272         * mini.c (mono_method_to_ir): Use `generic_container->context'
9273         rather than creating a new one.
9274
9275 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9276
9277         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
9278
9279         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
9280
9281 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
9282
9283         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
9284         the experimental aot cache stuff.
9285
9286 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
9287
9288         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
9289         mini-exceptions.c: update to exception clause structure changes.
9290
9291 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
9292
9293         * exceptions-x86.c (throw_exception): Fix warnings.
9294
9295         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
9296         for OP_RETHROW.
9297
9298 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
9299
9300         * exceptions-sparc.c (get_throw_exception): Really fix this.
9301
9302 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
9303
9304         * tramp-*.c: we no longer support icalls without wrappers, so
9305         a bit of code can be removed here
9306
9307 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
9308
9309         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
9310         patch.
9311
9312         * cpu-sparc.md: Add op_rethrow.
9313
9314         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
9315
9316         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
9317
9318         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
9319         * mini-ops.h: Add OP_RETHROW.
9320
9321         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
9322
9323         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
9324
9325 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
9326         
9327         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
9328         Makes the output much easier to read
9329
9330 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
9331
9332         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
9333         prevents another huge leak when compiling with ssa. Secondly, the
9334         performance of doing this rather than freeing the lists is much
9335         better. GList does a lock every time you allocate a list link,
9336         so that it can use a memory pool. So, it is better to just use
9337         a memory pool of our own.
9338         
9339         * ssa.c, linear-scan.c: replace g_list_remove_link with
9340         g_list_delete.  The remove one does not free the GList, so we were
9341         leaking memory. On -O=all --compile-all with corlib, this cut down
9342         3 MB of allocations.
9343
9344 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
9345
9346         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
9347
9348         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
9349
9350         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
9351         into a new function mono_create_jit_trampoline ().
9352
9353 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
9354
9355         * trace.c (get_spec): Allow tracing of classes without a namespace.
9356
9357 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
9358
9359         * mini.c: Fix pointer overwrite in mini_method_compile.
9360
9361 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
9362
9363         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
9364         The darwin ABI needs some special handling for 1 and 2 byte structs
9365         Lets use lbz/lhz instead of lwz everywhere.
9366         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
9367         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
9368         Use stb/sth for the former, and put the latter always on stack instead of in
9369         argument registers.
9370
9371 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
9372
9373         * trace.c (is_filenamechar): Add '_'.
9374
9375 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
9376
9377         * mini-s390.c: Fix prolog length to allow for large trace requirements.
9378
9379         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
9380
9381 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
9382
9383         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
9384         depends on libmonogc. Fixes #68805.
9385
9386 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
9387
9388         * mini.c (mono_jit_free_method): Provide extra information for
9389         this error.  Currently this leaks, but will be turned into a
9390         developer option in the future.
9391
9392 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
9393
9394         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
9395
9396 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
9397
9398         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
9399         boundary. Fixes reading of PATCH_INFO_R4 and R8.
9400         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
9401
9402 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
9403
9404         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
9405         trampolines for AOT code.
9406
9407 2004-10-22    <vargaz@freemail.hu>
9408
9409         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
9410         constructed types. Fixes #68136.
9411
9412 2004-10-21  Martin Baulig  <martin@ximian.com>
9413
9414         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
9415         if it returns true, unwind the stack to the call instruction.
9416
9417 2004-10-21    <vargaz@freemail.hu>
9418
9419         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
9420
9421         * mini.h: Bump AOT version number.
9422
9423         * objects.cs: Add another test for unbox trampolines.
9424
9425         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
9426         valuetype methods.
9427
9428 2004-10-20    <vargaz@freemail.hu>
9429
9430         * driver.c: Add SHARED to the set of optimizations tested.
9431
9432         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
9433
9434         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
9435         used by CEE_NEWARR.
9436
9437         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
9438
9439 2004-10-20  Martin Baulig  <martin@ximian.com>
9440
9441         * mini-exceptions.c (mono_handle_exception): Call
9442         mono_debugger_handle_exception() to tell the debugger about
9443         catch/finally clauses.
9444
9445 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
9446
9447         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
9448
9449         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
9450         #68447.
9451
9452 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
9453
9454         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
9455         methods as their native size, fixed bug #57543, #57545.
9456         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
9457         This saves a temporary register and mullw call down into 1 (minor perf
9458         increase for cases like sum = sum * 5;  This use to translate into:
9459             li r11,5
9460             mullw r28,r28,r11
9461         It now translates to
9462             mulli r28,r28,5
9463
9464 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
9465
9466         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
9467         #68388.
9468
9469 2004-10-11  Martin Baulig  <martin@ximian.com>
9470
9471         * mini.c (mono_method_to_ir): If we're a generic method, get the
9472         MonoGenericContainer from our MonoMethodNormal and create a
9473         MonoGenericContext from it.
9474
9475 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
9476
9477         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
9478
9479         * basic-long.cs: Add test for checked i8->i2 cast.
9480
9481 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9482
9483         * inssel-ppc.brg: added a couple of speedup rules.
9484
9485 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
9486
9487         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
9488         to speed up rebuilds.
9489
9490 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9491
9492         * mini-s390.c: Minor fix to OP_OR_IMM.
9493
9494 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
9495
9496         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
9497         better. Fixes appdomain-unload.exe on sparc.
9498
9499 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
9500
9501         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
9502         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
9503         see bug 67324.
9504
9505 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
9506
9507         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
9508
9509 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
9510
9511         * mini.c: Always generate a field read/write wrapper for members
9512         of the class MarshalByRefObject since the actual instance could
9513         be a CBO.
9514
9515 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
9516
9517         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
9518
9519 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
9520
9521         * driver.c mini.h trace.c: Move the setting of the main assembly into
9522         a separate function called mono_trace_set_assembly () and call it after
9523         actually loading the main assembly. Fixes #66872.
9524
9525 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
9526
9527         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
9528         using the code manager.
9529
9530 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
9531
9532         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
9533
9534 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
9535
9536         * cpu-amd64.md: Fix bug in previous patch.
9537         
9538         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
9539         #66650.
9540
9541 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
9542
9543         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
9544         mini-exceptions.c: updates for changed stack walk interface.
9545
9546 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
9547
9548         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
9549
9550 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
9551
9552         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
9553
9554 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
9555
9556         * driver.c (mini_regression_list): Do not call mono_assembly_close 
9557         since assemblies can't be unloaded.
9558         
9559 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
9560
9561         * cpu-amd64.md: Fix more instruction lengths.
9562
9563         * cpu-amd64.md: Fix lengths of some instructions.
9564
9565 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
9566
9567         * inssel.brg: Make the array ldelema check aot friendly.
9568
9569 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
9570
9571         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
9572
9573         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
9574
9575 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
9576
9577         * mini-x86.c: Fix build.
9578
9579         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
9580         mono_type_get_underlying_type () helper function to simplify code.
9581         
9582 2004-09-09  Martin Baulig  <martin@ximian.com>
9583
9584         * mini-amd64.c: Don't access `type->data.klass' directly, call
9585         mono_class_from_mono_type() instead since the type may be a
9586         generic instance.
9587
9588 2004-09-09  Martin Baulig  <martin@ximian.com>
9589
9590         * mini-amd64.c (get_call_info): Fix support for generic instances.
9591         (add_valuetype): Use mono_class_from_mono_type() to get the class
9592         since we can be a generic instance.
9593
9594 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
9595
9596         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
9597
9598 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
9599
9600         * liveness.c: reset spill costs on each scan: bug 62107
9601
9602 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
9603
9604         * exceptions-sparc.c (mono_arch_find_jit_info): remove
9605         unnecessary line that doesn't compile
9606
9607 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
9608
9609         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
9610         trampolines, make them call an error function so people can fix their
9611         code.
9612
9613 2004-09-06  Martin Baulig  <martin@ximian.com>
9614
9615         * mini.c (mono_method_to_ir): When initializing locals, handle a
9616         generic instances like a valuetype if it's a valuetype and like a
9617         class if it's a class.
9618
9619 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
9620
9621         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
9622         stack. Fixes #64674.
9623
9624         * exceptions.cs: Add test for unwinding of call arguments.
9625
9626 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
9627
9628         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
9629         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
9630         set the carry/borrow flag). The sparc and s390 implementations
9631         can now use optimized versions (and simplify the code). ppc bugfixes.
9632
9633 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
9634
9635         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
9636
9637 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
9638
9639         * inssel-amd64.brg: Remove leftover 32 bit rule.
9640
9641         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
9642
9643 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
9644
9645         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
9646         mono_arch_find_jit_info functions into a new function. Fix a memory
9647         leak.
9648
9649         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
9650         refactored code.
9651         
9652 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
9653
9654         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
9655         as well.
9656         
9657         * exceptions.cs: Add array size tests.
9658
9659         * mini.c: Allocate a separate icall wrapper for each arity of 
9660         mono_array_new_va. Fixes #59509.
9661
9662         * exceptions.cs: Add testcase for 64578.
9663
9664         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
9665
9666         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
9667         
9668 2004-09-02  Martin Baulig  <martin@ximian.com>
9669
9670         * mini.c (mono_method_to_ir): When initializing the locals, call
9671         handle_initobj() on the generic instance itself, not its
9672         underlying type.
9673
9674 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
9675
9676         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
9677         MonoJitInfo for dynamic methods.
9678
9679         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
9680
9681         * mini.c: Add support for freeing JIT data for dynamic methods.
9682         
9683 2004-09-01  Martin Baulig  <martin@ximian.com>
9684
9685         * mini-x86.c (is_regsize_var): Added support for generic
9686         instances.
9687         (mono_arch_emit_prolog): Make this compile again, use
9688         `x86_push_imm_template (code)'.
9689
9690 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
9691
9692         * mini-x86.c: make all push_imm instructions that get
9693         patched always emit the long form
9694
9695 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
9696
9697         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
9698         in a per-domain hash.
9699
9700         * mini-amd64.c (merge_argument_class_from_type): Handle generic
9701         types.
9702
9703 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
9704
9705         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
9706         work.
9707         
9708         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
9709         work.
9710
9711         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
9712         Beginnings of SSE2 support.
9713
9714         * exceptions.cs: Add more tests for checked int<->uint casts.
9715
9716 2004-08-28  Martin Baulig  <martin@ximian.com>
9717
9718         * mini-x86.c (mono_arch_instrument_epilog): Added support for
9719         generic instances.
9720
9721         * mini.c
9722         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
9723         Handle generic instances recursively.
9724
9725 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
9726
9727         * iltests.il: test for conv.u8 on a constant
9728
9729 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
9730
9731         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
9732         LCONV_x4 (shrun_32 (membase)).
9733
9734 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
9735
9736         * inssel-x86.brg: c&p rules for push/setret of long
9737
9738 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
9739
9740         * inssel-x86.brg: c&p rules for compare (base, regvar) and
9741         compare (regvar, base)
9742
9743         * inssel-x86.brg: more burg love
9744
9745         * inssel.brg: more cleanup
9746
9747         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
9748
9749 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
9750
9751         * basic-long.cs, basic-calls.cs: new tests for optimization.
9752
9753 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
9754
9755         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
9756         patch.
9757
9758 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
9759
9760         * mini-amd64.c (read_tls_offset_from_method): Add another case.
9761         
9762 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
9763
9764         * inssel.brg (mini_emit_memcpy): use 
9765         NO_UNALIGNED_ACCESS to disable memcpy optimization
9766
9767 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
9768
9769         * mini-amd64.c: Handle generic types in various places.
9770
9771         * mini.c (mono_method_to_ir): Handle generic types in init locals.
9772
9773 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
9774
9775         * mini.c (handle_box): Fix warning.
9776
9777         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
9778
9779         * mini-amd64.h: Enable the emit_state optimization.
9780
9781         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
9782
9783         * mini-amd64.c: Add some new 64 bit peephole opts.
9784
9785         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
9786
9787         * cpu-amd64.md: sreg1 of div instructions must be %rax.
9788
9789         * mini-amd64.c: Register allocator fixes.
9790
9791         * mini.c: Add an optimization to emit_state to avoid allocation of new
9792         registers on some platforms.
9793
9794 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
9795
9796         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
9797
9798         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
9799         allocation. Fixes #63085.
9800
9801         * basic-long.cs: Add new regression test.
9802
9803         * mini-amd64.c: Register allocator improvements.
9804
9805 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
9806
9807         * mini-amd64.c (read_tls_offset_from_method): Add another code
9808         sequence.
9809
9810         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
9811         instruction sequence for nullifying class init trampolines.
9812
9813         * objects.cs: Add new regalloc test.
9814
9815         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
9816
9817 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
9818
9819         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
9820         
9821         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
9822         arguments.
9823
9824         * driver.c: Fix profiling after TLS changes.
9825         
9826         * driver.c (mono_main): Set mono_stats.enabled if needed.
9827
9828         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
9829         CEE_BOX.
9830
9831 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
9832
9833         * mini-x86.c: use a 1 op rather than a 2 op tls access
9834         instruction -> faster.
9835
9836 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
9837
9838         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
9839         x86 backend.
9840
9841 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
9842
9843         * exceptions-sparc.c (throw_exception): fix typo
9844
9845 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
9846
9847         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
9848         set tree->dreg correctly with tls. Allow any
9849         register to be used.
9850
9851         * mini-x86.c (read_tls_offset_from_method): add new code
9852         generation pattern seen with GCC.
9853
9854
9855 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
9856
9857         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
9858         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
9859         exceptions-sparc.c: fix some performance issues in exception
9860         handling and setting of the stack trace for exceptions that were
9861         already thrown.
9862
9863 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
9864
9865         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
9866         x86 backend.
9867         
9868         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
9869         registers.
9870
9871 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
9872
9873         This patch inlines tls access, when possible.
9874         
9875         * mini.h: new arch functions for TLS intrinsics.
9876         All platforms updated with a stub.
9877
9878         * mini.c: use the new intrinsics
9879
9880         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
9881         arch specific intrinsic for tls variables
9882
9883 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
9884
9885         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
9886         under windows.
9887
9888 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9889
9890         * mini.c: thread local allocation
9891
9892 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
9893
9894         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
9895
9896         * Makefile.am: Link against the static version of libmonogc.
9897         
9898         * Makefile.am: Link the static versions of the convenience libraries
9899         into the mono executable.
9900
9901         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
9902
9903 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
9904
9905         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
9906         on integer overflow.
9907
9908         * mini-amd64.c: Reorganize function call code.
9909
9910         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
9911
9912 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
9913
9914         * inssel-x86.brg: use xor eax,eax.
9915         
9916         * basic.cs: new tests
9917
9918 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
9919
9920         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
9921         in exception throwing code.
9922         
9923 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
9924
9925         * inssel-x86.brg: use xor esi,esi.
9926
9927 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
9928
9929         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
9930         can trace methods compiled during mini_init () too.
9931
9932         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
9933         CEE_CONV_U4.
9934
9935 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
9936
9937         * Makefile.am: static link on x86 (r=zoltan)
9938
9939 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
9940
9941         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
9942         code since it causes some programs to fail.
9943
9944 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
9945
9946         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
9947
9948 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
9949
9950         * mini.c: ovfops_op_map - add STACK_OBJ case for
9951         CONV_I 
9952         * basic.cs: add test_0_pin_string as test
9953         case for above.
9954
9955 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
9956
9957         * Makefile.am: build C# if srcdir != builddir
9958
9959 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
9960
9961         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
9962         fall-through blocks.
9963
9964 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9965
9966         * driver.c: enable loop by default again and include abcrem in -O=all.
9967
9968 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
9969
9970         * iltests.il: Add some localloc tests.
9971
9972         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
9973
9974         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
9975         Fixes #62574.
9976
9977         * inssel-amd64.brg: Add some optimizations.
9978
9979         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
9980         for gcc-3.4.
9981
9982         * Makefile.am: Statically link mono against libmono on AMD64.
9983         
9984         * mini-amd64.c inssel-amd64.brg: Optimizations.
9985
9986 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
9987
9988         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
9989
9990         * tramp-amd64.c: Patch calling code in trampolines.
9991
9992 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
9993
9994         * mini-amd64.c: pinvoke struct passing fixes.
9995
9996 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
9997
9998         * mini-sparc.c: redo change, make mono_arch_cpu_init call
9999         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
10000
10001 2004-08-05  Duncan Mak  <duncan@ximian.com>
10002
10003         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
10004         CEE_LDELEM_ANY.
10005
10006 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
10007
10008         * mini-amd64.c (emit_move_return_value): Move return value for normal
10009         calls too.
10010
10011 2004-08-05  Martin Baulig  <martin@ximian.com>
10012
10013         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
10014         `type->type'; just modify `type' itself when dealing with enums
10015         and generic instances.
10016         (check_call_signature): Make `simple_type' a `MonoType *'.
10017
10018 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
10019
10020         * mini.c: Use OP_PADD to add offsets to addresses.
10021
10022         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
10023
10024 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
10025
10026         * mini-sparc.c (mono_arch_emit_epilog): fix check
10027         for folding last op into restore instruction
10028
10029 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
10030
10031         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
10032         helper methods using the code manager.
10033         
10034         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
10035
10036         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
10037
10038 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
10039         
10040         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
10041           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
10042
10043         * mini-s390.c: fix tail processing
10044
10045 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
10046
10047         * mini-ppc.c: mul.ovf.un exception name fix.
10048
10049 2004-08-03  Martin Baulig  <martin@ximian.com>
10050
10051         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
10052         instances; before jumping to `handle_enum', also modify `ptype'.
10053
10054 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
10055
10056         * cpu-sparc.md: fcall maximal length too small.
10057
10058 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
10059
10060         * mini-amd64.c mini.h: Add initial support for passing/returning 
10061         structures to/from pinvoked methods.
10062
10063 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
10064
10065         * mini-ppc.c: reg allocator fix.
10066
10067 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
10068
10069         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
10070
10071         * inssel.brg: Optimize memset on 64 bit machines.
10072
10073         * mini-amd64.c: Fix some vararg cases.
10074
10075 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
10076
10077         * mini-s390.c: Corrected macro in emit_float_to_int
10078
10079         * s390-abi.cs: Tests to exercise the s390 ABI
10080
10081 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
10082
10083         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
10084         caller saved regs.
10085
10086         * basic.cs: Add a test for add.ovf.un.
10087
10088 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
10089
10090         * mini-sparc.c: add case for OP_IDIV_UN
10091
10092 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
10093
10094         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
10095         
10096         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
10097
10098 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
10099
10100         * basic.cs: regression tests.
10101
10102         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
10103         regressions.
10104
10105 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
10106
10107         * basic.cs: Add a new test.
10108
10109         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
10110         and AOT. Various fixes and optimizations.
10111
10112         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
10113
10114 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
10115
10116         * mini-ppc.c: make sure temp regs are not used for global reg
10117         allocation.
10118
10119 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
10120
10121         * cpu-sparc.md: conv_i8 fix for 64bits
10122
10123         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
10124
10125 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
10126         
10127         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
10128         add opcode for cmp BYTE PTR [eax], imm.
10129
10130         * inssel.brg: Make memcpy and memset takes bases.
10131
10132 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
10133
10134         * *-amd64.*: More AMD64 work.
10135         
10136 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
10137
10138         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
10139         add a compare-not-equal opcode.
10140         
10141 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
10142
10143         * mini.c: Use mono_init_from_assembly instead of mono_init.
10144         
10145 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
10146
10147         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
10148
10149         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
10150
10151         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
10152
10153         * inssel.brg: 64 bit fixes.
10154
10155         * mini.h (MonoCallInst): Add some AMD64 specific data.
10156
10157         * mini.h: Add some OP_P opcodes.
10158
10159 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
10160
10161         * basic.cs: tests for 61797 and 61740
10162
10163 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
10164
10165         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
10166         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
10167
10168 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
10169
10170         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
10171
10172         * *-amd64*.*: Ongoing AMD64 work.
10173
10174 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
10175
10176         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
10177
10178         * *-amd64*: Ongoing AMD64 work.
10179
10180         * mini-arch.h: Add AMD64 support.
10181
10182         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
10183
10184         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
10185
10186         * mini-ops.h: Add new opcodes.
10187
10188         * Makefile.am: Add AMD64 support.
10189
10190         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
10191         rules into the inssel-long*.brg files.
10192
10193         * *-amd64.*: Add beginnings of AMD64 backend.
10194
10195 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
10196
10197         * mini.c (print_dfn): commenting out the code that prints
10198         the cil. With -O=deadce, this makes -v -v crash.
10199         
10200         * cpu-pentium.md: make checkthis have a length of 2
10201
10202 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
10203
10204         * mini-sparc.h: fix implementations of __builtin
10205         functions for Sun compiler for V9.
10206
10207 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
10208
10209         * mini.c: use the new stelem.ref wrapper
10210         * exceptions.cs, arrays.cs: new stelem.ref tests
10211
10212 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
10213
10214         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
10215         new XSP should work with these changes).
10216
10217 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
10218         
10219         * inssel-{long32,x86,}.brg: trivial optimizations.
10220         
10221 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
10222
10223         * mini.c: load value when emitting box operation in
10224         constrained calls.
10225
10226 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
10227
10228         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
10229         is one byte shorter than cmp DWORD PTR [eax], 0.
10230
10231 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
10232
10233         * inssel-ppc.brg: arguments on the stack are always
10234         relative to the stack pointer (spotted by Neale Ferguson).
10235
10236 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10237
10238         * exceptions-x86.c: delay appending the method name to the trace until
10239         after mono_jit_info_table_find is called, as this gets the real
10240         MonoMethod.
10241
10242 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
10243
10244         * aot.c: register roots
10245
10246 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
10247
10248         * aot.c : I could just use PLATFORM_WIN32 flag.
10249
10250 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
10251
10252         * aot.c : Reverting the previous fix. This time it broke linux build.
10253
10254 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
10255
10256         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
10257
10258 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
10259
10260         * mini.c (handle_stack_args): Remove some more debugging code.
10261         
10262         * mini.c (handle_stack_args): Remove debug output left in by mistake.
10263
10264         * driver.c mini.h aot.c: Allow additional options to be specified with
10265         --aot and pass them to mono_compile_assembly.
10266
10267         * aot.c: Add experimental code to AOT compile all loaded assemblies
10268         on demand and save the code into a cache in the filesystem.
10269
10270         * aot.c: Add support for more wrapper methods.
10271         
10272         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
10273         58863.
10274
10275         * cpu-*.md: Remove removed opcodes.
10276
10277         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
10278         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
10279         related icalls to marshal.c.
10280
10281 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
10282
10283         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
10284
10285         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
10286
10287         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
10288
10289 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
10290         * liveness.c: If liveness is recomputated we need to reset the information
10291         for each variable. This way, if the liveness range has been narrowed
10292         by optimizations that happened after the last computation, we can return
10293         a smaller range.
10294         
10295         For example, if you have
10296         
10297         {
10298                 int i = 0;
10299                 
10300                 // Tons of code that does not affect i
10301                 
10302                 i = foo ();
10303                 ...
10304         }
10305         
10306         i = 0 is dead code and will be removed by SSA. However, when
10307         linear scan gets to the code, i will still appear to be live
10308         throughout the entire block. This prevents good register allocation.
10309
10310 2004-07-06  Martin Baulig  <martin@ximian.com>
10311
10312         * debug-mini.c (mono_debug_init_method): Allow
10313         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
10314         (mono_debug_add_icall_wrapper): New method.
10315
10316         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
10317
10318 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
10319
10320         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
10321         optimization.
10322
10323 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
10324
10325         * aot.c (mono_aot_load_method): Fix loading of debug info.
10326
10327 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
10328
10329         * aot.c: Add logging support.
10330
10331 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
10332
10333         * mini.h: Add prototype for mono_print_method_from_ip.
10334
10335         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
10336
10337         * inssel.brg: 64 bit fixes.
10338
10339         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
10340         inssel-long32.brg.
10341
10342         * Makefile.am: Add SPARC64 support.
10343
10344 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
10345
10346         * aot.c: Fix alignment problems on 32 bit platforms.
10347
10348 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
10349
10350         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
10351         SPARC64.
10352
10353         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
10354         problems.
10355
10356         * mini.h: Bump AOT file version. Some 64 bit fixes.
10357
10358 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
10359
10360         * inssel-sparc.brg: Add new rule to avoid register moves.
10361
10362         * inssel.brg: Add ldind_to_load_membase helper function.
10363
10364 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
10365
10366         * mini.c: OffsetToStringData intrinsic.
10367         
10368 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
10369
10370         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
10371
10372         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
10373         regression tests.
10374
10375         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
10376 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
10377
10378         * mini.c: reinstated mono_compile_get_interface_var()
10379         on x86, too, since the change breaks the Gtk# build there as well.
10380
10381 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10382
10383         * driver.c: remove loop from the default optimizations: it seems to
10384         interact badly with some of the other options (see bug #60613).
10385
10386 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
10387
10388         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
10389         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
10390
10391 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
10392
10393         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
10394         vararg-using methods.
10395
10396 2004-06-21  Martin Baulig  <martin@ximian.com>
10397
10398         * mini/mini-exceptions.c
10399         (mono_handle_exception): Added `gpointer original_ip' argument.
10400         After calling mono_unhandled_exception(), call
10401         mono_debugger_unhandled_exception() and if that returns true,
10402         restore the context and return.
10403
10404 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
10405
10406         * mini-ppc.c: prefer the use of relative branches so
10407         they won't need to be patched in aot code (patch from Patrick Beard).
10408
10409 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
10410
10411         * aot.c: patch from Patrick Beard to make the output assembly
10412         more correct for the MacOSX assembler. Small tweak to
10413         generate sane images on Linux/PPC, too.
10414
10415 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10416
10417         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
10418         case until bug #59509 is fixed (shows up in #60332).
10419
10420 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
10421
10422         * mini.c: make sure the needed wrappers are compiled, too, with
10423         precomp.
10424
10425 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
10426
10427         * driver.c: remove NPTL reference in --version output.
10428
10429 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10430
10431         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
10432         generate valid assembly for the Mach-O assembler.
10433
10434 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
10435
10436         * driver.c: don't include abcrem in the all optimization specifier
10437         since it slows down jit compilation too much for now.
10438
10439 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
10440
10441         * mini.c: use BIGMUL only if both operands have the same signage.
10442         * iltests.il: Test for bug 60056. (errors related to signage in
10443         BIGMUL).
10444
10445         r=lupus.
10446
10447 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
10448
10449         * mini.c, aot.c: memory leak fixes.
10450
10451 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
10452
10453         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
10454
10455 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
10456
10457         * Makefile.am: remove the -static hack completely, it links in
10458         statically glib as well.
10459
10460 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
10461
10462         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
10463         * exceptions.cs: make it compile with new mcs/csc.
10464
10465 2004-06-03 Massimiliano Mantione <massi@ximian.com>
10466         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
10467         and added relevant test case.
10468
10469 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
10470
10471         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
10472         regressions in gtk-sharp.
10473
10474 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
10475
10476         * exceptions.cs: New regression tests.
10477
10478         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
10479
10480 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
10481
10482         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
10483
10484 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
10485
10486         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
10487
10488         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
10489
10490 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
10491
10492         * mini.c (mono_jit_runtime_invoke): Init class in this
10493         method instead of trusting mono_jit_compile_method to
10494         do the work (because wrappers can be in object class)
10495
10496 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
10497
10498         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
10499
10500         * basic-long.cs: New regression test.
10501
10502 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
10503
10504         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
10505         and div/rem checks.
10506
10507 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
10508
10509         * Makefile.am: fix miguel's change to build mono statically against
10510         libmono (track build dependencies).
10511
10512 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
10513
10514         * cfold.c: Some glib versions do not have G_MININT32.
10515
10516 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
10517
10518         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
10519         with precision of tan, atan, sin and cos, and implemented related
10520         regressions tests (fixes bug 54467, but one new problem appeared and
10521         is not fixed yet).
10522
10523 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
10524
10525         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
10526
10527         * exceptions.cs: Add test for constant folding && division by zero.
10528
10529         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
10530         since driver.c is in libmono too, so the optimization was useless.
10531
10532         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
10533         variable to driver.c so the compiler can emit more efficient code to
10534         access them.
10535
10536 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10537
10538         * Makefile.am: don't distribute generated inssel.[ch] files.
10539
10540 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
10541
10542         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
10543         into the default appdomain. Fixes #58707.
10544
10545         * jit-icalls.c: Remove the broken approximation for truncl, doing
10546         no conversion is better.
10547
10548         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
10549         Fixes #58863.
10550
10551 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
10552
10553         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
10554         of the mcrxr instruction which is not available on some processors
10555         even if it's documented to be. Implement add and sub overflow correctly
10556         (still not complete for long unsigned). Speed up icalls a bit.
10557
10558 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
10559
10560         * mini.c (mono_jit_compile_method_with_opt): Make sure that
10561         we run .cctor in the current domain instead of target_domain.
10562         
10563         Fixes bug #58558, .cctor not being called in -O=shared.
10564
10565 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
10566
10567         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
10568
10569 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
10570
10571         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
10572         which can be done with an imm8, do it that way.
10573         (mono_arch_output_basic_block): ditto for a jmp
10574         (mono_arch_emit_prolog): Computate maximum offset of a label.
10575
10576 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
10577
10578         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
10579         now tries to allocate prefered physical reg's for virtual
10580         regs. This reduces the number of emited spills/loads with
10581         20-30% on our core assemblies.
10582
10583 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
10584
10585         * jit-icalls.c: truncl() is not needed and trunc() is
10586         the correct thing to do anyway (bug #58287).
10587
10588 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
10589
10590         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
10591         if available.
10592
10593 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
10594
10595         * driver.c: enable loop optimizations by default.
10596
10597 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
10598
10599         * mini-x86.c: fix calc of max loop size when aligning loops start.
10600
10601 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
10602
10603         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
10604         the stack.
10605
10606 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
10607
10608         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
10609         should set carry.
10610
10611         * basic-long.cs: Add tests for add/subtract of immediates with carry.
10612
10613         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
10614         
10615         * mini.c (inline_method): Allways inline some wrappers even if the cost
10616         is too large. Fixes #58785.
10617
10618         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
10619         
10620 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
10621
10622         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
10623         (crichton@gimp.org). Beginning of support for sparc/linux.
10624
10625         * mini-sparc.c: Optimize retrieval of LMF address.
10626
10627 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
10628
10629         * exceptions-ppc.c:  handle alloca in methods with clauses.
10630
10631 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
10632
10633         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
10634
10635 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
10636
10637         * mini.c: Delegate most of the abort signal work to 
10638           mono_thread_request_interruption, which also handles Stop and Suspend
10639           states.
10640
10641 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
10642
10643         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
10644         supports the save/restore lmf opcodes.
10645
10646 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
10647
10648         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
10649         by gcc-3.4 as well.
10650
10651         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
10652
10653 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
10654
10655         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
10656         methods which contain array accesses.
10657
10658         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
10659         boundaries. Fixes #58537.
10660
10661         * iltests.il: Add regression test for #58537.
10662
10663 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
10664
10665         * mini-x86.c (mono_arch_local_regalloc): Last part of
10666         fix for bug #58633 (releasing register to early).
10667
10668 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
10669
10670         * basic-long.cs: Add new regression test.
10671
10672 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
10673
10674         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
10675         register too early on the chain.
10676
10677 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
10678
10679         * mini.c (create_helper_signature): Use a helper function to reduce
10680         the code which needs to be written. Also set the calling convention of
10681         icalls on windows. Fixes #57840.
10682
10683 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
10684
10685         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
10686         exceptions-ppc.c: added helper function to get the instruction address
10687         from a signal handler context.
10688
10689 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
10690
10691         * helpers.c: use g_get_tmp_dir. Invokes happyness 
10692         from gonzalo.
10693
10694 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
10695
10696         * helpers.c: Add new env variable to pass args to objdump.
10697         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
10698
10699 2004-05-17  Radek Doulik  <rodo@ximian.com>
10700
10701         * Makefile.am (common_sources): added abcremoval.h so it get
10702         disted and daily mono packages on go-mono.com will build again
10703
10704 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
10705
10706         * abcremoval.c: Fixed coding style, added copyright header.
10707
10708         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
10709
10710         * mini.h: Added prototype for abc removal main function.
10711
10712         * build_relations_propagation_table.pl: Added copyright header.
10713
10714 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
10715
10716         * basic-long.cs: reg test for complex ceq_long bug.
10717
10718 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
10719
10720         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
10721         reg in long and clob case (bug #58343). Fixed/added comments.
10722
10723 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
10724
10725         * mini.c (mono_jit_runtime_invoke): Follow new convention
10726         of calling the invoke method with an function pointer.
10727
10728 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
10729
10730         * ChangeLog: Fix author of memory leak patch.
10731
10732 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
10733
10734         * Makefile.am: fix make dist as well...
10735
10736
10737 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
10738
10739         * cfold.c: Made so that conversions from pointer to int4 are no-ops
10740         on archs where pointers are 4 bytes long.
10741
10742         * Makefile.am: Added abcremoval.c source file.
10743
10744         * abcremoval.c: Added abcremoval.c.
10745
10746         * abcremoval.h: Added abcremoval.h.
10747
10748         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
10749
10750         * inssel.brg: Enabled bounds check removal.
10751
10752         * mini.c: Added support for abcrem optimization.
10753
10754         * mini.h: Added abcrem optimization label.
10755
10756         * driver.c: Added support for abcrem optimization.
10757
10758         * propagated_relations_table.def: Added propagated_relations_table.def.
10759
10760 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
10761
10762         * mini.c, cfold.c: fix style.
10763
10764 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
10765
10766         * mini.c: handle issue with the low-level implementation of
10767         some long opcodes (bug #54209).
10768
10769 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
10770
10771         * basic.cs: test for my new cmov stuff.
10772
10773 2004-05-13      Patrik Torstensson
10774
10775         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
10776         opt and added peephole documentation.
10777
10778 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
10779
10780         * tramp-ppc.c: rewrote the generic trampoline code.
10781
10782 2004-05-11      Patrik Torstensson
10783
10784         * mini-x86.c: optimize long shl/shr asm code (one less branch)
10785
10786 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
10787
10788         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
10789
10790         * mini.h mini.c dominators.c: Applied patch from Derek Woo
10791         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
10792
10793         * mini.c: Add new icalls for AsAny marshalling.
10794
10795 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
10796
10797         * tramp-ppc.c, mini-ppc.c: more cleanups.
10798
10799 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10800
10801         * mini.c: no warnings.
10802
10803 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10804
10805         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
10806
10807 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
10808
10809         * mini.c: In the thread abort signal handler, if the thread is in the
10810         process of being stoped, don't throw the Abort exception, just stop the
10811         thread.
10812
10813 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
10814
10815         * tramp-ppc.c: removed old code.
10816
10817 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10818
10819         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
10820         do some simple speed optimizations on ppc.
10821
10822 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
10823
10824         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
10825         and large offsets in load/store.
10826
10827 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
10828
10829         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
10830         it causes regressions.
10831
10832 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
10833
10834         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
10835         support.
10836
10837 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
10838
10839         * jit-icalls.c: remove warnings.
10840         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
10841         speedups for unsafe code.
10842
10843 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
10844
10845         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
10846
10847 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
10848
10849         * basic-calls.cs: Add new regression test.
10850
10851         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
10852         more portable.
10853
10854         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
10855
10856         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
10857         is no longer used.
10858
10859 2004-05-06      Patrik Torstensson
10860
10861         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
10862         long reg allocation in any reg (not only eax:edx) and implemented 
10863         long shl/shr ops in asm instead of helpers.
10864
10865 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
10866
10867         * mini-sparc.h: Fix warnings.
10868
10869         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
10870         stack.
10871
10872         * mini-exceptions.c (mono_handle_exception): Call the filter in a
10873         separate statement for clarity.
10874
10875         * mini-sparc.c: Update status.
10876
10877 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
10878
10879         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
10880         here.
10881
10882 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
10883
10884         * inssel-ppc.brg: another small pre-release workaround:
10885         we don't do overflow detection for long_sub_un.
10886
10887 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
10888
10889         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
10890         (also works around a weird ppc bug: 57957).
10891
10892 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
10893
10894         * tramp-ppc.c: trampoline fixes.
10895
10896 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
10897
10898         * mini-ppc.c: fixed typos.
10899
10900 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
10901
10902         * mini-ppc.c, exceptions-ppc.c: more code saves registers
10903         at the top of the stack. Fixed typos. Use a frame registers
10904         for all the methods with exception clauses.
10905
10906 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
10907
10908         * exceptions-ppc.c: restore fp registers.
10909
10910 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
10911
10912         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
10913         order from the stack top (moved the stack room to save the
10914         return value for trace after the param area). Fixed corruption
10915         in restoring registers on unwind.
10916
10917 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
10918
10919         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
10920
10921 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
10922
10923         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
10924         and prolog/epilog for methods that use it. Allow
10925         enough param area room for varargs methods. Fix miguel's
10926         breakage in exception handling.
10927
10928 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
10929
10930         * Makefile.am: run genmdesc only on current arch.
10931
10932 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10933
10934         * exceptions-x86.c:
10935         * mini-x86.h: fix the build on windows.
10936
10937 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
10938
10939         * 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.
10940
10941         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
10942
10943         * mini-exceptions.c: New file.
10944         
10945         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
10946         Move some parts of the x86 exception handling code to an 
10947         arch-independent file so it can be shared with other ports.
10948
10949 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
10950
10951         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
10952
10953 2004-04-26  David Waite  <mass@akuma.org>
10954
10955         * driver.c: remove comma from end of enumeration declaration
10956
10957 2004-04-26  Jackson Harper  <jackson@ximian.com>
10958
10959         * driver.c: parse config file before loading first assembly. This
10960         allows the user gac to be enabled/disabled. 
10961         
10962 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
10963
10964         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
10965         simpler mechanism: we do not care what is encoded initially
10966         (branch absolute or relative), we care about the code and its
10967         target.  I kept the old code for reference for now.
10968
10969         The new code tries first to determine if the jump is anywhere in
10970         the -/+32 absolute meg range, if it succeeds, it encodes using the
10971         absolute branch;  If not, it tried to find something in the
10972         relative range, if not, it uses the handle_thunk code. 
10973
10974 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
10975
10976         * exceptions-ppc.c: use the correct ip register on macosx.
10977
10978 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
10979
10980         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
10981
10982 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
10983
10984         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
10985         Raise exception on integer divide by zero by hand since the hw
10986         doesn't support it. Handle NaNs in FP compares.
10987
10988 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
10989
10990         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
10991         code reducing duplication between the platforms and enabled
10992         signal exception handling (on linux for now).
10993
10994 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
10995
10996         * exceptions-ppc.c: more macosx support.
10997
10998 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
10999
11000         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
11001
11002 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
11003
11004         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
11005
11006 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
11007
11008         * iltests.il: more tests.
11009
11010 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
11011
11012         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
11013         vars as well.
11014
11015 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
11016
11017         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
11018
11019 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
11020
11021         * liveness.c: Mark variables as volatile in all basic blocks reachable
11022         from exception clauses.
11023
11024 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
11025
11026         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
11027         inlining.
11028
11029 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
11030
11031         * iltests.il, basic.cs: more tests for regalloc.
11032
11033 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
11034
11035         * iltests.il: Some tests for register allocation modifications
11036         I have locally.
11037
11038 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
11039
11040         * exceptions.cs: Add regression test for bug #56782.
11041
11042         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
11043         original stack trace if an exception is rethrown. Fixes #56782. Oh,
11044         the beauty of fixing the same thing in 5 different files...
11045
11046 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
11047
11048         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
11049         methods.
11050
11051 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
11052
11053         * mini.c: Add support for STRWLPARRAY marshalling convention.
11054
11055 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
11056
11057         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
11058         to init the context to setup the regs pointer).
11059
11060 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
11061
11062         * exceptions-ppc.c: more exceptions work.
11063
11064 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
11065
11066         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
11067         not allowed.
11068
11069 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
11070
11071         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
11072         can use the memory directly.
11073
11074         * cpu-pentium.md: Update documentation from a post from Zoltan. 
11075
11076         add x86_add_membase, x86_sub_membase, x86_mul_membase
11077
11078 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
11079
11080         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
11081         GENERAL_REGS they were also hardcoded for all PPC ports.
11082
11083         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
11084
11085         Remove hard-coded limit for floating point registers, use
11086         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
11087
11088         Notice that in MacOS X calling conventions you can fit a lot more
11089         floating point values in registers, so I should update the PInvoke
11090         test to excercise the passing of floating point values on the
11091         stack (currently broken).
11092         
11093 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
11094
11095         * tramp-ppc.c (create_trampoline_code): Added
11096         JUMP_TRAMPOLINE_SIZE. 
11097         (ppc_magic_trampoline): Follow the pattern from
11098         x86_magic_trampoline: if code is set to zero, return. 
11099         (create_trampoline_code): Always pass MonoMethod to the jump
11100         trampoline, before it was passing a null.
11101         (mono_arch_create_jump_trampoline): Implement the jump stub, could
11102         share the code with mono_arch_create_jit_trampoline. 
11103
11104         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
11105         implemented.
11106         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
11107         implemented.  
11108
11109         * cpu-g4.md: Added length for jmp instruction, the worst case
11110         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
11111         for save_lmf).
11112
11113 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
11114
11115         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
11116
11117 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
11118
11119         * mini.c: Only set bblock->real_offset when adding a new bblock, and
11120         before each IL instruction.
11121
11122         * mini.c (CEE_BOX): Fix warnings.
11123
11124 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11125
11126         * mini.c: removed a few unused vars and extra whitespace.
11127
11128 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
11129
11130         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
11131         checks.
11132         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
11133         index.
11134         (OP_GETCHR): use the above
11135         (CEE_LDELEMA): use the above.
11136
11137         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
11138         version of the generic impl.
11139         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
11140         (CEE_LDELEMA): use the above.
11141
11142 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
11143
11144         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
11145         Fixes #56317.
11146
11147         * iltests.il: Added new regression test for #56317.
11148
11149 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
11150
11151         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
11152         under NetBSD. Fixes #56450.
11153
11154         * liveness.c (update_gen_kill_set): Fix previous patch.
11155
11156 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11157
11158         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
11159
11160 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
11161
11162         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
11163         ldsfld and ldsflda.
11164
11165         * inssel-sparc.brg: Add more optimizations.
11166
11167         * mini-sparc.c: Replace multiply/divide with shifts if possible.
11168
11169 2004-04-01  Martin Baulig  <martin@ximian.com>
11170
11171         * mini.c (handle_box): New static function; moved the
11172         implementation of CEE_BOX here.
11173         (mono_method_to_ir): Added `constrained_call' variable.
11174         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
11175         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
11176         mono_method_get_constrained() to get the method.
11177
11178 2004-04-01  Martin Baulig  <martin@ximian.com>
11179
11180         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
11181         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
11182         (mono_method_to_ir): We don't need these macros anymore since
11183         mono_class_get_full() already takes care of it. 
11184
11185 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11186
11187         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
11188         use @function (as doesn't accept #function here) and check the return
11189         value of system and stop if fails.
11190
11191 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11192
11193         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
11194
11195 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
11196
11197         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
11198
11199         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
11200
11201         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
11202         #56223.
11203
11204         * basic-long.cs: Add test for negation of Int64.MinValue.
11205
11206 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
11207
11208         * mini-sparc.c: Update status.
11209
11210         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
11211
11212         * exceptions-sparc.c: Fix return value in filters.
11213
11214         * inssel-sparc.brg: Fix register allocation in some rules.
11215
11216 2004-03-28  Martin Baulig  <martin@ximian.com>
11217
11218         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
11219         if neccessary.  
11220
11221 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
11222
11223         * mini-x86.c (mono_arch_patch_code): Fix warnings.
11224         
11225         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
11226         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
11227         remove unused conv_u4 opcode.
11228
11229         * mini-x86.c: Remove valgrind workaround since it slows down things
11230         even when mono is not run under valgrind.
11231
11232 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
11233
11234         * mini-sparc.c: Update status.
11235
11236         * inssel-sparc.brg: Add some optimizations.
11237
11238         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
11239         future delay slot filling. Add support for varargs, tail calls and JMP.
11240
11241         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
11242         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
11243
11244         * inssel.brg: Fix register allocation in OP_ARGLIST.
11245
11246         * inssel.brg: Fix warnings.
11247
11248 2004-03-25  Martin Baulig  <martin@ximian.com>
11249
11250         * mini.c (inflate_generic_field): Removed.
11251         (mini_get_method): Removed, use mono_get_method_full(),
11252         (mini_get_class): Removed, use mono_class_get_full().
11253         (mono_method_to_ir): Pass our generic context to
11254         mono_field_from_token().        
11255
11256 2004-03-25  Martin Baulig  <martin@ximian.com>
11257
11258         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
11259         of a `MonoMethod *'.
11260         (mini_get_method): Take a `MonoGenericContext *' instead
11261         of a `MonoMethod *'.
11262         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
11263         a new local variable called `generic_context' which holds the
11264         current `MonoGenericContext *'; use it to lookup things.
11265
11266 2004-03-24  Martin Baulig  <martin@ximian.com>
11267
11268         * mini.c (mini_get_class): New static method; if we're inside a
11269         generic instance, inflate the class if neccessary.
11270         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
11271
11272 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
11273
11274         * iltests.il: New regression test for #55976.
11275
11276         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
11277         #55976.
11278
11279 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
11280
11281         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
11282         output.
11283
11284 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
11285
11286         * liveness.c: Consider SSA stores as well as loads when making vars
11287         volatile.
11288
11289         * exceptions.cs: New regression tests for register allocation.
11290         
11291 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
11292
11293         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
11294         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
11295           domain lock only to protect puntual access to data structures.
11296           Added access lock for sighash, jit_icall_hash_name, 
11297           jit_icall_hash_addr and domain->code_mp.
11298
11299 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
11300
11301         * driver.c: Print SIGSEGV handling method.
11302
11303         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
11304
11305         * mini.c (setup_jit_tls_data): Handle case when this is called
11306         multiple times for a thread.
11307
11308         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
11309         is different from fbxx_un. Fixes #54303. Also use constants instead of
11310         magic numbers in a lot of places.
11311
11312 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
11313
11314         * exceptions.cs: Fix cctor test when --regression is used.
11315
11316 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
11317
11318         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
11319         for Linux/ppc.
11320
11321 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
11322
11323         * inssel-ppc.brg: fixed register assignments for some rules.
11324
11325 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
11326
11327         * exceptions.cs: Add test for exceptions in static constructors.
11328
11329         * mini.c (mono_jit_compile_method_with_out): Move the calling of
11330         static constructors outside the domain lock. Fixes #55720.
11331
11332 2004-03-17  Martin Baulig  <martin@ximian.com>
11333
11334         * mini.c (get_generic_field_inst): Removed, this'll never happen.
11335         (inflate_generic_field): Take the `MonoMethod *' instead of the
11336         `MonoClass *' and added support for generic method.
11337         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
11338         have a `field->parent->gen_params', only inflate the field if it's
11339         an open constructed type.
11340
11341 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
11342
11343         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
11344         exception object instead of the preconstructed ones.
11345
11346 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11347
11348         * mini.c: reverted changed to sigsegv_signal_handler commited
11349         accidentally in the previous patch.
11350
11351 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11352
11353         * mini.c:
11354         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
11355         running --aot with an old assembly.
11356
11357 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
11358
11359         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
11360         point values.
11361
11362         * mini-sparc.c: Add support for v9 branches with prediction.
11363
11364 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
11365
11366         * mini.c (mini_init): #warning is GNUC only
11367
11368         * mini-sparc.h: implement __builtin_frame_address
11369         and __builtin_return_address for Sun C compiler
11370
11371 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
11372
11373         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
11374
11375 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
11376
11377         * basic-calls.cs: Add test for unaligned byref long argument passing.
11378
11379         * mini-ops.h: Add sparcv9 compare and branch instructions.
11380
11381         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
11382         v9 instructions if we have a v9 cpu.
11383
11384         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
11385         registers for global allocation.
11386
11387         * exceptions-sparc.c: Fixes.
11388         
11389 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
11390
11391         * liveness.c (mono_analyze_liveness): Optimized version.
11392
11393         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
11394
11395         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
11396         sparc work.
11397
11398         * basic-float.cs basic-calls.cs: New regression tests.
11399
11400 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
11401
11402         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
11403         sigaltstack implementation.
11404
11405         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
11406         
11407         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
11408         stuff if SIGSEGV_ON_ALTSTACK is not defined.
11409
11410 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
11411
11412         * mini.c: Fix warnings.
11413         
11414         * mini.c (mono_resolve_patch_target): New function which contains the
11415         arch independent part of the patching process.
11416
11417         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
11418         patching code to a separate function.
11419
11420 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
11421
11422         * mini.c (add_signal_handler): ifdef out on Windows
11423
11424 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
11425
11426         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
11427         cpu-sparc.md: Add exception handling support + other fixes.
11428
11429         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
11430         typed GC detection in --version.
11431
11432         * basic.cs exceptions.cs: New regression tests.
11433
11434         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
11435         the arch specific code can store data during a compilation.
11436
11437         * mini-ops.h: Add OP_SETFRET.
11438
11439         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
11440         function, register a separate icall for each arity, so the icalls can
11441         get a wrapper.
11442         
11443         * mini.c (mono_print_tree): Print negative offsets in a more readable
11444         form.
11445         
11446         * mini.c: Make signal handling work on sparc.
11447         
11448         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
11449
11450         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
11451
11452         * jit-icalls.c: Emulate truncl by aintl on solaris.
11453
11454         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
11455
11456 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
11457
11458         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
11459
11460 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
11461
11462         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
11463         a MarshalByRef type, inline a method that performs the check, taking into
11464         account that the object can be a proxy. Also implemented tow new opcodes:
11465         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
11466         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
11467         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
11468
11469 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
11470
11471         * mini-ppc.c: if a relative branch displacement is too big
11472         but it points to and area reachable with an absolute branch, 
11473         avoid the thunks.
11474
11475 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
11476
11477         * mini.c: optimize small copies in cpblk.
11478
11479 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
11480
11481         * basic-calls.cs basic-float.cs: New regression tests.
11482
11483         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
11484         negative offsets from %fp. Implement localloc. Fix local register 
11485         allocation. Fix the case when the this argument needs to be saved to
11486         the stack. Implement some missing opcodes.
11487
11488 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
11489
11490         * mini.c (mini_method_compile): Reenable global regalloc in methods
11491         with exception handlers.
11492
11493         * linear-scan.c (mono_varlist_sort): Fix warning.
11494
11495         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
11496
11497         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
11498         regalloc costs.
11499
11500         * liveness.c: Make all variables uses in exception clauses volatile, to
11501         prevent them from being allocated to registers. Fixes #42136.
11502
11503 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
11504
11505         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
11506         causes regressions.
11507
11508         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
11509         argument to mono_arch_regalloc_cost.
11510
11511         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
11512         precisely.
11513
11514 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
11515
11516         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
11517         Make the cost of allocating a variable to a register arch dependent.
11518
11519         * basic-calls.cs: Fix compilation of tests.
11520         
11521         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
11522         helper function to cut back on the number of #ifdefs needed.
11523
11524         * mini-ppc.c: Fix compilation.
11525
11526         * basic-calls.cs: New regression tests.
11527
11528         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
11529
11530         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
11531         of l0 since that is callee saved.
11532
11533         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
11534         to virtual calls.
11535
11536         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
11537         of delay instruction.
11538
11539         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
11540
11541         * mini.h (MonoCallInst): Add 'virtual' flag.
11542
11543         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
11544
11545 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
11546
11547         * *.cs: New regression tests.
11548
11549         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
11550         work.
11551
11552         * mini.c (mono_runtime_install_handlers): Fix build.
11553
11554         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
11555         'signal_stack_size' members.
11556
11557         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
11558         alternate signal stack.
11559
11560         * exceptions-x86.c: Add stack overflow handling.
11561
11562         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
11563         functions to arch independent code.
11564
11565         * mini.c (mono_print_tree): Print more detailed info for load_membase
11566         opcodes.
11567         
11568 2004-02-23  Martin Baulig  <martin@ximian.com>
11569
11570         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
11571
11572 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
11573
11574         * mini-x86.c: fixed reg allocation for div/rem.
11575
11576 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
11577
11578         * driver.c (mono_main): Report some configuratio options on --version.
11579
11580 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
11581
11582         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
11583         low in the address space. Correctly flush memory in thunks where we
11584         output native code.
11585
11586 2004-02-20  Martin Baulig  <martin@ximian.com>
11587
11588         * mini.c (mini_get_method): New static method; inflate all generic
11589         methods and methods in open generic instances.
11590         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
11591         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
11592
11593 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
11594
11595         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
11596
11597         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
11598
11599 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
11600
11601         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
11602
11603         * mini-sparc.c (flushi mono_arch_output_basic_block): make
11604         it compile using Sun's compiler.
11605
11606 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
11607
11608         * 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.
11609
11610         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
11611
11612 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
11613
11614         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
11615         code.
11616         * mini-ppc.c: handle calls outside of the allowed range with thunks
11617         allocated using the code manager.
11618         * tramp-ppc.c: use the code manager to hold generated native code.
11619         Fixed the magic trampoline to just patch vtable entries.
11620
11621 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
11622
11623         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
11624         independent file.
11625
11626 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
11627
11628         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
11629         PPC.
11630
11631         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
11632         if we have a working __thread implementation.
11633
11634         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
11635         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
11636
11637 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
11638
11639         * mini-x86.c: Fix compilation under gcc 2.
11640         
11641 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
11642
11643         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
11644         contains a call to the wrapped function.
11645
11646         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
11647         OP_<CALL>_IMM opcodes, and use them under X86.
11648         
11649         * mini.c (mono_jit_find_compiled_method): Fix warning.
11650
11651         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
11652
11653         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
11654
11655         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
11656         functionality to mini.c.
11657
11658         * mini.c (mono_create_jump_trampoline): New function to create a jump
11659         trampoline. Return a compiled method instead of a trampoline if it
11660         exists. Add a cache for jump trampolines.
11661
11662         * mini.c (mono_jit_find_compiled_method): New function to return a
11663         compiled method if it exists.
11664
11665         * mini-x86.c: Call mono_create_jump_trampoline instead of 
11666         mono_arch_create_jit_trampoline.
11667
11668         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
11669         a jump trampoline. Fixes #52092.
11670         
11671 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
11672
11673         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
11674         which is not up-to-date. Add check_corlib_version () instead.
11675
11676         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
11677         have to call it.
11678         
11679         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
11680         since newer valgrind versions do not need it.
11681
11682         * mini.c (mono_jit_compile_method_with_opt): New helper function to
11683         compile a method with a given set of optimizations.
11684
11685         * mini.c: Compile icall wrappers on-demand instead of at startup.
11686
11687         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
11688         wrapper for an icall.
11689
11690 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
11691
11692         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
11693         #54063.
11694
11695         * iltests.il: Add test for non-empty stack before switch instruction.
11696
11697 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
11698
11699         * mini.c: Add support for new stringbuilder marshalling conventions.
11700
11701         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
11702
11703 2004-02-01  Martin Baulig  <martin@ximian.com>
11704
11705         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
11706         in `ginst->mtype_argv'.
11707
11708 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
11709
11710         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
11711         facilitate grepping.
11712
11713 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
11714
11715         * mini.c: fixed buglet in initobj generic implementation for references.
11716
11717 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
11718
11719         * Makefile.am: make the version script conditional.
11720         * jit-icalls.c: handle missing truncl().
11721
11722 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
11723
11724         * exceptions.cs: Add more tests for double->int conversion.
11725
11726         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
11727         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
11728
11729 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
11730
11731         * driver.c: make --verbose --version emit an error
11732         if the loaded corlib doesn't match the runtime version.
11733
11734 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
11735
11736         * mini-ppc.h: export ppc_patch().
11737         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
11738         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
11739         on par or better than on MacOSX.
11740
11741 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
11742
11743         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
11744         mono_lookup_pinvoke_call.
11745
11746         * mini-x86.c: Under windows, the default pinvoke calling convention is
11747         stdcall. Fixes #52834.
11748
11749         * mini.c (optimize_branches): Add an upper bound to the number of
11750         iterations to prevent infinite loops on strange loops. Fixes #53003.
11751
11752 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
11753
11754         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
11755         and ISINST. Fixes #52093.
11756
11757         * objects.cs (test_0_vector_array_cast): New tests.
11758         
11759 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
11760
11761         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
11762         checking in Array.Set ().
11763
11764         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
11765         #52590.
11766
11767         * object.cs (test_0_multi_array_cast): New regression test.
11768
11769 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
11770
11771         * exceptions-ppc.c: fix build on Linux/PPC.
11772
11773 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
11774
11775         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
11776         running under valgrind.
11777         (x86_magic_trampoline): Fix build bustage.
11778
11779         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
11780         negative values as well. This is needed for the encoding of the line number
11781         info, since sometimes the line numbers are not in increasing order.
11782
11783 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
11784
11785         * cpu-pentium.md (localloc): Increase the size of the localloc 
11786         instruction since it is a loop under Win32.
11787
11788         * debug-mini.c (record_line_number): Get rid of unneccesary memory
11789         allocation.
11790
11791 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
11792
11793         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
11794         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
11795         Max Horn (max@quendi.de). Fix file names in comments.
11796
11797 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
11798
11799         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
11800         avoid stack overflow.
11801         (replace_usage): Avoid uninitialized variable warnings.
11802
11803         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
11804         and taking the address of valuetype variables.
11805
11806 2004-01-03  Patrik Torstensson
11807
11808         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
11809         for other purposes than FP later on.
11810
11811 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
11812
11813         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
11814         of tail calls.
11815
11816 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
11817
11818         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
11819
11820 2003-12-30  Patrik Torstensson <p@rxc.se>
11821
11822         * mini-x86.h: Decreased number of availiable fp regs.
11823         Solves corner cases with FP spilling.
11824
11825 2003-12-23  Patrik Torstensson <p@rxc.se>
11826
11827         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
11828         for floating point stack tracking / spilling on x86. 
11829         Fixes bug #49012.
11830         
11831         * basic-float.cs: added float mul overflow test.
11832
11833 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
11834
11835         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
11836
11837 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
11838
11839         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
11840         supports for cond branches that overflow the immediate
11841         overflow offset. mcs can compile simple programs.
11842
11843 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
11844
11845         * exceptions-ppc.c: exception handling support wip:
11846         finally handlers get run on exception.
11847
11848 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
11849
11850         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
11851         profiling.
11852
11853 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
11854
11855         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
11856         initial support for stack walking and unwinding.
11857
11858 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
11859
11860         * driver.c (mono_main): Make corlib-out-of-sync message more 
11861         descriptive. Also remove verify_corlib call.
11862
11863 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
11864
11865         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
11866         not overlap with other call's arguments, too.
11867
11868 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
11869
11870         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
11871         move to arch-specific code the choice of arch-specific
11872         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
11873         * mini.c: ensure emulation calls will not interleave
11874         with other calls.
11875
11876 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
11877
11878         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
11879         the magic trampoline stack frame is dropped before executing
11880         the new method.
11881
11882 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
11883
11884         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
11885         and integer to fp conversions. Added support for overflowing
11886         arguments on the stack. Reserve a couple more registers as temps.
11887         Added support for aot compilation (as output still needs to be
11888         tweaked, though).
11889
11890 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
11891
11892         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
11893         Don't overwrite return register in some corner cases.
11894
11895 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
11896
11897         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
11898         static constructors when AOT compiling.
11899
11900         * driver.c (mono_main): Call mono_check_corlib_version.
11901
11902 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
11903
11904         * cpu-g4.md, basic.cs: fixed div target register.
11905
11906 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
11907
11908         * mini-ppc.c, basic.cs: shl_imm fix with test.
11909
11910 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
11911
11912         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
11913         structures by value. Misc fixes.
11914         * objects.cs: more tests.
11915
11916 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
11917
11918         * mini-ppc.c: lconv.ovf.i implemented.
11919
11920 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11921
11922         * mini.c:
11923         (mini_init): don't error out if someone already called g_thread_init.
11924
11925 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
11926
11927         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
11928         to be any type per the spec. Fix abnormal memory usage when
11929         the same object is repeatedly thrown.
11930
11931 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
11932
11933         * mini.c: check for overruns in IL code.
11934
11935 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
11936
11937         * TODO: Add/remove some todo entries.
11938
11939 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
11940
11941         * driver.c (mono_main): Call mono_verify_corlib.
11942
11943 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
11944
11945         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
11946         This has been moved to mini.c
11947         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
11948         type being casted is marshalbyref it could be a proxy, so instead of
11949         emitting the type check code, emit a call to a runtime method that will
11950         perform the check by calling CanCastTo if needed.
11951
11952 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
11953
11954         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
11955         methods with large stack frames under Win32.
11956
11957 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
11958
11959         * Makefile.am: Distribute regression tests.
11960
11961         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
11962         at the end instead of inserting each variable into the sorted list.
11963
11964         * linear-scan.c (mono_varlist_sort): New helper function.
11965         
11966 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
11967
11968         * mini.c: ensure arguments and locals are within bounds.
11969
11970 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
11971
11972         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
11973         related fixes.
11974
11975 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
11976
11977         * mini.c (mono_cprop_copy_values): Fix crash.
11978
11979         * aot.c: Set verbosity back to 0.
11980         
11981 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
11982
11983         * regalloc.c: complete memory leak fix by Laurent Morichetti
11984         (l_m@pacbell.net).
11985
11986 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
11987
11988         * driver.c (main_thread_handler): Revert the previous patch.
11989
11990         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
11991         under valgrind.
11992
11993         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
11994         memory from the memory pool.
11995
11996         * driver.c (main_thread_handler): Turn on all optimizations when
11997         --aot is used.
11998
11999         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
12000         an array for better performance.
12001
12002         * regalloc.c (mono_regstate_assign): Fix memory leak.
12003
12004         * debug-mini.c (mono_debug_serialize_debug_info): New function to
12005         serialize the debug info.
12006
12007         * debug-mini.c (mono_debug_add_aot_method): New function to load the
12008         debug info from the serialized representation.
12009
12010         * aot.c: Save debug info into the generated file and load it when 
12011         loading a method.
12012
12013         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
12014
12015 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
12016
12017         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
12018         More FP-related fixes.
12019
12020 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
12021
12022         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
12023         and register allocation buglet. Hello world now runs.
12024
12025 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
12026
12027         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
12028         * tramp-ppc.c: fixed class init trampoline.
12029         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
12030
12031 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
12032
12033         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
12034         mini.c: more ppc changes/fixes.
12035
12036 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
12037
12038         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
12039         Also optimize the case when the arguments are the same in the caller 
12040         and in the callee.
12041
12042         * iltests.il: Add tests for tail calls with valuetype arguments.
12043
12044 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
12045
12046         * mini-ppc.c: fixes for struct return type.
12047
12048 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
12049
12050         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
12051         mono_spillvar_offset() to arch-specific code.
12052
12053 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
12054
12055         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
12056
12057 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
12058
12059         * exceptions-x86.c: Fix stack space leaks.
12060         
12061         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
12062         registers from the lmf if the method has save_lmf set.
12063
12064 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
12065
12066         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
12067         of icall wrappers into InvokeInDomain, since these are now per-domain.
12068
12069 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
12070
12071         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
12072         make some opcode emulation and intrinsic ops enabled/disabled 
12073         according to the architecture. More fixes.
12074
12075 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
12076
12077         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
12078
12079 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
12080
12081         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
12082         arch-specific handling for 'this' and struct return type to
12083         arch-specific code.
12084
12085 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12086
12087         * aot.c: prevent divide by zero error when reporting (it happened with
12088         Accessibility.dll).
12089
12090 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
12091
12092         * mini.h (inst_switch): Remove unused macro.
12093
12094 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12095
12096         * aot.c:
12097         (load_aot_module): free 'info->methods' and 'info' properly. No more
12098         "free(): invalid pointer blah" messages when you have an old aot
12099         compiled assembly.
12100
12101 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
12102
12103         * jit-icalls.c, mini.c: Added support for context static fields.
12104
12105 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
12106
12107         * mini.c (mono_method_blittable): Methods which set LastError are not 
12108         blittable either. Fixes #51108.
12109         
12110 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
12111
12112         * mini.c: flush icache.
12113         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
12114
12115 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
12116
12117         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
12118
12119 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
12120
12121         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
12122         safe on IA32.
12123
12124         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
12125         vararg calls.
12126
12127         * inssel.brg (CEE_MKREFANY): Fix AOT case.
12128
12129 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
12130
12131         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
12132         instruction when the result is discarded.
12133
12134         * iltests.il (test_0_div_regalloc): New regression test.
12135
12136         * arrays.cs: Fix compilation error.
12137
12138 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
12139
12140         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
12141         float rules to inssel-x86.brg: sane architectures with FP registers
12142         don't need to implement these rules.
12143
12144 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
12145
12146         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
12147
12148 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
12149
12150         * mini.h, inssel-long32.brg: fixed endianess issues in int64
12151         implementation of 32 bit systems.
12152
12153 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
12154
12155         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
12156         (Jeroen Zwartepoorte).
12157
12158 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
12159
12160         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
12161         the caller and the callee matches.
12162         
12163         * mini.c (mono_method_to_ir): Add comment.
12164
12165         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
12166         signbit is missing on some platforms.
12167
12168 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
12169
12170         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
12171
12172         * mini.c (setup_jit_tls_data): Call the new function.
12173         
12174         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
12175
12176         * mini-x86.c: Add experimental support for fast access to the lmf
12177         structure under NPTL/Linux 2.6.x.
12178
12179 2003-11-06  Martin Baulig  <martin@ximian.com>
12180
12181         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
12182         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
12183         the debugger.
12184
12185 2003-11-02  Martin Baulig  <martin@ximian.com>
12186
12187         * mini.c (inflate_generic_field): New static method.
12188         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
12189         generic instance and the field is declared in a generic type, call
12190         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
12191
12192 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
12193
12194         * mini.h mini.c (mono_method_same_domain): New function to return
12195         whenever the caller and the callee are in the same domain.
12196
12197         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
12198
12199 2003-10-30  Martin Baulig  <martin@ximian.com>
12200
12201         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
12202         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
12203         method parameters.
12204         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
12205         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
12206
12207 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
12208
12209         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
12210         propagation.
12211
12212         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
12213         object here, so it is in the correct appdomain etc.
12214
12215 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
12216
12217         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
12218         already done.
12219         (mono_method_to_ir): Avoid freeing the type created returned from
12220         mono_type_create_from_typespec, since it is put into an internal cache
12221         by the function. Fixes pointer.exe.
12222
12223         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
12224         trampolines for icalls and pinvokes as well. Fixes #33569.
12225
12226 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
12227
12228         * mini.c: Update after appdomain changes.
12229
12230         * mini.c (mono_jit_compile_method_inner): Allways compile native
12231         method wrappers in the root domain, since there can only be one
12232         instance of them, whose address is stored in method->info.
12233
12234 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
12235
12236         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
12237         environment variable. Instead detect automatically whenever running
12238         under valgrind using the magic macro RUNNING_ON_VALGRIND from
12239         valgrind.h.
12240
12241 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
12242
12243         * trace.c, trace.h: New files that implement the new trace option
12244         parsing. 
12245
12246         * driver.c: Document new --trace options.
12247
12248         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
12249         mini-x86.c: Apply:
12250
12251         -       if (mono_jit_trace_calls)
12252         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
12253
12254         * mini.h: prototypes.
12255         
12256 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
12257
12258         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
12259
12260         * mini.c inssel.brg: Implement typedefbyref opcodes.
12261
12262         * mini.c (mono_jit_compile_method): Remove unused local variable.
12263
12264         * mini.c (mono_jit_compile_method_inner): Ditto.
12265         
12266 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
12267
12268         * tramp-x86.c (x86_class_init_trampoline): Fix build.
12269         
12270         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
12271
12272 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
12273
12274         * mini.c (mono_no_aot): Remove unused global variable.
12275
12276         * mini.c: Thread safety fixes.
12277
12278 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
12279
12280         * mini.c (mono_create_class_init_trampoline): Add a lock around
12281         class_init_hash_addr.
12282
12283         * arrays.cs (test_0_newarr_emulation): Add new regression test for
12284         #30073.
12285
12286         * mini.c: Decompose the NEWARR instruction before decomposing its
12287         arguments. Fixes #30073.
12288
12289 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
12290
12291         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
12292         convention.
12293
12294 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
12295
12296         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
12297
12298         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
12299
12300         * driver.c: Add support for compiling icall wrappers to --compile.
12301
12302 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
12303
12304         * inssel.brg: The empty value in class->interface_offsets is -1, not
12305         0. Fixes #49287.
12306
12307 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
12308
12309         * objects.cs: New test for 'is' operator on an array of interfaces.
12310
12311 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
12312
12313         * tramp-ppc.c: update trampoline code to support jumps
12314         and class initialization.
12315
12316 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
12317
12318         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
12319
12320         * inssel.brg (OP_UNBOXCAST): Fix #46027.
12321
12322         * inssel.brg (OP_UNBOX): Remove unused rule.
12323
12324         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
12325         region instead of one for each method. Fixes #47813.
12326
12327 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
12328
12329         * exceptions.cs (test_0_nested_finally): New regression test for
12330         nested exception handlers.
12331
12332         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
12333
12334         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
12335
12336         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
12337         inlining.
12338
12339         * mini.c (mono_method_check_inlining): Make the inlining limit 
12340         configurable by an environment variable.
12341         
12342         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
12343
12344         * mini.h: Bump AOT file version.
12345
12346         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
12347         token, store the image along with the token, since the token might not 
12348         refer to the same image as the method containing the relocation, 
12349         because of inlining.
12350
12351 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
12352
12353         * mini.c (mono_precompile_assemblies): New function to compile
12354         all methods in all loaded assemblies.
12355
12356         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
12357
12358         * regalloc.h regalloc.c (MonoRegState): Change the type of 
12359         iassign and fassign to int*, since they can contain large negative
12360         values if the register is spilled. Also added some comments. Fixes
12361         #45817.
12362
12363         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
12364         under Win32. Fixes #42964.
12365
12366 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
12367
12368         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
12369
12370         * aot.c: Added support for AOT compiling methods which contain calls
12371         to wrappers. Currently, only remoting-invoke-with-check wrappers are
12372         handled.
12373         
12374         * driver.c (compile_all_methods): Run the compilation in a thread
12375         managed by mono. Fixes #44023.
12376
12377         * mini.c (mono_codegen): Print full method name in verbose output.
12378
12379         * mini-x86.c (mono_arch_patch_code): Fix warning.
12380         
12381         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
12382         jumps, since the method we are jumping to might be domain-specific.
12383
12384         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
12385
12386 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
12387
12388         * inssel.brg: string chars are unsigned.
12389
12390 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
12391
12392         * TODO: New todo item.
12393
12394         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
12395         which calls mono_runtime_class_init and patches the call site to
12396         avoid further calls.
12397         (mono_arch_create_class_init_trampoline): New arch specific function 
12398         to create a class init trampoline.
12399         (create_trampoline_code): Generalized so it can create
12400         class init trampolines as well.
12401
12402         * mini.c (helper_sig_class_init_trampoline): New helper variable.
12403         (mono_create_class_init_trampoline): New function to create and cache
12404         class init trampolines.
12405         (mono_find_class_init_trampoline_by_addr): New function to lookup the
12406         vtable given the address of a class init trampoline. Used by the
12407         patching process.
12408         (mono_codegen): Generate a call to a trampoline instead of
12409         mono_runtime_class_init in LDSFLD[A].
12410         (mono_codegen): Add relocations for the new trampoline.
12411         
12412         * mini.h mini-x86.c aot.c: Added a new relocation type: 
12413         MONO_PATCH_INFO_CLASS_INIT.
12414
12415         * mini.h: Bump AOT version number.
12416
12417         * aot.c: Create a copy of the loaded code instead of using the original
12418         so methods which call each other will be close in memory, improving
12419         cache behaviour.
12420         
12421         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
12422         patch since it breaks the regression tests.
12423         
12424         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
12425         for the register saving instruction sequence since the 
12426         frame_state_for function in glibc 2.3.2 don't seem to detect it.
12427
12428 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
12429
12430         * TODO: Fix todo item && remove another.
12431
12432 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
12433
12434         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
12435         previous checkin.
12436
12437         * aot.c: Moved the check for MONO_LASTAOT into the initialization
12438         function of the module.
12439
12440         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
12441         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
12442         --no-aot command line option.
12443
12444 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
12445
12446         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
12447         by Bernie Solomon (bernard@ugsolutions.com).
12448
12449         * inssel.brg: Refactor the interface offset table related code into
12450         its separate functions and add support for the AOT case.
12451
12452 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
12453
12454         * aot.c (mono_aot_get_method_inner): Fix memory leak.
12455         
12456         * aot.c: Added mono_aot_verbose variable and made all debugging
12457         output depend on the value of this variable.
12458
12459         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
12460         method_label and info_label.
12461
12462         * mini.h mini-x86.c aot.c: Added a new relocation type 
12463         MONO_PATCH_INFO_IID for klass->interface_id.
12464
12465         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
12466         the MonoJitInfo structure.
12467
12468         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
12469         a non-root appdomain in shared mode.
12470
12471 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
12472
12473         * aot.c: make aot loader less verbose. Remove free of unused variable.
12474
12475 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
12476
12477         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
12478
12479         * .cvsignore: Added *.dll.
12480
12481         * mini.c (mono_print_tree_nl): New function callable while debugging.
12482
12483         * mini.c (mono_print_code): Export this.
12484
12485         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
12486         patched code.
12487
12488 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
12489
12490         * mini.h (MonoCompile): Added 'jit_info' field.
12491
12492         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
12493         the cfg structure, since it is needed by the AOT compiler.
12494
12495         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
12496
12497         * aot.c: A major rewrite. Changes include:
12498         - save exception tables for methods which have them.
12499         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
12500         to g_module_symbol.
12501         - reworked the file format so it is now much smaller and needs
12502         fewer relocation entries.
12503         
12504 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
12505
12506         * aot.c (load_aot_module): Fix build bustage on platforms without
12507         Boehm GC.
12508
12509 2003-09-04  Martin Baulig  <martin@ximian.com>
12510
12511         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
12512
12513 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
12514
12515         * TODO: Some new optimization ideas.
12516
12517         * aot.c: Move AOT module loading logic here from mono_assembly_open.
12518
12519         * aot.c: Save the optimization flags used to compile the code into
12520         the AOT module.
12521
12522         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
12523         support emitting domain specific code.
12524         
12525         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
12526         no longer domain neutral. It can be made domain neutral by compiling 
12527         with --optimize=shared.
12528
12529         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
12530         between appdomains.
12531
12532         * driver.c mini.h mini.c: New --no-aot debugging option which disables
12533         loading of AOT code.
12534
12535         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
12536         
12537         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
12538         if there is no domain neutrality information.
12539
12540 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
12541
12542         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
12543         format version into the generated library.
12544
12545         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
12546         callee method into the caller since one of them could be shared.
12547
12548         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
12549         system exceptions from AOT code now works.
12550
12551         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
12552         method if it is domain neutral and the callee is not.
12553
12554         * graph.c (cfg_emit_one_loop_level): Fix warning.
12555
12556 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
12557
12558         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
12559         last checkin.
12560
12561 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
12562
12563         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
12564         is needed  by code which is executed before mono_runtime_init ().
12565         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
12566         
12567         * mini.c (mono_thread_abort): Fix warning.
12568         (mono_jit_compile_method): Call static constructor in the AOT case too.
12569
12570         * aot.c (mono_compile_assembly): Fix warning.
12571
12572 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12573
12574         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
12575
12576 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
12577
12578         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
12579
12580         * cpu-pentium.md: Fix the length of call opcodes so they include the
12581         ESP restoring instruction. Fixes #47968.
12582
12583 2003-08-28  Martin Baulig  <martin@ximian.com>
12584
12585         * mini-x86.c (mono_arch_call_opcode): Added support for
12586         MONO_TYPE_GENERICINST.
12587
12588         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
12589
12590 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
12591
12592         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
12593         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
12594
12595         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
12596         metadata_section.
12597
12598 2003-08-26  Martin Baulig  <martin@ximian.com>
12599
12600         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
12601         when reporting an error, set this to the actual error location.
12602         (mono_method_to_ir): Report the correct error location if
12603         get_basic_blocks() returned an error.
12604
12605 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
12606
12607         * mini.c (mono_type_blittable): OBJECT is not blittable.
12608         (mono_method_blittable): Methods which have marshalling descriptors
12609         are not blittable either. Fixes #47842.
12610
12611 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
12612
12613         * driver.c mini.c: Use an environment variable instead of a global 
12614         variable. Also fix the build.
12615
12616         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
12617         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
12618         reporting this. 
12619
12620         * driver.c mini.c: Added --with-valgrind option to turn off some
12621         code which prevents mono from running under valgrind.
12622
12623         * mini.c (mono_emit_call_args): Fixed warning.
12624
12625         * mini.c (mono_emulate_opcode): Fixed warning.
12626
12627 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
12628
12629         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
12630         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
12631         regalloc.c, regalloc.h: specify available registers in arch-specific
12632         code and support floats in the regallocator (patch by Laurent Morichetti 
12633         <l_m@pacbell.net>)
12634
12635 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
12636
12637         * mini.c: mono_thread_current() can be called only after
12638         mono_runtime_init(): rearrange code to not call it early on.
12639
12640 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
12641
12642         * mini.c: allocate jump tables in the code mempools.
12643
12644 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
12645
12646         * mini.c, mini.h: make sure per-thread data allocated by the jit is
12647         freed.
12648
12649 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
12650
12651         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
12652         12 to 16.  This fixes bug #47453.
12653
12654
12655 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
12656
12657         * mini-ppc.c: fixed indexed load and unsigned compares.
12658
12659 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
12660
12661         * mini.c: reenabled installation of handler for
12662           thread abort signal.
12663
12664 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
12665
12666         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
12667         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
12668         until it's fixed and actually useful.
12669
12670 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
12671
12672         * inssel-long32.brg: couple more opcodes implemented.
12673
12674 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
12675         
12676         * mini-sparc.c: Even more opcodes implemeted.
12677
12678 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
12679
12680         * mini-sparc.c: More opcodes implemented.
12681
12682 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
12683
12684         * mini-sparc.c: More opcodes implemented.
12685
12686 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
12687
12688         * inssel-sparc.brg: Add some needed rules.  Direct
12689         copy from PPC.
12690         * Makefile.am: Use inssel-sparc.brg
12691         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
12692         an assert happy for now.
12693
12694 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
12695
12696         * mini-sparc.c: Fixed compile errors.
12697         * exceptions-sparc.c: Same.  We now produce a mono binary 
12698         on sparc-linux.  Yea.
12699
12700 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
12701
12702         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
12703         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
12704         They compile, but do not work.
12705
12706 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
12707
12708         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
12709         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
12710         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
12711         (ct@gentoo.org).
12712
12713 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
12714
12715         * mini.c: more opcodes implemented and better support for generics.
12716
12717 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
12718
12719         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
12720         * mini.c, mini.h: first cut at generics support: some new instructions 
12721         added and changed the behaviour of some of the existing ones.
12722
12723 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
12724
12725         * mini.c: Removed definition of metadata_shared mutex here.
12726
12727 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini-x86.c: make vararg calls work for instance methods.
12730
12731 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
12732
12733         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
12734         returns the arguments in a separte list, now.
12735
12736 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
12737
12738         * aot.c, mini.c: updates for array type representation changes.
12739
12740 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
12741
12742         * mini.c: register function to perform jit shutdown.
12743
12744 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
12745
12746         * mini.c: use a faster allocator if possible.
12747
12748 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
12749
12750         * aot.c: some cleanups and portability changes.
12751
12752 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
12753
12754         * mini.c: use faster allocation for CEE_BOX if possible.
12755
12756 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
12757
12758         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
12759         Moved inlined mempcy code to its own function so that is can be
12760         reused. Added an inline memset function as well (optimized initobj).
12761         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
12762
12763 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
12764
12765         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
12766
12767 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
12768
12769         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
12770         arch code can setup the cpu for CLR execution, if needed.
12771         We use it on x86 to set the precision of FP operations.
12772
12773 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
12774
12775         * mini.c: disable some optimizations if we can guess they'll cost too
12776         much for a given method.
12777
12778 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
12779
12780         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
12781         
12782 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
12783         * mini.h mini.c mini-x86.c: Added instruction level coverage 
12784         info collection support.
12785
12786 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
12787
12788         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
12789         is now implemented in the profiling API. Get rid of a couple of
12790         unnecessary global variables.
12791
12792 2003-06-15  Nick Drochak <ndrochak@gol.com>
12793
12794         * basic-long.cs: tests for negative values for bigmul, and unsigned.
12795         * cpu-g4.md: add op_bigmul and op_bigmul_un
12796         * cpu_pentium.md: add op_bigmul_un
12797         * inssel-long32.brg: add rule for unsigned bigmul
12798         * mini-ops.h: define OP_BIGMUL_UN
12799         * mini-x86.c: THE BUG: handle (un)signed properly
12800         * mini.c: choose unsigned opcode if needed.
12801         This set of patches fixes bug #44291
12802
12803 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
12804
12805         * mini.c (optimize_branches): improved to handle all kinds of
12806         conditional branches.
12807
12808 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
12809
12810         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
12811         don't raise exceptions.
12812
12813 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
12814
12815         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
12816         to arch-specific files.
12817
12818 2003-06-09  Martin Baulig  <martin@ximian.com>
12819
12820         * Makefile.am (libs): Added $(LIBGC_LIBS).
12821
12822 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
12823
12824         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
12825         and OP_ATAN (fixes bug#44293).
12826
12827 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
12828
12829         * Makefile.am, mini-x86.c: rename cpu description array to
12830         pentium_desc, since some compilers define the 'pentium' preprocessor
12831         symbol.
12832
12833 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
12834
12835         * mini.c (mini_select_instructions): add explicit branch if the
12836         following block is not the false target of a conditional branch -
12837         we need this with any optimization that reorder or remove bblocks
12838
12839         * mini.c (optimize_branches): bug fixes
12840
12841 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
12842
12843         * mini.c (mono_method_to_ir): inline static readonly fields
12844
12845         * ssa.c (fold_tree): start cfold support for long (very simple
12846         cases only)
12847
12848         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
12849
12850 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
12851
12852         * inssel.brg: fixed memcpy (bug #44219).
12853
12854 2003-06-05  Dick Porter  <dick@ximian.com>
12855
12856         * driver.c: Set the glib log levels to not abort if g_message
12857         recurses.
12858
12859         g_set_prgname() has to happen before mini_init() so that the
12860         process handle gets the info.
12861         
12862 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
12863
12864         * driver.c: add intrins to the default optimizations to get wider
12865         exposure.
12866
12867 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
12868
12869         * mini.h: some large basic blocks will overflow a 16-bit
12870         integers for symbolic registers.
12871
12872 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
12873
12874         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
12875         (mono_arch_output_basic_block): fix bug 43499 
12876
12877 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini.c: kill duplicated definition of mono_debug_format.
12880
12881 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
12882
12883         * mini-x86.c, arrays.cs: fixed register allocation bug.
12884
12885 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
12886
12887         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
12888
12889         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
12890
12891 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
12892
12893         * mini.c:
12894         (print_method_from_ip): also print source location information if
12895         available.
12896
12897 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
12898
12899         * mini.c (mono_find_block_region): bug fix in region code
12900         (mini_method_compile): enable removing unreachable code again, but
12901         only in methods without exception clauses.
12902
12903 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
12904
12905         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
12906         Implemented arglist opcode and handling of TypedReference type.
12907         Fixed x86 call convention when a structure is returned.
12908         Minimal support for calling static vararg methods.
12909
12910 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
12911
12912         * mini.c (mini_method_compile):  always remove unreachable code,
12913         because the code in them may be inconsistent  (access to dead
12914         variables for example).
12915
12916 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
12917
12918         * driver.c, debug-mini.c: warning fixes.
12919
12920 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
12921
12922         * Makefile.am, jit.h, mini.h: install header for embedding mono.
12923
12924 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
12925
12926         * mini.c: thread-static fields are registered in mono_class_vtable(),
12927         so ensure the function is called before checking for them.
12928
12929 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
12930
12931         * mini.c (optimize_branches): fix for bug 43586
12932
12933         * jit-icalls.c (mono_llmult_ovf): added an additional check for
12934         overflow (fixes Bug #43639)
12935
12936 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
12937
12938         * mini.c, objects.cs: allow the use of stobj for primitive types.
12939
12940 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
12941
12942         * mini.c: be less strict about argument checking until we support
12943         running the verifier.
12944
12945 2003-05-27  Nick Drochak <ndrochak@gol.com>
12946
12947         * basic-long.cs: tests for (ulong)int * (ulong)int also
12948         * mini.c: use the same trick for (ulong)int * (ulong)int
12949
12950 2003-05-27  Nick Drochak <ndrochak@gol.com>
12951
12952         * basic-long.cs: add regression test for (long)int * (long)int
12953         * cpu-pentium.md: add op_bigmul specification
12954         * inssel-long32.brg: add OP_BIGMUL rule
12955         * mini-ops.h: add OP_BIGMUL
12956         * mini-x86.c: register allocator: handle case where src1 needs to be
12957         in EAX.
12958         * mini.c: substitute special BIGMUL opcode in the tree for 
12959         (long)int * (long)int
12960
12961 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
12962
12963         * jit-icalls.c: call the type ctor on field access if needed.
12964
12965 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
12966
12967         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
12968         to a method (including results of ldelema, bug#43207).
12969
12970 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
12971
12972         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
12973         colors to show exception handler blocks.
12974
12975         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
12976         (fix for pinvoke7.cs).
12977
12978 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
12979
12980         * mini.h, mini.c: ensure correct initialization order for types that
12981         require it. Prepare for lazy compilation of jit icall wrappers.
12982         Provide a name for opcode emulation to reduce unneeded mallocing.
12983
12984 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
12985
12986         * mini-x86.c: better register restoring code and profiling
12987         support for tail calls.
12988
12989 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
12990
12991         * mini.h, driver.c: prepare for leaf methods optimization.
12992
12993 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
12994
12995         * mini.c: get targets of branches before converting a method.
12996
12997 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
12998
12999         * mini.c (optimize_branches): added some experimental code (disbaled) 
13000
13001 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
13002
13003         * mini.c (optimize_branches): fix branch to branch optimization 
13004
13005         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
13006
13007         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
13008
13009         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
13010
13011         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
13012         if needed.
13013
13014 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
13015
13016         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
13017         enable use of interface variables again.
13018
13019         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
13020         I1 to registers because there is no simply way to sign extend 8bit
13021         quantities in caller saved registers on x86.
13022
13023         * inssel-float.brg: set costs of some rules to 2 so
13024         that monobure always select the arch. specific ones if supplied,
13025         regardless of the order we pass the files to monoburg.
13026
13027 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
13028
13029         * mini.c, mini-x86.c: since the magic trampoline for jumps
13030         can't patch the code directly, we do it as soon as the
13031         method gets compiled.
13032
13033 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
13034
13035         * mini-x86.c, mini.h: introduce a new patching method
13036         to support CEE_JMP and tail calls.
13037         * mini.c: obey tail.call. Don't precompile methods target
13038         of CEE_JMP.
13039         * tramp-x86.c: new trampoline code to handle methods
13040         reached through a jump.
13041
13042 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
13043
13044         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
13045         bit values to registers
13046
13047 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
13048
13049         * mini.c (mono_compile_get_interface_var): share interface
13050         variables if possible.
13051
13052 2003-05-16  Martin Baulig  <martin@ximian.com>
13053
13054         * debug-mini.c (mono_init_debugger): New function to initialize
13055         the debugger.  This is not in the debugger since it needs to
13056         access some of mini's internals.
13057
13058 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
13059
13060         * mini.c (mono_method_to_ir): inlining fixes/cleanups
13061
13062 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
13063
13064         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
13065         for value type handling.
13066
13067 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
13068
13069         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
13070         (mono_method_check_inlining): enable inlining of all kinds of wrappers
13071
13072 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
13073
13074         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
13075           the constructor through a proxy.
13076
13077 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
13078
13079         * jit-icalls.c, inssel.brg: fixes to array element address
13080         calculations.
13081
13082 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
13083
13084         * mini-x86.c (is_regsize_var): allocate pointer to registers
13085
13086 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
13087
13088         * driver.c: fixed typo, added intrins to the set of optimizations
13089         tested with regressions.
13090
13091 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
13092
13093         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
13094         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
13095         test case.
13096
13097 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
13098
13099         * inssel.brg: remove some common pop instructions without side effects
13100
13101 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
13102
13103         * inssel-x86.brg: fixed thinko in int to double conversions.
13104
13105 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
13106
13107         * mini.c, jit-icalls.c: added runtime thread-static variable support.
13108
13109 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
13110
13111         * inssel-long32.brg: two more missing instructions.
13112
13113 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
13114
13115         * mini.c (mono_emit_call_args): set the cil_code for all arguments
13116         if not already set.
13117
13118 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
13119
13120         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
13121         correctly.
13122
13123         * basic-float.cs: Added tests for negative zero.
13124
13125 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
13126
13127         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
13128         a couple of missing operations for long casts, with test cases.
13129
13130 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
13131
13132         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
13133
13134 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
13135
13136         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
13137         code size estimation.
13138
13139 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
13140
13141         * mini.c (mono_jit_create_remoting_trampoline): make it work with
13142         abstract methods (fix bug 42542)
13143
13144         * aot.c: add ability to handle array types
13145         
13146 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
13147
13148         * mini.c: Call the _specific versions of the object allocation
13149         functions if possible.
13150
13151 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
13152
13153         * driver.c: call setlocale ().
13154
13155 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
13156
13157         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
13158         windows build.
13159
13160 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
13161
13162         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
13163
13164         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
13165         wrappers (fix bug 42122)
13166
13167 2003-05-04  Martin Baulig  <martin@ximian.com>
13168
13169         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
13170
13171         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
13172         s/mini_set_defaults/mono_set_defaults/g.
13173
13174 2003-05-04  Martin Baulig  <martin@ximian.com>
13175
13176         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
13177
13178 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
13179
13180         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
13181         (reported by Don Roberts).
13182
13183 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
13184
13185         * mini.c: temporarily work around two bugs for this release.
13186
13187 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
13188
13189         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
13190         that contains -export-dynamic and it makes using the ld script
13191         useless.
13192         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
13193
13194 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
13195
13196         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
13197         specific cpu.
13198
13199 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
13200
13201         * mini.c: make sure leave calls all the needed finally blocks,
13202         even when the target jumps out of multiple exception clauses.
13203
13204 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
13205
13206         * ldscript, Makefile.am: add linker script to reduce the number of
13207         exported symbols (should also fix the issues with libwine defining
13208         some of the same symbols in io-layer).
13209
13210 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
13211
13212         * driver.c (mini_main): Avoid assertion when no file name is given on 
13213         the command line.
13214
13215 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
13216
13217         * driver.c: added --version/-V command line option.
13218         Added the inline optimization in the regression tests.
13219
13220 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
13221
13222         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
13223         to the type in the method signature (fixes bug#42134).
13224
13225 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
13226
13227         * mini.c: when inlining, check this is not null only when needed (bug #42135).
13228
13229 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
13230
13231         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
13232
13233 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
13234
13235         * driver.c: fixed bug #42100.
13236
13237 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
13238
13239         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
13240
13241 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
13242
13243         * mini.c: moved most of the code required to do inlining to its own
13244         function so it can be reused. Inline also ctors if appropriate.
13245
13246 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
13247
13248         * Makefile.am: Link with -export-dynamic so shared libs loaded by
13249         the runtime can call mono API functions.
13250
13251 2003-04-27  Martin Baulig  <martin@ximian.com>
13252
13253         * debug-mini.c (mono_debug_init_method): Added
13254         `guint32 breakpoint_id' argument; if the method has a breakpoint,
13255         send a notification to the debugger.
13256
13257         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
13258         running in the Mono Debugger, just pass the breakpoint number to
13259         mono_debug_init_method().
13260
13261         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
13262
13263 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini.c: allow some more unsafe compares.
13266
13267 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
13268
13269         * mini-x86.c, Makefile.am: make distcheck works (partially from
13270         a patch by Richard Lee <r.h.lee@attbi.com>).
13271         * regset.c, regset.h: removed, they are unused.
13272
13273 2003-04-25  Dick Porter  <dick@ximian.com>
13274
13275         * driver.c: Usage reports the name as 'mono' not 'mini'
13276         * exceptions-x86.c: Build and run on freebsd
13277
13278 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
13279
13280         * Makefile.am: install the program with the 'mono' name and
13281         the library as libmono instead of mini and libmini.
13282
13283 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
13284
13285         * driver.c: provide the APIs for the embedding interface of the old jit.
13286
13287 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
13288
13289         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
13290
13291 2003-04-23  Martin Baulig  <martin@ximian.com>
13292
13293         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
13294
13295         * driver.c: Added `--debug' command line argument to enable
13296         debugging support.
13297
13298 2003-04-23  Martin Baulig  <martin@ximian.com>
13299
13300         * debug.[ch]: Removed.  The code is now in
13301         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
13302
13303         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
13304         last six months.
13305
13306 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
13307
13308         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
13309
13310 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
13311
13312         * mini.c:
13313         (mini_cleanup): moved mono_runtime_cleanup call after the call to
13314         mono_domain_finalize.
13315         (mini_method_compile): use mono_method_profile* if the the option is
13316         enabled.
13317
13318 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
13319
13320         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
13321         methods with their wrapper.
13322
13323         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
13324         methods with their wrapper.
13325
13326         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
13327         their wrapper.
13328
13329         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
13330         wrapper.
13331
13332         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
13333         methods.
13334
13335 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
13336
13337         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
13338
13339 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
13340
13341         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
13342         of the mempool. This is slightly faster and uses less memory
13343
13344 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
13345
13346         * mini.c: avoid O(n) allocation for variables.
13347
13348 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
13349
13350         * mini.c: handle items on the stack after inlining methods.
13351
13352 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
13353
13354         * mini.c: make the method->opcode optimization dependent
13355         on MONO_OPT_INSTRINS and do it lazily.
13356
13357 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
13358
13359         * driver.c: print overall results at the end of regression run.
13360
13361 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
13362
13363         * inssel.brg: don't overwrite symbolic registers.
13364
13365 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
13366
13367         * inssel-x86.brg: fix conversion from long to float.
13368
13369 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
13370
13371         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
13372
13373 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
13374
13375         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
13376
13377         * driver.c: Added --print-vtable option as in the old JIT.
13378
13379 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
13380
13381         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
13382
13383 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
13384
13385         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
13386
13387 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
13388
13389         * mini.c regalloc.c regalloc.h: Fix memory leak.
13390
13391 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
13392
13393         * aot.c (mono_aot_get_method): register all used strings
13394
13395 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
13396
13397         * mini.c: always intern strings references with ldstr at compile time.
13398
13399 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
13400
13401         * Makefile.am: add BUILT_SOURCES.
13402
13403 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
13404
13405         * driver.c: give a better error message when the assembly to execute
13406         doesn't have an entry point.
13407
13408 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
13409
13410         * Makefile.am: added hack for automake
13411
13412         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
13413         correct sematics.
13414
13415         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
13416
13417 22003-04-07  Martin Baulig  <martin@ximian.com>
13418
13419         * Makefile.am: Added Makefile.am.
13420
13421         * debugger-main.c: Removed, this is now in the debugger where it
13422         belongs.
13423
13424         * mini.pc.in: Call this package `mini' for the moment.
13425
13426
13427
13428
13429
13430
13431
13432