2009-02-09 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4         generic_class_init trampolines.
5         (add_generic_class): Extract some code from add_generic_instances () into a
6         separate function so it can be called from other places too.
7         (compile_method): Call add_generic_class () for the classes of inflated methods
8         referenced by the method.
9         (can_encode_patch): Allow references to generic parameters.
10
11         * aot-runtime.c: Add support the patches required by the new trampolines.
12         
13         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
14         support.
15
16         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
17         full-aot support.
18
19         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
20         this from get_throw_pending_exception, make the signature full aot compatible.
21
22         * Makefile.am (fullaotcheck): New target to run full-aot tests.
23
24         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
25
26         * exceptions.cs: Add a test.
27
28 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
29
30         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
31         use the DWARF_DATA_ALIGN constant instead.
32
33         * exception-<ARCH>.c: Update after the above change.
34
35         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
36         dwarf unwinder.
37
38         * mini-arm.c: Enable the dwarf unwinder.
39
40         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
41         instead of mono_class_setup_vtable ().
42
43 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
44
45         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
46         dwarf unwinder.
47
48         * mini-x86.h: Enable the dwarf unwinder.
49
50 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
51
52         Fix mcs/tests/test-7.cs
53         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
54         2009-02-03.
55
56 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
57
58         * mini.c (print_jit_stats): Remove some unused statistics.
59
60 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
61
62         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
63
64 2009-02-05  Mark Probst  <mark.probst@gmail.com>
65
66         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
67         the method we get from mono_object_get_virtual_method() because
68         that function does it properly, now.
69
70 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
71
72         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
73         opcodes. Fixes #472775.
74
75 2009-02-05  Mark Probst  <mark.probst@gmail.com>
76
77         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
78         fact that mono_find_jit_info() sometimes returns the context
79         corresponding to the jit info in new_ctx.  Fixes #472600.
80
81 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
82
83         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
84         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
85         klass->enum_basetype directly.
86
87         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
88         enum subtypes.
89
90         * unwind.c: Avoid 0 sized arrays.
91
92 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
93
94         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
95         size on systems with 64k pages. Fixes #471389.
96
97 2009-02-04  Mark Probst  <mark.probst@gmail.com>
98
99         Contributed under the terms of the MIT/X11 license by Steven
100         Munroe <munroesj@us.ibm.com>.
101
102         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
103         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
104         necessary.
105
106 2009-02-04  Mark Probst  <mark.probst@gmail.com>
107
108         Contributed under the terms of the MIT/X11 license by Steven
109         Munroe <munroesj@us.ibm.com>.
110
111         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
112         comparison fix.
113
114         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
115         The trampoline can be longer on PPC64.
116
117 2009-02-04  Mark Probst  <mark.probst@gmail.com>
118
119         Contributed under the terms of the MIT/X11 license by Steven
120         Munroe <munroesj@us.ibm.com>.
121
122         * mini-ppc.c: Compiler warning fixes and trivial code
123         simplifications.
124
125 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
126
127         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
128         ins->dreg which could be a hardware register, not a vreg.
129
130         * aot-compiler.c (emit_method_dwarf_info): Ditto.
131         
132         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
133         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
134
135         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
136         
137         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
138         ->dreg, that is not the vreg we are looking for.
139
140         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
141
142         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
143         LIVERANGE_END.
144
145         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
146         strange crashes.
147
148 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
149
150         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
151
152         * aot-compiler.c (emit_line_number_info): Fix line number emission when
153         the line diff is 0.
154
155         * aot-compiler.c: Add xdebug support on x86.
156
157         * unwind.c: Add x86 support.
158         
159         * aot-compiler.c (emit_exception_debug_info): Control the emission of
160         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
161
162         * mini.c (mini_method_compile): Ditto.
163         
164         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
165         the variable index.
166
167         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
168         which mimic .push_section/.pop_section in GAS.
169         
170         * aot-compiler.c: Emit precise live range information for variables.
171
172         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
173
174         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
175         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
176         them.
177
178         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
179         the live ranges of variables.
180
181         * mini.h (struct MonoMethodVar): Add two fields containing the live range
182         of the variable in terms of native offsets.
183
184 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
185
186         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
187         
188 2009-02-02  Mark Probst  <mark.probst@gmail.com>
189
190         Contributed under the terms of the MIT/X11 license by Steven
191         Munroe <munroesj@us.ibm.com>.
192
193         * exceptions-ppc.c (restore_regs_from_context): Correct operand
194         order (offset then base reg) for ppc_load_multiple_regs.
195         (emit_save_saved_regs) Correct operand order for
196         ppc_store_multiple_regs.
197         (mono_arch_get_call_filter): Correct operand order for
198         ppc_load_multiple_regs.
199
200         * mini-ppc.c (emit_memcpy): Fix operand order for
201         ppc_load_reg_update and ppc_store_reg_update.
202         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
203         (mono_arch_emit_epilog): Correct operand order for
204         ppc_load_multiple_regs.
205
206         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
207         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
208
209 2009-02-02  Mark Probst  <mark.probst@gmail.com>
210
211         * cpu-ppc64.md: Fixed storer4_memindex length.
212
213 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
214
215         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
216         line number info.
217         
218         * aot-compiler.c (emit_line_number_info): Optimize this.
219
220 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
221
222         * aot-compiler.c: Disassemble tokens in the IL disassembly.
223         
224         * aot-compiler.c: Add debug info for methods without debug info by
225         emitting an IL file and having the line number info referencing that file.
226
227         * aot-compiler.c: Optimize the size of the generated line number info.
228
229         * aot-compiler.c: Emit line number info in xdebug mode.
230
231         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
232         million arguments.
233
234 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
235
236         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
237
238         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
239         is used.
240
241 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * basic-calls.cs: Test for the weird crash found on arm.
244         
245 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
246
247         * cpu-arm.md: Increase the size of storer8_membase_reg and
248         loadr8_membase_reg to 24 bytes to accomodate the extra add.
249
250         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
251         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
252         reg to LR otherwise we'll be loading/storing from just the offset.
253
254 2009-01-30  Miguel de Icaza  <miguel@novell.com>
255
256         Question: if we are storing gint32's inside the "*native_offset",
257         should we change the signature to "gint32 *native_offset" to
258         ensure that we do not have type definition problems?
259         
260         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
261         an int * as this is what the other function expects, causes
262         problems with Freescale's compiler that defined int32_t to be a
263         long and makes int incompatible 
264
265 2009-01-30  Miguel de Icaza  <miguel@novell.com>
266
267         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
268         filename conflict with bjam.
269
270 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
271
272         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
273         as it might use decomposed ops.
274
275 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
276
277         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
278
279         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
280         is defined.
281
282         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
283
284         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
285         offsets.
286
287         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
288         way registers are stored in MonoContext on arm.
289
290         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
291         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
292
293         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
294
295         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
296
297         * mini.c (mini_init): Register mono_isfinite.
298
299         * jit-icalls.c (mono_isfinite): New jit icall.
300
301         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
302         
303         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
304         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
305         the parent frame.
306
307 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
310         separate frame and stack pointers, so we must use FP to find the register
311         spill area.
312         The FP reg is retrieved from the MonoContext::regs array.
313
314 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
315
316         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
317         as FPA requires it.
318
319 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
320
321         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
322         return R4 and R8 when not running under softfloat.
323
324         Fixes basic-calls.exe
325
326 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
327
328         * mini-arm.c: Implement some overflow opcodes.
329
330 2009-01-29  Miguel de Icaza  <miguel@novell.com>
331
332         * ssa.c: handle another alloca.h
333
334         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
335         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
336         MONO_ARCH_USE_SIGACTION. 
337
338         * aot-runtime.c, mini-exceptions.c: Replace platform define with
339         capability defines.
340
341         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
342
343         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
344         PPC targets as sigaction does not exist on all platforms, define
345         this on a per-platform basis.
346
347         Instead of erroring out if the platform is not defined, include
348         mini-ppc-os.h, and expect that the OS specific setting provides
349         the required information.   
350
351 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
352
353         * aot-compiler.c: Fix --enable-minimal=aot.
354
355 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
356
357         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
358         previous change.
359
360 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
361
362         * exceptions-arm.c: Fix warnings.
363
364         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
365         ARM.
366
367         * mini-x86.c: Fix --enable-minimal=jit build.
368
369         * mini.c: Really fix --enable-minimal=jit build.
370         
371         * mini.c (construct_object_context_for_method): Move this outside
372         the DISABLE_JIT block to fix the --enable-minimal=jit build.
373
374         "Backported" of r124984 from 2.0 branch.
375         
376         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
377
378         "Backport" of r124977 + r124978 from 2.0 branch.
379         
380         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
381         to avoid calling mono_exception_from_token () from the throw trampoline.
382         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
383         for throwing corlib exceptions, this fixes full-aot support for corlib
384         exceptions.
385
386         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
387
388 2009-01-29  Miguel de Icaza  <miguel@novell.com>
389
390         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
391         part of the changes to split the code in mini into operating
392         system specific files.
393
394         This patch was done by copying mini.c to the respective files to
395         preserve SVN history.
396
397 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
398
399         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
400
401 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
402
403         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
404         remoting-invoke-with-check wrappers of shared methods.
405
406         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
407
408 2009-01-27  Mark Probst  <mark.probst@gmail.com>
409
410         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
411         optimization if the top of stack is the last instruction in the
412         bblock.  Otherwise it might have been used after its definition.
413         Fixes #469742.
414
415 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
416
417         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
418         method as well when get_vcall_slot () fails to match a code sequence.
419
420         * mini-arm.c: Fix the android build, which doesn't have
421         __aeabi_read_tp.
422
423 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
426         the s390x build.
427
428 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
429
430         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
431
432 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
433
434         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
435         and put its id into jinfo->used_regs. This is only used on amd64,
436         which is currently the only platform generating unwind info.
437
438         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
439         the dwarf unwinder. This is required to correctly handle async exceptions
440         like thread abort and stack overflows, which can happen while a method
441         is in the middle of its prolog or epilog.
442         
443         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
444         the unwind info belonging to an AOTed method.
445
446         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
447         into cfg->unwind_ops.
448         
449         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
450
451         * mini.c (mini_init): Call mono_unwind_init ().
452         (mini_cleanup): Call mono_unwind_cleanup ().
453
454         * unwind.c: Add functions for managing a set of unwind info entries, allowing
455         unwind info to be shared between methods.
456
457         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
458         saved in the LMF.
459
460         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
461         get_throw_pending_exception () to avoid initialization races.
462
463         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
464         mono_arch_exceptions_init () function.
465
466         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
467
468 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
469
470         * mini.c (mono_get_domain_intrinsic): New helper function.
471         (mono_get_thread_intrinsic): Ditto.
472
473         * mini-arm.c mini-ia64.c: Use the new helper functions.
474         
475         * method-to-ir.c (mono_method_to_ir): Fix the comment for
476         the last constrained_call change, since it is needed in the non-AOT
477         case as well.
478
479         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
480         
481         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
482         mono_get_lmf_addr () on arm eabi linux.
483
484 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
485
486         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
487         code sequence which matches a non-virtual call.
488
489 2009-01-23  Mark Probst  <mark.probst@gmail.com>
490
491         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
492         stack pointer (r1).
493
494 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
495
496         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
497         runtime-invoke wrappers, since they are also shared based on signature.
498
499 2009-01-22  Mark Probst  <mark.probst@gmail.com>
500
501         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
502         info from the (correct) context.
503
504 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
505
506         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
507         
508         * unwind.c (mono_unwind_frame): New function to unwind through a frame
509         using dwarf unwinding info. Not yet used.
510
511         * mini.c (mini_init): When using xdebug, disable freeing of domains.
512
513 2009-01-21  Mark Probst  <mark.probst@gmail.com>
514
515         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
516         descriptors.
517
518         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
519         special case and handle mono_arch_delegate_invoke_impl() returning
520         function descriptors.
521
522         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
523         trampolines return function descriptors, too.
524
525 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
526
527         * method-to-ir.c (handle_alloc): Avoid generic instances in the
528         out_of_line optimization.
529
530 2009-01-21  Martin Baulig  <martin@ximian.com>
531
532         * mini.h
533         (MonoCompile): Added `disable_deadce_vars' to disable removing
534         unused variables.
535
536         * mini.c
537         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
538         inside the debugger.
539
540         * liveness.c (mono_analyze_liveness): Don't remove any unused
541         variables if `cfg->disable_deadce_vars' is set.
542
543 2009-01-21  Mark Probst  <mark.probst@gmail.com>
544
545         * method-to-ir.c: Only apply exception constructor optimization if
546         the the method actually belongs to an exception class.  Fixes
547         #467456.
548
549 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
550
551         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
552         change inside a #ifdef __mono_ppc64__.
553
554         * aot-compiler.c (compile_method): Remove the previous limitation.
555
556         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
557         on type variables in AOTed code.
558         
559         * aot-compiler.c (compile_method): Skip generic methods having type 
560         constraints on their generic parameters.
561
562         * aot-compiler.c (compile_method): Check for methods which cannot be
563         encoded inside RGCTX_FETCH patches as well.
564
565         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
566         build.
567
568 2009-01-20  Mark Probst  <mark.probst@gmail.com>
569
570         * method-to-ir.c: Force the vtable variable in shared generic code
571         for the case that they might show up on a stack trace where they
572         are needed.
573
574         * mini-exceptions.c: Save and use generic sharing info as well as
575         IP in stack traces to resolve shared generic instantiations.
576
577 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
578
579         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
580         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
581
582 2009-01-20  Mark Probst  <mark.probst@gmail.com>
583
584         * method-to-ir.c: Do generic sharing for array constructors.
585
586 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
587
588         * mini-exceptions.c (mono_print_thread_dump): Add information
589         about the thread state using wapi_current_thread_desc.
590
591 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * basic-simd.cs: Tests for the new constructors. 
594
595 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * mini-ops.h: Added OP_EXPAND_*
598
599         * cpu-x86.md: Same.
600
601         * mini-x86.c (mono_arch_output_basic_block): Same.
602         
603         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
604
605 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
606
607         * iltests.il.in: Add a test for #467385.
608
609 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
610
611         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
612         thread been cleaned up is not the same currently in execution.
613
614         Fixes appdomain-unload crashes on windows, osx and linux variants
615         without the __thread keyword.
616
617 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
618
619         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
620         (koush@koushikdutta.com). Implement this for android.
621
622         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
623         begins with a digit.
624
625         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
626         mono_marshal_get_write_barrier ().
627
628 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
629
630         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
631         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
632         that pass them on a register pair.
633
634         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
635         test was crashing due to that.
636
637 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
638
639         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
640         trampoline code. Include ucontext.h only if available.
641
642 2009-01-15  Mark Probst  <mark.probst@gmail.com>
643
644         * mini.c: mono_domain_lookup_shared_generic() takes an open method
645         and doesn't check whether it's sharable, like it was before
646         removing the shared generics hash.  This brings IronPython
647         performance back to what it was before that change.
648
649 2009-01-14  Mark Probst  <mark.probst@gmail.com>
650
651         * method-to-ir.c: Handle delegate invocation optimization earlier,
652         otherwise it would be handled (much more slowly) by the
653         final/sealed optimization.
654
655 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
656
657         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
658         domain is not set. Fixes #465864.
659
660 2009-01-12  Mark Probst  <mark.probst@gmail.com>
661
662         * method-to-ir.c: Don't stop sharing of generic methods with catch
663         clauses - we already handle those.
664
665 2009-01-12  Mark Probst  <mark.probst@gmail.com>
666
667         * mini.c, mini.h: lookup_generic_method() is now
668         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
669         making the shared_generics_hash obsolete.
670
671 2009-01-12  Mark Probst  <mark.probst@gmail.com>
672
673         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
674         use the red zone.  Make room on the stack first and then use it,
675         not the other way around.
676
677 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
678
679         * mini.c (mini_init): Call mono_xdebug_init ().
680
681         * aot-compiler.c (mono_xdebug_init): Make this non-static.
682
683 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
684
685         * TestDriver.cs: Add an --iter argument to run tests multiple times.
686
687         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
688         trampolines.
689
690         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
691         debug+unwind info for trampolines.
692
693         * mini.c (mono_create_unwind_op): New helper function.
694
695         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
696
697 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
698
699         * aot-compiler.c: Fix the build.
700
701 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
702
703         * Makefile.am: Update dtrace-prelink.sh location.
704
705 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
706
707         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
708         optimization. Fixes #464520.
709
710 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
711
712         * mini-amd64.c : Adding code to save/restore non-volatile registers
713            on Winx64.
714
715         * exceptions-amd64.c : Adding code to save/restore non-volatile 
716           registers on Winx64.
717
718         Contributed under MIT/X11 license.
719
720 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
721
722         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
723         __GNUC_MINOR__ which can break when the major version changes.
724
725 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * basic-simd.cs: Add tests for usage of the sizeof opcode.
728
729 2009-01-07  Geoff Norton  <gnorton@novell.com>
730
731         * helpers.c:  Allow mono -v -v -v to work on darwin.
732
733 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
734
735         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
736           pattern. 
737
738         Contributed under MIT/X11 license.
739
740 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
741
742         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
743         instead of directly accessing type->data.klass. Fixes #462016.
744         (mono_allocate_stack_slots_full): Ditto.
745
746         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
747         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
748
749         * aot-compiler.c (emit_plt): Fix ARM build.
750
751 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
752
753         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
754         
755         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
756         change.
757
758         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
759         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
760         #463357.
761
762         * iltests.il.in: Add a regression test.
763
764 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
765
766         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
767
768 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
769
770         * basic-simd.cs: Add a regression test for #462457.
771
772 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
773
774         * mini-ops.h: Add a definition of XPHI.
775
776         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
777
778         * ssa.c (op_phi_to_move): Handle XPHI.
779
780         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
781
782         Fixes #462457
783
784 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
785
786         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
787
788 2008-12-31  Geoff Norton  <gnorton@novell.com>
789
790         * mini-ppc.c: The prolog size allocated can be too small for darwin
791         ppc32 under certain circumstances.  Also fix a small logic bug.
792
793 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
794
795         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
796         while loading AOT methods.
797
798         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
799         since only the former is nulled out after a successful cast. This prevents
800         crashes with rethrown exceptions when using --debug=casts.
801
802 2008-12-24  Mark Probst  <mark.probst@gmail.com>
803
804         * mini.h: New macro for checking whether a method is final,
805         i.e. whether the method or its class is marked final.
806
807         * method-to-ir.c: Use the new macro for all final-checks
808         consistently.  Fixes the crash in the System.ServiceModel tests.
809
810 2008-12-23  Mark Probst  <mark.probst@gmail.com>
811
812         * mini-exceptions.c (get_exception_catch_class): Corrected another
813         overly strict assertion.
814
815 2008-12-23  Mark Probst  <mark.probst@gmail.com>
816
817         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
818         Clobbering it is not allowed because the caller might use it as
819         the vtable register in the interface call.
820
821 2008-12-19  Mark Probst  <mark.probst@gmail.com>
822
823         * mini-exceptions.c (get_exception_catch_class): Corrected an
824         overly strict assertion.
825
826 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
827         
828         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
829
830         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
831
832         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
833
834         * cpu-mips.md: correct lengths for certain long_ opcodes.
835
836         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
837
838         * mini-mips.c: Add support for more long operations. Fix issues with stack frame layout for n32 (still not perfect yet). Add mips_emit_load_const().
839         
840 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
841
842         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
843         
844 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
845         
846         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
847         
848 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
851         next basic block.
852         
853 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
854
855         * mini.h: Allow MonoInst 'p' field to alias with the low-order bits of the 'const_val' fields correctly on big-endian systems when SIZEOF_VOID_P < SIZEOF_REGISTER
856
857         * ir-emit.h: Change SIZEOF_VOID_P to SIZEOF_REGISTER, init instruction through inst_c* fields instead of inst_p* fields in case sizeof(inst_p) < sizeof(inst_c)
858         
859 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
860         
861         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
862         
863 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
864
865         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
866         gshared code. Fixes #458947.
867
868         * generics.cs: Add a test.
869
870 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
871         
872         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
873         
874         * mini-mips.c: first pass n32 code generation.
875
876         * mini-mips.h: datatypes and defines for n32 support.
877
878         * exceptions-mips.c: first pass n32 code generation.
879         
880         * tramp-mips.c: first pass n32 code generation.
881         
882         * cpu-mips.md: add long_ opcodes.
883         
884 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
885
886         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
887
888         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
889         
890         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
891         
892         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
893
894         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
895
896         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
897
898         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
899
900         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
901
902         * helpers.c: for mips/n32, don't pass -mips32 to objdump
903
904 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
905
906         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
907
908 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
909
910         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
911
912 2008-12-12  Mark Probst  <mark.probst@gmail.com>
913
914         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
915         descriptors for helper functions directly in front of the code.
916
917 2008-12-11  Mark Probst  <mark.probst@gmail.com>
918
919         * method-to-ir.c: Removed an unnecessary assertion.
920
921 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
922
923         * method-to-ir.c: Merge SGEN changes from the old JIT.
924
925 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
926
927         * driver.c (compile_all_methods_thread_main): Handle failure of
928         mono_get_method ().
929
930 2008-12-10  Mark Probst  <mark.probst@gmail.com>
931
932         * mini-ppc.c: Merged with mini-ppc64.c.
933
934         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
935
936         * Makefile.am: Use the same sources for PPC and PPC64.
937
938         * mini-ppc64.c: Removed.
939
940 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
941
942         * branch-opts.c (remove_block_if_useless): Extract fall through detection
943         code to mono_bb_is_fall_through.
944         
945         * branch-opts.c (mono_remove_critical_edges): Same.
946
947 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
948
949         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
950         expect that an OP_BR_REG will be there.
951
952 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
953
954         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
955         for the many branch ops. The original check miss OP_BR_REG.
956
957         Fixes #457574.
958         
959 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
960
961         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
962
963 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
964
965         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
966         while holding the aot lock.
967
968 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
969
970         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
971         
972 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
973
974         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
975           to release all runtime callable wrappers held by the runtime.
976
977         Contributed under MIT/X11 license.
978
979 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
980
981         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
982           for Winx64.
983
984         Contributed under MIT/X11 license.
985
986 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
987
988         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
989         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
990
991 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
992
993         * cpu-mips.md: fix ckfinite length
994
995         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
996         (mono_arch_lowering_pass): cleanup, rearrange for clarity
997         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
998         
999 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1000
1001         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1002         
1003 2008-12-08  Geoff Norton  <gnorton@novell.com>
1004
1005         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1006         size by 8 bytes as well.
1007
1008 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * basic-simd.cs: Fix method names for Vector16b.
1011         
1012 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * basic-simd.cs: Fix method names for Vector16sb.
1015
1016 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1017
1018         * basic-simd.cs: Fix method names for Vector8us.
1019         
1020 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1021
1022         * basic-simd.cs: Fix method names for Vector8s.
1023         
1024 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * basic-simd.cs: Fix method names for Vector4ui.
1027
1028 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1029
1030         * basic-simd.cs: Fix method names for Vector2l.
1031
1032 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1033
1034         * basic-simd.cs: Fix method names for Vector2d.
1035
1036 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
1039         that are extension methods.
1040
1041 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1042
1043         * basic-simd.cs: Fix method names for Vector4f.
1044
1045 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
1046
1047         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
1048         as such. Fixes #456669.
1049
1050 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1051
1052         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
1053         
1054 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1055
1056         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
1057         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
1058         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
1059         (mips_adjust_stackframe): handle FP spills
1060                 
1061         * mini-ops.h: add mips_mtc1_s2
1062         
1063         * cpu-mips.md: add mips_mtc1_s2
1064         
1065 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
1066
1067         * unwind.c: New file, move the unwind info encoding functions here from
1068         aot-compiler.c, so they could be used at runtime too.
1069
1070 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1071
1072         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
1073         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
1074         
1075 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1076
1077         * mini-mips.c: cleanup warnings
1078         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
1079         (mips_adjust_stackframe): handle case of taking the address of stack locals
1080         
1081 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * aot-compiler.c: Implement a few functions missing from the asm writer.
1084         (emit_method_code): Only write symbols for methods when using the bin
1085         writer, since the assembler can't deal with the characters in our method
1086         names.
1087
1088         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
1089
1090         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
1091         call.
1092
1093         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
1094         a bit to also restore %rax.
1095
1096 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1097
1098         * mini-ppc.c: Some simple merges from mini-ppc64.c.
1099
1100 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1101
1102         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
1103         arguments.
1104
1105 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1106
1107         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
1108
1109         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
1110         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
1111
1112         * exceptions-ppc64.c: Removed.
1113
1114         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
1115
1116 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1117
1118         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
1119         tramp-ppc64.c.
1120
1121         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
1122
1123         * tramp-ppc64.c: Removed.
1124
1125 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
1128         the TYPESPEC table.
1129
1130 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1131
1132         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
1133
1134         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
1135         mini-ppc.h instead of mini-ppc64.h.
1136
1137         * mini-ppc64.h: Removed.
1138
1139 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1140
1141         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
1142         
1143         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
1144         
1145 2008-12-05  Mark Probst  <mark.probst@gmail.com>
1146
1147         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
1148         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
1149         code easier.
1150
1151 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1152
1153         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
1154
1155 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
1158
1159 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1160
1161         * basic-simd.cs: Tests for operator == and != on Vector4f.
1162
1163 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1164
1165         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
1166
1167         * simd-intrinsics.c: Kill useless enum.
1168
1169 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1170
1171         * cpu-mips.md: add long_conv_to_ovf_i4_2
1172         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
1173
1174 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1175
1176         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
1177         
1178         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
1179
1180 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1181
1182         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
1183         
1184 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1185
1186         * basic-simd.cs: Add tests for new methods.
1187
1188 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1189
1190         * simd-intrinsics.c: Add support for operator == and !=
1191         on Vector4(u)i.
1192
1193         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
1194
1195 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
1198
1199 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
1200
1201         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
1202
1203         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
1204         MONO_PATCH_INFO_ICALL_ADDR.
1205
1206         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
1207
1208         * aot-compiler.c: Resurrect full-aot support.
1209
1210 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1211
1212         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
1213         
1214 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
1215
1216         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
1217         
1218 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * basic-simd.cs: Fix tests to work under ppc.
1221         Remove tests for methods that will be removed.
1222
1223 2008-12-03  Mark Probst  <mark.probst@gmail.com>
1224
1225         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
1226         generic type (via a typedef or typeref) correctly.
1227
1228 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
1231         diagnose an assertion failure.
1232
1233 2008-12-02  Mark Probst  <mark.probst@gmail.com>
1234
1235         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
1236         Fix trampoline size.
1237
1238         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
1239         conversion opcodes are implemented natively instead via emulation.
1240
1241 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1242
1243         * cpu-mips.md: remove mips_xori
1244
1245         * mini-ops.h:  remove mips_xori
1246
1247         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
1248
1249         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
1250         
1251         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
1252         
1253 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1254
1255         * cpu-mips.md: fix instruction lengths.
1256
1257         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
1258
1259         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
1260
1261         * mini-ops.h: fix slti / sltiu op profiles.
1262         
1263 2008-12-02  Martin Baulig  <martin@ximian.com>
1264
1265         * method-to-ir.c (mono_method_to_ir): Disable debugging
1266         information for the init locals block to make the debugger stop
1267         after all locals have been initalized.
1268
1269 2008-12-02  Martin Baulig  <martin@ximian.com>
1270
1271         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
1272         running inside the debugger.
1273
1274 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
1275
1276         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
1277         is enabled.
1278
1279         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
1280         alu->alu imm optimization which only shows if deadce is disabled.
1281
1282         * aot-compiler.c: Rename the function names for the binary and asm writers
1283         so they can coexist in the same process. Rework the xdebug code to use the
1284         asm writer. This avoids the need to call into the runtime to dump the
1285         debugging info. Add more debugging info for types.
1286
1287         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
1288
1289         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
1290         cpu description tables, they can't occur in cpu-<ARCH>.md.
1291
1292         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
1293         the stack in CEE_LDFLDA. Fixes #450542.
1294
1295         * generics.cs: Add a new test.
1296
1297 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
1298
1299         * mini-ops.h: updated MIPS opcodes
1300         * mini-mips.c: decompose long opts
1301         * mini-mips.h: decompose long opts
1302         
1303 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
1304
1305         * cpu-mips.md: fix length on int_rem_un
1306         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
1307         
1308 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
1311
1312         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
1313
1314 2008-11-29  Martin Baulig  <martin@ximian.com>
1315
1316         * mini-exceptions.c (mono_handle_native_sigsegv): Check
1317         mono_debug_using_mono_debugger() in addition to the
1318         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
1319
1320 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1321
1322         * mini-ops.h: updated more MIPS opcodes
1323         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
1324         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
1325         
1326 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1327
1328         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
1329
1330 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1331
1332         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
1333         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
1334         * mini-ops.h: correct selected mips opcode entries
1335         
1336 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1337
1338         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
1339         make them work.
1340
1341 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1342
1343         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
1344
1345 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
1346
1347         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
1348         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
1349         * mini-mips.h: disable IMT
1350         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
1351         
1352 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1353
1354         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
1355
1356 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1357
1358         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
1359
1360 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
1363         consistency.
1364
1365 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1366
1367         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
1368         for Set/GetVector aligned versions.
1369
1370 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * basic-simd.cs: Add tests for Get/SetVector.
1373
1374 2008-11-27  Mark Probst  <mark.probst@gmail.com>
1375
1376         * mini.c: Removed g_slist_append_mempool().  Now in
1377         metadata/mempool.c.
1378
1379 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
1382         size properly and make the bounds check optional.
1383
1384         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
1385         for SetVector and IsAligned.
1386
1387 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini.c: Remove unused mono_normalize_opcodes () function.
1390
1391 2008-11-26  Mark Probst  <mark.probst@gmail.com>
1392
1393         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
1394         using the new atomic add ops now.
1395
1396         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
1397         add.
1398
1399 2008-11-26  Mark Probst  <mark.probst@gmail.com>
1400
1401         * mini-ppc64.c: Several fixes.
1402
1403 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
1404
1405         * cpu-mips.md: added jump_table
1406         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
1407
1408 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
1409
1410         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
1411
1412 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
1413
1414         * mini-ops.h: corrected a handful of MIPS opcodes.
1415
1416 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
1417
1418         * aot-compiler.c: MIPS to use ELF writer
1419
1420 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
1421
1422         * mini-codegen.c: remove MIPS specific assert.
1423
1424 2008-11-25  Mark Probst  <mark.probst@gmail.com>
1425
1426         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
1427         fixes.  PPC64 now passes most of the runtime regressions.
1428
1429 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
1432         volatile intervals a bit.
1433
1434 2008-11-24  Mark Probst  <mark.probst@gmail.com>
1435
1436         * basic-long.cs: New test case.
1437
1438 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * mini.c (mini_method_compile): Disable globalra for large methods for 
1441         now.
1442
1443         * regalloc2.c (order_moves): Add fp support.
1444
1445         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
1446         source bblock ends with an OP_BR_REG.
1447
1448         * ratests.cs: Add a new test.
1449
1450 2008-11-23  Mark Probst  <mark.probst@gmail.com>
1451
1452         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
1453         sharing.  PPC64 now passes generics.exe.
1454
1455 2008-11-23  Mark Probst  <mark.probst@gmail.com>
1456
1457         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
1458
1459 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
1462         memory when mono_jit_info_table_find () can't find the method in the
1463         LMF case.
1464
1465         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
1466         AOTed code too.
1467         
1468         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
1469         writer too.
1470
1471 2008-11-23  Mark Probst  <mark.probst@gmail.com>
1472
1473         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
1474         Several fixes.  PPC64 now runs exceptions.exe and
1475         devirtualization.exe.
1476
1477 2008-11-22  Mark Probst  <mark.probst@gmail.com>
1478
1479         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
1480         arrays.exe and basic-math.exe.
1481
1482 2008-11-22  Mark Probst  <mark.probst@gmail.com>
1483
1484         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
1485         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
1486
1487 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
1490
1491 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
1492
1493         * method-to-ir.c: Move bounds checking macros to ir-emit.h
1494
1495         * ir-emit.h: Move macros from method-to-ir.c to here.
1496
1497 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
1498
1499         * mini-ops.h: Correct the long simd ops to use LREG.
1500
1501 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
1502
1503         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
1504         
1505         * mini-ops.h: Correct the dreg type of a few long opcodes.
1506
1507         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
1508         Add netbsd support.
1509
1510 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
1511
1512         * mini-ppc.c: remove negative stack references in epilog
1513         for platforms that don't support the red zone.
1514
1515 2008-11-21  Mark Probst  <mark.probst@gmail.com>
1516
1517         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
1518         point regs.  Now PPC64 passes basic-calls.exe.
1519
1520 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1521
1522         * basic-simd.cs: Add tests for accessors of Vector2l.
1523
1524 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1525
1526         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
1527
1528         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
1529         
1530         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
1531
1532 2008-11-21  Mark Probst  <mark.probst@gmail.com>
1533
1534         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
1535         PPC64 passes basic-long.exe.
1536
1537 2008-11-20  Mark Probst  <mark.probst@gmail.com>
1538
1539         * decompose.c: Decompose carry and overflow add on PPC64 like on
1540         other 64 bit archs.  Don't decompose sub at all on PPC64.
1541
1542         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
1543         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
1544         basic-long.exe.
1545
1546 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1547
1548         * basic-simd.cs: Add tests for accessors of Vector2d.
1549
1550 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1551
1552         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
1553
1554         * cpu-x86.md: Same.
1555
1556         * mini-x86.c (mono_arch_output_basic_block): Same.
1557         
1558         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
1559
1560 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1561
1562         * basic-simd.cs: Add tests for accessors of Vector4f.
1563
1564 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
1567
1568         * cpu-x86.md: Same.
1569
1570         * mini-x86.c (mono_arch_output_basic_block): Same.
1571         
1572         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
1573
1574 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1575
1576         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
1577
1578 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1579
1580         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
1581
1582         * cpu-x86.md: Same.
1583
1584         * mini-x86.c (mono_arch_output_basic_block): Same.
1585         
1586         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
1587
1588 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1589
1590         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
1591
1592 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1593
1594         * simd-intrinsics.c: Enable setters for Vector16sb.
1595
1596 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
1597
1598         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
1599
1600         * cpu-x86.md: Same.
1601
1602         * mini-x86.c (mono_arch_output_basic_block): Same.
1603         
1604         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
1605
1606 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
1607
1608         * simd-intrinsics.c: Implement setter for Vector8us.
1609
1610 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
1611
1612         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
1613         for dead variables.
1614
1615 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
1616
1617         * mini-ppc.c: remove references to the red zone in the prolog
1618         (for systems that don't support it).
1619
1620 2008-11-19  Mark Probst  <mark.probst@gmail.com>
1621
1622         * cpu-ppc64.md: Fixed a few instruction lengths.
1623
1624         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
1625         now.
1626
1627 2008-11-19  Mark Probst  <mark.probst@gmail.com>
1628
1629         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
1630         basic.exe now.
1631
1632 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
1633
1634         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
1635
1636 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
1637
1638         * mini-ops.h: Added OP_INSERT_I2.
1639
1640         * cpu-x86.md: Same.
1641
1642         * mini-x86.c (mono_arch_output_basic_block): Same.
1643         
1644         * simd-intrinsics.c: Implement setter for Vector8s.
1645
1646         * simd-methods.h: Add the names of get setters of Vector8s.
1647
1648 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
1651         
1652         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
1653         parameters.
1654
1655         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
1656
1657 2008-11-18  Mark Probst  <mark.probst@gmail.com>
1658
1659         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
1660         for PPC64.  An empty program runs now.
1661
1662 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
1665
1666         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
1667         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
1668         info for JITted code is emitted into a shared library, loadable into gdb.
1669
1670 2008-11-18  Mark Probst  <mark.probst@gmail.com>
1671
1672         * Makefile.am: Changes to build PPC64.
1673
1674         * mini-arch.h: Include mini-ppc64.h on PPC64.
1675
1676 2008-11-18  Mark Probst  <mark.probst@gmail.com>
1677
1678         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
1679         in PPC code up to r119147.
1680
1681 2008-11-18  Mark Probst  <mark.probst@gmail.com>
1682
1683         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
1684         cpu-ppc64.md: Changes for PPC64.
1685
1686         Based on code submitted by andreas.faerber@web.de at
1687         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
1688         X11/MIT license.
1689
1690 2008-11-18  Mark Probst  <mark.probst@gmail.com>
1691
1692         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
1693         cpu-ppc64.md: Copied from the corresponding PPC files from
1694         r118846.
1695
1696 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
1697
1698         * mini-ops.h: Added OP_ROUND.
1699
1700         * cpu-x86.md: Added round.
1701
1702         * mini-x86.c: Added support for intrinsicing Math.Round (double).
1703
1704         * basic-math.cs: Added test_0_round to test rounding.
1705
1706         Contributed under MIT/X11 license.
1707
1708 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
1709
1710         * aot-compiler.c : Fix the Winx64 build.
1711
1712         Contributed under MIT/X11 license.
1713
1714 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
1715
1716         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
1717         in OP_EXTRACT_R8 to avoid possible stack corruption.
1718
1719 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
1720
1721         * mini-ops.h: Added OP_EXTRACT_R8/I8.
1722
1723         * cpu-x86.md: Added extract_r8.
1724
1725         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
1726         
1727         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
1728         a couple of OP_EXTRACT_I4.
1729
1730         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
1731
1732         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
1733
1734 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
1735
1736         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
1737         and not 4.1. 
1738
1739 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
1742         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
1743
1744         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
1745         are not needed any more.
1746
1747         * mini.h: Remove the unused INS_LIST macros.
1748
1749         * mini.c (mini_method_compile): Remove a disable globalra case which is no
1750         longer needed.
1751
1752         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
1753         ir-emit.h.
1754
1755         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
1756         mono_alloc_ireg () instead.
1757
1758         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
1759         macros.
1760
1761         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
1762         on amd64.
1763
1764         * aot-runtime.c (load_aot_module): Disable AOT when running under
1765         CAS.
1766
1767         * mini-amd64.h: Change the monitor fastpath defines to check for
1768         !PLATFORM_WIN32 so they work on *bsd too.
1769
1770         * mini.h mini.c mini-hhpa.c: Remove more unused code.
1771
1772         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
1773
1774         * mini.h (MonoCompile): Remove new_ir flag.
1775
1776         * regalloc.h regalloc.c: Remove unused code.
1777
1778         * cpu-*.md: Remove more unused opcodes.
1779
1780         * simple-cee-ops.h simple-mini-ops.h: Removed.
1781
1782         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
1783         
1784 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * aliasing.h: Removed.
1787
1788         * *.c: Remove references to aliasing.h and inssel.h.
1789
1790         * mini.c: Remove additional unused functions.
1791
1792         * mini-ops.h cpu-*.md: Remove unused opcodes.
1793
1794 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
1795
1796         Remove the old JIT code.
1797
1798         * inssel*.brg: Removed.
1799
1800         * ssa.c abcremoval.c aliasing.c: Removed.
1801
1802         * ssa2.c: Renamed to ssa.c.
1803
1804         * abcremoval2.c: Renamed to abcremoval.c.
1805
1806         * *.c: Removed all !cfg->new_ir code.
1807
1808         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
1809         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
1810
1811         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
1812         
1813 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
1816         to simplify the code and cut back on the number of global symbols in the AOT
1817         file.
1818         
1819         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
1820
1821 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
1824         with the got/got_info tables.
1825
1826         * mini.h: Bump AOT file format version.
1827         
1828         * unwind.h: New file, contains definitions for stack unwinding.
1829
1830         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
1831         to cfg->unwind_ops.
1832         
1833         * aot-compiler.c: Generalize the emitting of unwind information to use the
1834         information in cfg->unwind_ops.
1835
1836         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
1837
1838         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
1839         AOT method frames. Enable writing symbols for methods by default.
1840
1841 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
1842
1843         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
1844         and make it work with vectors of element sizes 1, 2 and 4.
1845
1846         * simd-intrinsics.c: Enable getter for all vectors with element size
1847         1, 2 or 4.
1848
1849         * simd-methods.h: Add the names of other getters.
1850
1851         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
1852
1853         * cpu-x86.md: Same.
1854
1855         * mini-x86.c: Same.
1856
1857 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
1858
1859         * mini-ppc.h: portability fix.
1860
1861 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
1862
1863         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
1864         buggy and will overwrite it.
1865
1866 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
1869         Use it to emit local symbols for all methods so AOTed methods show up with
1870         their full name in gdb/valgrind output.
1871
1872 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
1873
1874         * mini-ppc.c: portability fixes.
1875
1876 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
1879         entries out of the if (!generic_shared...) code so it is always done.
1880         (mono_class_init_trampoline): Do the patching when running under valgrind
1881         too, newer versions of valgrind have no problems with it.
1882
1883 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
1886         further sections.
1887
1888 2008-11-13  Mark Probst  <mark.probst@gmail.com>
1889
1890         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
1891         filters.
1892
1893 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
1896
1897 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
1898
1899         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
1900
1901         * cpu-x86.md: Same.
1902
1903         * mini-x86.c: Same.
1904
1905         * simd-intrinsics.c: Same.
1906
1907 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         * simd-intrinsics.c: Enable constructor intrinsics for all types.
1910
1911 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
1914         to work with more Vector types.
1915
1916 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
1917
1918         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
1919         store the elemens directly instead of using and intermediate.
1920
1921 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
1924
1925         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
1926         to preserve %eax for aot plt trampolines.
1927
1928         * aot-compiler.c (compile_method): Don't skip synchronized methods.
1929         (encode_method_ref): Flag synchronized methods so they won't go through
1930         the AOT trampoline.
1931
1932         * aot-compiler.c: Additional work to support AOTing synchronized methods/
1933         wrappers.
1934
1935         * cpu-ia64.md (jmp): Increase max length.
1936
1937 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
1938
1939         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
1940         open generic classes.
1941
1942         * aot-compiler.c: Enable the ELF writer on ELF platforms.
1943
1944         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
1945         box+brtrue optimization since it causes test failures on x86.
1946
1947 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
1948
1949         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
1950
1951         * cpu-x86.md: Same.
1952
1953         * mini-x86.c: Same.
1954
1955         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
1956         for simd ctor values. 
1957
1958         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
1959         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
1960
1961 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
1962
1963         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
1964         LogicalRightShift.
1965
1966         * simd-instrincs.c: Same.
1967
1968         * basic-simd.cs: Same.
1969
1970 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * ratests.cs: Add more tests.
1973
1974         * regalloc2.c (add_spill_code): Handle more corner cases.
1975
1976 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
1977
1978         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
1979         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
1980         both the source an destination of an instruction.
1981
1982 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
1983
1984         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
1985         wapihandles.c: more portability changes.
1986
1987 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
1988
1989         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
1990         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
1991         safe to execute in a signal handler and the kernel provides better
1992         the info in /proc/self/smaps. Avoid the assert on sigaction during
1993         cleanup.
1994
1995 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
1998         do the bblock linking hack if it is actually needed.
1999
2000         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2001         up linking.
2002
2003         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2004         crash problem is fixed.
2005
2006         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2007         bblocks.
2008
2009         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2010         for catch clauses.
2011         (mini_method_compile): Set the starting value of next_vreg to 
2012         MAX_IREGS + MAX_FREGS when using globalra.
2013
2014         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2015         filter clauses with BB_EXCEPTION_HANDLER.
2016
2017         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2018
2019 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2020
2021         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2022         space for stdcall.  Fixes regressions on Win32.
2023
2024 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2027         bblocks.
2028         (linear_scan): Remove an assert which doesn't seem to be needed.
2029
2030         * local-propagation.c (mono_local_deadce): Avoid a call to
2031         MONO_DELETE_INS which would screw up the instruction linking.
2032
2033         * mini.c (mono_decompose_op_imm): Make this work with globalra.
2034
2035         * regalloc2.c: Upgrade to work the current JIT code.
2036
2037 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
2040         case.
2041
2042         * aot-runtime.c: Remove some dead code.
2043
2044         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
2045         consistency.
2046         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
2047
2048         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
2049         trampolines using sscanf since atoi doesn't work on large unsigned values.
2050
2051         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
2052         Initialize code_size.
2053
2054 2008-11-08  Mark Probst  <mark.probst@gmail.com>
2055
2056         * method-to-ir.c (mini_emit_inst_for_method): Make
2057         Interlocked.CompareExchange work for Int arguments on 32 bit
2058         archs, as well.
2059
2060 2008-11-07  Mark Probst  <mark.probst@gmail.com>
2061
2062         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
2063
2064 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
2065
2066         * main.c Fix MSVC build.
2067
2068         Contributed under MIT/X11 license.
2069
2070 2008-11-06  Mark Probst  <mark.probst@gmail.com>
2071
2072         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
2073         alignment larger than 8 bytes are aligned correctly, too.
2074
2075         * mini.c: Honor the min_align field of MonoClass when laying out
2076         the stack.
2077
2078 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
2081
2082         * aot-compiler.c (emit_plt): Fix a warning.
2083         
2084         * aot-compiler.c: Implement ARM support in the binary writer.
2085
2086 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2087
2088         * basic-simd.cs: Add test for getter with byref arg.
2089         Fix the naming of a few tests.
2090         Add missing checks to a test.
2091
2092 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
2095
2096         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
2097         most of the full-aot support for monitor enter/exit trampolines.
2098
2099         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
2100         enter/exit trampoline creation functions.
2101
2102         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
2103         make dist.
2104
2105 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
2106
2107         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
2108         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
2109         implement the needed functionality without adding crap to the runtime.
2110
2111 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
2114         non-x86 builds.
2115
2116         * mini.c (mono_build_date): New global version holding the build date in
2117         string format.
2118         
2119         * Makefile.am (buildver.c): Generate a file containing the build date.
2120
2121         * main.c: Set the build date from the generated file.
2122
2123         * mini.c (mono_get_runtime_build_info): New helper function returning build
2124         information in a string format.
2125         
2126         * driver.c (mono_main): Print the build date in --version.
2127
2128         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
2129         file when the bind-to-runtime-version option is used.
2130
2131 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2132
2133         * simd-intrinsics.c: Fix bug when using getters and byref args. 
2134
2135 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * simd-methods.h: Rename prefetch methods.
2138
2139         * simd-intrinsics.c: Same.      
2140
2141 2008-11-05  Mark Probst  <mark.probst@gmail.com>
2142
2143         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
2144         sizes.
2145
2146 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * aot-compiler.c: Use the bundled elf header files instead of depending on
2149         the system one.
2150         
2151         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
2152         mempool.
2153
2154         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
2155         on every call.
2156
2157 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
2158
2159         * cpu-x86.md: Add store nta ops.
2160
2161         * mini-ops.h: Same.
2162
2163         * mini-x86.c: Same.
2164
2165         * mini.h: Add an enum for simd prefetch modes.
2166
2167         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
2168         of store. Use the changed code to support store nta.
2169
2170         * simd-intrinsics.c: Add prefetch ops for all vector types.
2171
2172 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
2175         threads.
2176         
2177         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
2178         names.
2179
2180         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
2181         trampolines.
2182
2183 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2184
2185         * mini-x86.c: Fixed commit.
2186
2187 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * aot-compiler.c (emit_plt): Align the plt section only on x86.
2190
2191 2008-11-04  Mark Probst  <mark.probst@gmail.com>
2192
2193         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
2194         and MONITOR_EXIT, for the ASM fastpaths.
2195
2196         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
2197         available.
2198
2199         * mini.c, patch-info.h: Signature and patch infos for
2200         Monitor.Enter/Exit trampolines.
2201
2202         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
2203
2204         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
2205         Monitor.Enter/Exit ASM fastpath for Linux.
2206
2207 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
2210
2211         * objects.cs: Add a new test.
2212         
2213         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
2214
2215         * aot-runtime.c (load_method): Run class initialization in the PLT case even
2216         if MONO_LOG_LEVEL is set.
2217
2218         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
2219
2220         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
2221
2222         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
2223         
2224         * aot-compiler.c: Change the relocation code to use virtual addresses instead
2225         of file offsets. Align the sections belonging to the data segment to 
2226         PAGESIZE.
2227
2228 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
2231         elf.h. Port it to amd64.
2232
2233 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2234
2235         * driver.c: Enable SIMD by default.
2236
2237 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2238
2239         * cpu-x86.md: Add prefetch op.
2240
2241         * mini-ops.h: Same.
2242
2243         * mini-x86.c: Same.
2244
2245         * mini.h: Add an enum for simd prefetch modes.
2246
2247         * simd-methods.h: Add prefetch function names.
2248
2249         * simd-intrinsics.c: Add prefetch ops for all vector types.
2250
2251 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * aot-compiler.c (emit_bytes): Speed this up a little.
2254
2255 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * aot-compiler.c: Add JIT time etc. statistics.
2258         
2259         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
2260
2261         * mini.h (MonoCompile): Add 'got_offset' field.
2262
2263         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
2264         method_got_offsets array.
2265
2266         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
2267         wrappers.
2268
2269         * aot-compiler.c (compile_method): Add generic method instances referenced
2270         by the method to the list of methods to be compiled, this is required so if
2271         A<T> references B<T>, and another assembly references A<int>, then it will
2272         also get a copy of B<int>.
2273
2274         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
2275         when checking for monitor enter/exit.
2276
2277 2008-10-30  Mark Probst  <mark.probst@gmail.com>
2278
2279         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
2280         for Monitor.Enter and Monitor.Exit if enabled.
2281
2282         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
2283         Solaris.
2284
2285 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
2288         of an OP_MOVE. Fixes #440046.
2289
2290         * basic-long.cs: Add a new test.
2291
2292 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2293
2294         * mini.h: Add synchronization note for the managed counter-part.
2295
2296         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
2297         returns the simd caps of the current cpu.
2298
2299 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
2300
2301         * basic-simd.cs: Remove Console.WriteLine.
2302
2303 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2304
2305         * basic-simd.cs: New tests for Vector2ul.
2306
2307 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2308
2309         * simd-intrinsics.c: Add new vector type Vector2ul.
2310
2311 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         * basic-simd.cs: New tests for Vector2l.
2314
2315 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2316
2317         * cpu-x86.md: Add long version of most packed int ops.
2318
2319         * mini-ops.h: Same.
2320
2321         * mini-x86.h: Same.
2322
2323         * simd-intrinsics.c: Add new vector type Vector2l.
2324
2325 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
2326
2327         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
2328
2329         * simd-methods.h: Remove SN_op_BitwiseXor.
2330
2331 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
2334         alignment.
2335
2336 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2337
2338         * basic-simd.cs: Test for Vector2d.
2339
2340         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
2341         value.
2342
2343 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2344
2345         * cpu-x86.md: Add double version of all packed float ops.
2346
2347         * mini-ops.h: Same.
2348
2349         * mini-x86.h: Same.
2350
2351         * simd-intrinsics.c: Add new vector type Vector2d.
2352
2353         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
2354
2355         * simd-methods.h: Add Duplicate.
2356
2357 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
2358
2359         * basic-simd.cs: Test for packing with signed saturation.
2360
2361 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
2364         found in the TYPESPEC table.
2365
2366 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
2369         too.
2370
2371         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
2372
2373         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
2374         instead of the RVA, since the RVA can be changed by tools like the cil 
2375         stripper.
2376
2377         * method-to-ir.c (mono_method_to_ir2): Ditto.
2378
2379         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
2380         (deserialize_variable): Ditto.
2381
2382 2008-10-25  Martin Baulig  <martin@ximian.com>
2383
2384         * debug-mini.c (write_variable): Use
2385         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
2386
2387 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * cpu-x86.md: Add unsigned variants of packd and packw.
2390
2391         * mini-ops.h: Same.
2392
2393         * mini-x86.h: Emit the right instruction for packd and packw.
2394         Add unsigned variants of packd and packw.
2395
2396         * simd-intrinsics.c: Packd and packw were used in place of their
2397         unsigned variants. Change that.
2398         Add intrinsics for (Signed)PackWithSignedSaturation.
2399
2400         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
2401
2402 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2403
2404         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
2405
2406 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2407
2408         * mini-ops.h: Remove dword packed add/sub with saturation ops.
2409
2410         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
2411
2412         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
2413         sse instructions.
2414
2415         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
2416
2417 2008-10-24  Mark Probst  <mark.probst@gmail.com>
2418
2419         * method-to-ir.c, mini.c: Special casing for the synchronized
2420         wrapper for the ldtoken+GetTypeFromHandle case.
2421
2422 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * mini.c (mono_replace_ins): Move this to branch-opts.c.
2425
2426         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
2427         created/split bblocks.
2428
2429 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2430
2431         * mini-ops.h: Add packed signed mul high.
2432         
2433         * cpu-x86.md: Same.
2434
2435         * mini-x86.c (mono_arch_output_basic_block): Same.
2436
2437         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
2438
2439         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
2440
2441 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
2442
2443         * basic-simd.cs: Tests for Vector16sb.
2444
2445 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
2448
2449 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
2450
2451         * mini-ops.h: Add packed signed min, max and compare greater.
2452         
2453         * cpu-x86.md: Same.
2454
2455         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
2456         saturation.
2457
2458         * simd-methods.h: Add CompareGreaterThan.
2459
2460         * simd-methods.h: Remove CompareEquals.
2461
2462         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
2463
2464         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
2465
2466         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
2467         CompareEqual.
2468
2469 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * basic-simd.cs: Fix tests due to change in the API.
2472
2473 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
2476
2477 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
2478
2479         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
2480
2481         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
2482         inst_offset as this has invalid values for LDADDR.
2483
2484 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
2487
2488         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
2489
2490 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
2493         for accessing field->data.
2494
2495 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
2498
2499 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
2500
2501         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
2502
2503         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
2504
2505 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
2506
2507         * dominators.c (mono_compute_natural_loops): Allocate GList enties
2508         from the cfg mempool.
2509
2510 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
2511
2512         * basic-simd.cs: Tests for new methods in Vector8us.
2513
2514 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * mini-ops.h: Add multiply and store high.
2517         
2518         * cpu-x86.md: Same.
2519
2520         * mini-x86.c (mono_arch_output_basic_block): Same.
2521
2522         * simd-methods.h: Same.
2523
2524         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
2525         and CompareEqual.
2526
2527 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
2530         mono_class_setup_vtable ().
2531
2532         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
2533         mono_class_get_vtable_entry () for accessing klass->vtable.
2534
2535         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
2536
2537         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
2538         found.
2539
2540         * method-to-ir.c (mono_save_token_info): Don't save references made from
2541         wrappers.
2542
2543         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
2544         of generic instances.
2545
2546         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
2547
2548 2008-10-19  Mark Probst  <mark.probst@gmail.com>
2549
2550         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
2551         OP_JMP depends on the method signature.  Calculate it properly.
2552
2553 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
2554         
2555         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
2556         called directly.
2557
2558         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
2559         instances.
2560         (emit_extra_methods): Add another table mapping method indexes to 
2561         offsets in the extra_method_info table.
2562
2563         * mini.h: Bump AOT file format version.
2564         
2565         * aot-runtime.c: Merge most of the code from mono_aot_get_method
2566         and mono_aot_get_method_from_token () into one function.
2567
2568 2008-10-19  Mark Probst  <mark.probst@gmail.com>
2569
2570         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
2571         separate counter.
2572
2573 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
2576         methods.
2577
2578         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
2579         disable_aot.
2580
2581         * mini.c (mono_patch_info_equal): Compare the generic context as well.
2582
2583         * mini.h: Bump aot file format version.
2584
2585         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
2586         AOT file can contain native code for methods which are not in the METHOD
2587         table. Generate code for non-sharable generic instances of generic methods
2588         found in the METHODSPEC table.
2589         
2590         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
2591         encoding generic type handles.
2592
2593         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
2594         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
2595
2596         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
2597         macros + MONO_ADD_INS.
2598
2599         * mini.c (mono_jump_info_token_new2): New function which takes a generic
2600         context as well.
2601
2602         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
2603
2604         * mini.h: Bump aot file format version.
2605
2606         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
2607
2608 2008-10-17  Mark Probst  <mark.probst@gmail.com>
2609
2610         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
2611         platforms, with definable stack alignment value.  Set to 16 now
2612         for all platforms.
2613
2614         * mini.c, mini.h, driver.c: Command line option for disabling
2615         stack alignment.
2616
2617 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
2618
2619         * basic-simd.cs: Tests for new methods in Vector4ui.
2620
2621 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
2622
2623         * mini-ops.h: Add packed int shuffle.
2624         
2625         * cpu-x86.md: Same.
2626
2627         * mini-x86.c (mono_arch_output_basic_block): Same.
2628
2629         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
2630         extract mask, max, min, shuffle.
2631
2632         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
2633
2634 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
2635
2636         * basic-simd.cs: Tests for new methods in Vector8us.
2637
2638 2008-10-17  Mark Probst  <mark.probst@gmail.com>
2639
2640         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
2641         RuntimeTypeHandle, not a TypedReference.
2642
2643 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
2644
2645         * simd-intrinsics.c: remove relocations.
2646
2647 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
2650         optimizations from the x86 backend.
2651
2652 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
2653
2654         * simd-methods.h, simd-intrinsics.c: debloat method names and
2655         prepare for no relocations.
2656
2657 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
2658
2659         * mini-ops.h: Add packed min/equal and sum of absolute differences.
2660         
2661         * cpu-x86.md: Same.
2662
2663         * mini-x86.c (mono_arch_output_basic_block): Same.
2664
2665         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
2666         extract mask, max, min and sum of absolute differences.
2667
2668         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
2669         method name.
2670
2671 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
2672
2673         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
2674         Renamed one test for consistency.
2675
2676 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
2677
2678         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
2679         fix to the code that deal with other blocks.
2680
2681 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
2682
2683         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
2684
2685 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
2686
2687         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
2688         that deals with vreg interference. Explicitly check for OP_LDADDR to be
2689         able to process the source reg.
2690
2691 2008-10-16  Martin Baulig  <martin@ximian.com>
2692
2693         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
2694
2695         * inssel.brg: Add `OP_HARD_NOP'.
2696
2697         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
2698
2699         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
2700         `OP_HARD_NOP' instruction when running inside the debugger.
2701
2702         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
2703         `OP_HARD_NOP' instruction when running inside the debugger.
2704
2705 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
2706
2707         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
2708         now works. The issue with the regalloc tripping up no longer
2709         happens.
2710
2711         * simd-intrinsics.c (load_simd_vreg): Same.
2712
2713 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
2714         
2715         * basic-simd.cs: Tests for new Vector8ui methods.
2716
2717 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
2718
2719         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
2720         only for type. This fixes crashes where MonoInst::klass is checked
2721         for ops of type != VTYPE or OBJ.
2722
2723         * simd-intrinsics.c (load_simd_vreg): Same.
2724
2725 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
2726
2727         * mini-ops.h: Add ops for packed shuffle/max/avg and
2728         extract mask.
2729         
2730         * cpu-x86.md: Same.
2731
2732         * mini-x86.c (mono_arch_output_basic_block): Same.
2733
2734         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
2735         extract mask.
2736
2737         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
2738         to emit extract mask op.
2739
2740         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
2741         to emit word shuffles.
2742
2743 2008-10-15  Mark Probst  <mark.probst@gmail.com>
2744
2745         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
2746         the largest alignment needed by a variable, but at least
2747         sizeof(gpointer).
2748
2749 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * basic-simd.cs: Tests for the fixes in the last commit.
2752
2753 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
2754
2755         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
2756         no longer handles STACK_PTR input.
2757
2758         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
2759
2760         * simd-intrinsics.c (load_simd_vreg): New function that works like 
2761         get_simd_vreg   but handles STACK_PTR input.
2762
2763         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
2764         as the input can be an arbitrary pointer.
2765
2766         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
2767         LDADDR local optimization directly otherwise use a store op.
2768
2769 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
2770
2771         * basic-simd.cs: Tests for dup low and dup high.
2772
2773 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * mini-ops.h: Add dup low and dup high ops.
2776         
2777         * cpu-x86.md: Same.
2778
2779         * mini-x86.c (mono_arch_output_basic_block): Same.
2780
2781         * simd-intrinsics.c (vector4f_intrinsics): Same.
2782
2783 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
2784
2785         * basic-simd.cs: Tests for recently added functionality.
2786
2787 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
2788
2789         * mini-ops.h: Add remaining sse1 fp ops.
2790         
2791         * cpu-x86.md: Add remaining sse1 fp ops.
2792
2793         * mini-x86.c (mono_arch_output_basic_block): Same.
2794
2795         * mini.h: Add enum for simd FP compare conditions.
2796
2797         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
2798
2799         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
2800         so the backed can generate the appropriate op.
2801
2802 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
2803         This patch squeese one more byte from the SimdIntrinsc struct.
2804
2805         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
2806         a a shift amount intead of simply or'ing it.
2807
2808         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
2809
2810         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
2811         byte so we can have an aditional flags field without increasing struct size.
2812
2813         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
2814         against the simd_supported_versions bitmask.
2815
2816         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
2817
2818 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
2819
2820         * mini.c: remove rawbuffer code (the only use here is unsafe because
2821         it takes locks during signal handling and the kernel now provides much
2822         better info in proc/pid/smaps these days).
2823
2824 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
2827         OP_X86_PUSH_OBJ. Fixes #434620.
2828
2829         * objects.cs: Add a test.
2830         
2831 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
2832
2833         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
2834         that the packuswb/packusdw don't work with unsigned numbers for what
2835         would be negative numbers in signed format.
2836
2837         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
2838         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
2839
2840         * mini-ops.h: Add doubleword forms of many ops and packing ones.
2841
2842         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
2843
2844         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
2845
2846         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
2847
2848         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
2849         add more ops.
2850
2851         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
2852         version as the enum in mini.h.
2853
2854         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
2855         for sse3 ops, check the simd_version field if present. This way the code
2856         works with all versions of sse.
2857
2858 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2859
2860         * simd-intrinsics.c: Fixed intrinsic name typo.
2861
2862         * mini.h: Added missing simd exported function.
2863
2864         * basic-simd.cs: Added tests for Vector4ui.
2865         Fixed broken test for Vector16b.
2866
2867 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
2870         the max length to 64.
2871
2872 2008-10-10  Mark Probst  <mark.probst@gmail.com>
2873
2874         * method-to-ir.c: Only do the fast virtual generic method call for
2875         non-wrapper methods.
2876
2877         * mini.h, mini-trampolines.c: The new generic virtual remoting
2878         trampoline handles virtual method calls via the vtable (as done by
2879         the fast virtual generic method calls) to remoting proxies.
2880
2881         * mini.c (mono_jit_create_remoting_trampoline): For generic
2882         methods reate a generic virtual remoting trampoline.
2883
2884         * mini-amd64.h: Enable fast virtual generic method calls again.
2885
2886 2008-10-10  Mark Probst  <mark.probst@gmail.com>
2887
2888         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
2889         restore registers when doing tail calls.
2890
2891 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2892
2893         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
2894         Vector4ui.
2895
2896 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2897
2898         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
2899
2900 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2901
2902         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
2903
2904 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2905
2906         * basic-simd.cs: Retrofit for API changes.
2907
2908 2008-10-10  Mark Probst  <mark.probst@gmail.com>
2909
2910         * mini-ppc.c: Handle integer stack arguments for tail calls.
2911
2912 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2913
2914         * optflags-def.h: Removed sse3 optimization.
2915
2916         * driver.c: Same.
2917
2918         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
2919         sse3.
2920
2921         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
2922
2923         * mini.h: Added enumeration with simd versions.
2924
2925         * simd-intrinsics.c (emit_intrinsics): Use the new static var
2926         for detecting SSE3.
2927
2928         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
2929
2930         * mini.c (mini_init): Call mono_simd_intrinsics_init.
2931
2932 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2933
2934         * basic-simd.cs: Added tests for Vector8u and Vector16u.
2935
2936         * basic-simd.cs: Fixed test naming.
2937
2938 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2939
2940         * mini-ops.h: Added ops for packed and saturated math, shifts
2941         and packing/unpacking.
2942
2943         * cpu-x86.md: Added descriptors for the above ops.
2944
2945         * mini-x86.c: Added code to emmit the above ops.
2946
2947         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
2948
2949 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * aot-compiler.c (compile_method): Enable AOT for generic code.
2952
2953         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
2954
2955 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
2956
2957         * mini.c: add a workaround for a common screwup that ends up blamed
2958         to mono (other processes blocking signal delivery).
2959
2960 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
2963         in the LDFLD/STFLD opcodes. Fixes #432673.
2964
2965         * iltests.il.in: Add a new test.
2966
2967 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
2968
2969         * mini-arm.c: attach the thread in unmanaged->managed transitions
2970         using delegates (bug #433148).
2971
2972 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974        * basic-simd.cs: Use new ShuffleSel constants.
2975
2976 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
2977
2978         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
2979
2980         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
2981         only disable simd intrinsics if no sse2 is detected.
2982
2983         * optflags-def.h: Added sse3.
2984
2985         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
2986         is disabled.
2987
2988 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
2991         when adding delegate-invoke wrappers.
2992
2993 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * Makefile.am: Reenable the simd tests.
2996
2997 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
2998
2999         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3000           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3001           other vreg is allocated to that hreg.
3002
3003         Contributed under MIT/X11 license.
3004
3005 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3008         yet checked in.
3009
3010 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         * basic-simd.cs: New test suite for SIMD intrinsics.
3013
3014         * Makefile.am: Added new tests.
3015
3016 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3017
3018         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3019
3020         * mini-ops.h: Same.
3021
3022         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3023
3024         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3025         using SSE2 aware opcodes.
3026
3027         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3028         is enabled, this code path is only reachable if conversion ops are emmited after
3029         mono_method_to_ir.
3030
3031         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
3032
3033         This optimization saves 6 bytes per conversion against the old version.
3034
3035 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * aot-compiler.c (compile_method): Don't skip methods referencing 
3038         generic methods without a corresponding entry in token_info_hash, since
3039         encode_method_ref () can handle all generic methods now.
3040
3041         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
3042         generic context is set.
3043         
3044         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
3045         generic sharing of LDTOKEN.
3046
3047 2008-10-06  Mark Probst  <mark.probst@gmail.com>
3048
3049         * mini-amd64.h: Temporarily disabled fast virtual generic method
3050         calls because it breaks the System.Runtime.Remoting tests.
3051
3052 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
3055
3056         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
3057         so inlining actually works.
3058         (check_inline_caller_method_name_limit): Ditto.
3059
3060 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
3061
3062         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
3063         64 bit safety (from Olaf Hering and Andreas Färber).
3064
3065 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3066         
3067         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
3068         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
3069         unused virtual call support code.
3070
3071         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
3072         
3073         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
3074         which can't use aot trampolines.
3075         (decode_patch): Don't create aot trampolines for methods which can't use
3076         them.
3077
3078         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
3079         use aot trampolines.
3080
3081         * mini.h: Bump AOT image format version.
3082         
3083 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
3086         to save_token_info () since cmethod is inflated for constrained calls.
3087
3088         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
3089
3090 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3091
3092         * Makefile.am: Add build rules for ppc64.
3093         This avoids the build failing at pedump with unresolved symbols
3094         due to lack of arch_sources. Instead it will now fail earlier
3095         due to lack of cpu-ppc64.md.
3096
3097         Contributed under MIT/X11 license.
3098
3099 2008-10-04  Mark Probst  <mark.probst@gmail.com>
3100
3101         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
3102         tail calls.
3103
3104         * iltests.il.in: Add test case for tail call with many arguments.
3105
3106 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
3109         to the fast virtual generic method code until the aot case is fixed.
3110
3111 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3112
3113         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
3114
3115 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3116
3117         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
3118         thunks.
3119
3120 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3121         
3122         * simd-intrinsics.c: Forgot to add this one.
3123
3124         * mini-codegen.c: Fix macro in case SIMD is not supported.
3125
3126 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3127         
3128         This patch land initial JIT support for simd intrinsics.
3129
3130         * mini-x86.h: Added new define to make --enable_minimal work on x86.
3131
3132         * Makefile.am: Added simd-intrinsics.c
3133
3134         * simd-intrinsics.c: New file with simd instrinsic related
3135         code.
3136
3137         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
3138
3139         * cpu-x86.md: Add simd related instructions.
3140
3141         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
3142
3143         * driver.c: Added two new --regression variants.
3144
3145         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
3146
3147         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
3148
3149         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
3150         extract some complicated logic to helper functions.
3151
3152         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
3153
3154         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
3155
3156         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
3157         the specialized simplification pass.
3158
3159         * method-to-ir.c (mono_spill_global_vars): Use new macro.
3160
3161         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
3162
3163         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
3164         table.
3165
3166         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
3167         if MONO_ARCH_NEED_SIMD_BANK is defined.
3168
3169         * mini-ops.h: Added the new simd ops.
3170
3171         * mini-x86.c: Added mono_arch_xregname.
3172
3173         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
3174
3175         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
3176
3177         * mini-x86.h: Define simd related MONO_ARCH macros.
3178
3179         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
3180
3181         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
3182
3183         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
3184         MONO_CLASS_IS_SIMD to deal with simd related IR.
3185
3186         * mini.h (MonoInst): Added spill_var to the backend union.
3187
3188         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
3189
3190         * mini.h: Added forward declarations of the new simd fuctions.
3191
3192         * optflags-def.h: Added new optimization names SIMD.
3193
3194         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
3195
3196         * regalloc.h: Added support for working with 3 register banks.
3197
3198         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
3199
3200         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
3201
3202 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
3203
3204         * mini-exceptions.c: remove 64 bit related ifdef clutter.
3205
3206 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
3209         instead of one on 64 bit systems.
3210
3211         * method-to-ir.c: Remove unused includes.
3212
3213 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
3216         cfg->used_int_regs, since the two are different on arm.
3217
3218 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3219
3220         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
3221         mono_method_get_vtable_index() to get the vtable index.
3222
3223 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3224
3225         * method-to-ir.c (mono_method_to_ir2): Don't create native
3226         wrappers for array methods, because they're never called (and if
3227         they were called they wouldn't work).
3228
3229 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3230
3231         * method-to-ir.c (mono_method_to_ir2): Array methods are
3232         special-cased and must not be invoked indirectly via the (M)RGCTX
3233         when generic sharing is turned on.  Fixes #431413.
3234
3235 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3236
3237         * method-to-ir.c: When generic sharing is active, call
3238         non-interface virtual generic methods via the standard trampoline.
3239
3240         * mini-trampolines.c: Handle virtual generic shared methods.
3241
3242         * mini.h, mini-x86.c, mini-x86.h: New argument for
3243         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
3244         method thunks and which is the trampoline to call if the lookup
3245         fails.  Enable the virtual generic method thunk for x86.
3246
3247         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
3248         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
3249         argument but assert that it's NULL, because these archs don't yet
3250         implement the virtual generic method thunk.  Changes in the IMT
3251         thunk data structures.
3252
3253 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * aot-compiler.c (emit_globals): Avoid invalid characters in
3256         the static linking symbol.
3257
3258         * objects.cs: Add a test for the range check optimization. Fix warnings.
3259
3260         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
3261         optimization from the current JIT.
3262
3263         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
3264         later in decompose_array_access_opts () to allow more optimizations.
3265
3266         * method-to-ir.c (mono_handle_soft_float): Rename this to 
3267         mono_decompose_soft_float () for consistency.
3268
3269         * mini-ops.h: Fix arguments of OP_STRLEN.
3270
3271         * method-to-ir.c (save_cast_details): Extract the cast details saving code
3272         into a separate function.
3273         (reset_cast_details): Ditto.
3274         (handle_unbox): Save cast details. Fixes #431254.
3275
3276         * method-to-ir.c: Remove some obsolete FIXMEs.
3277
3278 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3279
3280         * ir-emit.h (alloc_dreg): Write a warning before crashing.
3281
3282 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3283
3284         * mini-codegen.c: More work on macros to make them
3285         ready for multiple regbanks.
3286
3287 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3288
3289         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
3290
3291         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
3292
3293 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3294
3295         * mini-codegen.c (mono_spillvar_offset): Proper support for
3296         multiple regbanks.
3297
3298 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
3301         the stack overflow changes.
3302
3303 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3304
3305         * mini-codegen.c: Make all bank macros depend on reg_bank.
3306
3307         * mini-codegen.c (mono_local_regalloc): Make free mask
3308         initialization regbank aware.
3309
3310 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3311
3312         * mini-codegen.c (mono_local_regalloc): Extract callee
3313         mask selection to a function and make it regbank aware.
3314
3315 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
3316
3317         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
3318         code to deal with many regbanks.
3319
3320 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
3321
3322         * mini-codegen.c: More fp->regbank changes.
3323
3324 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
3325
3326         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
3327         of a hardcoded constant.
3328
3329 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
3330
3331         * method-to-ir.c (type_from_stack_type): Fix typo.
3332
3333 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3334
3335         * mini-ia64.c (emit_move_return_value): Convert float return values to
3336         double.
3337
3338         * objects.cs: Add a new test.
3339         
3340         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
3341         VARARG methods to fix an assert later.
3342
3343         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
3344         end so it at least compiles.
3345
3346 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
3349
3350 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
3351
3352         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
3353         optimization to a new function (emit_optimized_ldloca_ir) and enable
3354         it for both ldloca and ldloca_s.
3355
3356 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
3359         gshared CASTCLASS code.
3360
3361         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
3362         amd64, where the libc stack unwinder encounters stack frames referring to
3363         native code in unmapped memory.
3364
3365         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
3366         sharing.
3367
3368         * generics.cs: Add new test.
3369
3370 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
3373         add a check that one of the ARM_FPU_ constants is defined.
3374
3375         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
3376         
3377         * mini-exceptions.c: Fix build on non-altstack platforms.
3378
3379         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
3380         sharing of vtypes.
3381
3382         * ir-emit.h: Add a comment to NEW_PCONST.
3383
3384         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
3385
3386         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
3387
3388         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
3389         after the changes to MonoJitDomainInfo.
3390
3391 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3392
3393         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
3394
3395 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3396
3397         * mini-ppc.c: Compiler warning fixes.
3398
3399 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3400
3401         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
3402         for pinvokes.
3403
3404 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3405
3406         * exceptions-ppc.c, mini-ppc.h: Compile
3407         mono_arch_handle_altstack_exception() on Darwin, too.
3408
3409 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3410
3411         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
3412         work on archs which don't have generic sharing implemented, only
3413         without the vtable_arg.
3414
3415 2008-09-26  Mark Probst  <mark.probst@gmail.com>
3416
3417         * mini.c: Added comment explaining why delegate ctor icall
3418         wrappers are compiled.
3419
3420 2008-09-26  Mark Probst  <mark.probst@gmail.com>
3421
3422         * mini.c: Don't produce trampolines to delegate ctor icall
3423         wrappers but compile them upfront.
3424
3425 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3426
3427         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
3428         runtime-set function when going back to managed code. Currently this
3429         is used to set back the protection on the soft ovf pages and/or to
3430         throw the stack overflow exception that happened in unmanaged code.
3431
3432 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3433
3434         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
3435         runtime-set function when going back to managed code. Currently this
3436         is used to set back the protection on the soft ovf pages and/or to
3437         throw the stack overflow exception that happened in unmanaged code.
3438
3439 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3440
3441         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
3442         the support code for restoring stack protection after stack overflows
3443         that happen in unmanaged code. Don't set the exec permission on the
3444         soft overflow area.
3445
3446 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
3449         delegate->method_ptr is set. Fixes #428054.
3450
3451 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * tests.cs: Rename to ratests.cs.
3454
3455         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
3456         emit_get_rgctx_... functions.
3457
3458 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3459
3460         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
3461
3462 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3463
3464         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
3465         before asserting that method is sharable.
3466
3467 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3468
3469         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
3470         whether method needs a static RGCTX wrapper used instead of
3471         complex conditions.
3472
3473         * generic-sharing.c, mini.h: A few functions moved to
3474         metadata/generic-sharing.c.
3475
3476 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3477
3478         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
3479         Generic code sharing for value types, which essentially means
3480         treating value type methods like static methods.  The RGCTX is
3481         passed in the same way.
3482
3483 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
3486         opcode when creating multi-dimensional arrays of open types.
3487
3488         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
3489         open generic types.
3490
3491         * generics.cs: Add a test.
3492
3493         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
3494
3495 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
3498
3499         * mini.c (mini_method_compile): Set it when running under the debugger. 
3500
3501         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
3502         vreg optimization if the flag is set.
3503
3504         * driver.c (mono_main): Add --attach= option to pass options to
3505         the attach agent.
3506
3507         * mini.c (sigquit_signal_handler): Start the attach agent.
3508
3509         * ssapre.c: Disable this to save space since it is not yet ported to
3510         linear IR.
3511
3512         * regalloc2.c: Disable this to save space.
3513
3514         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
3515
3516 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3517
3518         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
3519         the -v option useful again.
3520
3521 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * mini-amd64.c (mono_arch_output_basic_block): Add support for
3524         --break-at-bb.
3525
3526         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
3527         arrays of arrays. Fixes #428406.
3528
3529         * method-to-ir.c (mini_emit_castclass): Ditto.
3530
3531         * objects.cs: Add new test.
3532         
3533 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
3534
3535         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
3536         was wrong at it choked against target_type_is_incompatible for byref types.
3537
3538 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
3541         places.
3542
3543 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
3544
3545         * mini-exceptions.c: update a few more exceptions-related counters.
3546
3547 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3548
3549         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
3550         new functions to allocate from persistent mempools.
3551
3552 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
3555         multiple register banks in the future.
3556
3557         * mini-codegen.c (mono_local_regalloc): Fix a warning.
3558
3559 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
3560
3561         * mini.c (type_to_eval_stack_type): Remove duplicated function.
3562
3563         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
3564
3565         * mini.h: Export type_to_eval_stack_type.
3566
3567         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
3568         is only ins->klass of byref types.
3569
3570 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3571
3572         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
3573         (mini_emit_memcpy2): Ditto.
3574
3575         * mini-amd64.c: Fix a warning.
3576
3577 2008-09-21  Mark Probst  <mark.probst@gmail.com>
3578
3579         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
3580         linking.
3581
3582 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
3583
3584         * method-to-ir.c: Extract stloc micro-optimization to a
3585         function and apply it to all cases.
3586
3587 2008-09-19  Mark Probst  <mark.probst@gmail.com>
3588
3589         * method-to-ir.c: Don't fail generic code sharing in cases we
3590         already support.
3591
3592 2008-09-18  Mark Probst  <mark.probst@gmail.com>
3593
3594         * mini-ppc.c: Handle structs in tailcalls on Darwin.
3595
3596 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3597
3598         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
3599         implementation.
3600
3601 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
3602
3603         * trace.c: make tracing more useful and correct, with per-thread
3604         id and indent info.
3605
3606 2008-09-15  Mark Probst  <mark.probst@gmail.com>
3607
3608         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
3609         doing a method call and the argument is an R4.
3610
3611 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
3612
3613         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
3614         generic methods.
3615
3616 2008-09-13  Mark Probst  <mark.probst@gmail.com>
3617
3618         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
3619
3620 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
3623         (MONO_JUMP_TABLE_FROM_INS): Ditto.
3624
3625 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * driver.c: Add a --agent argument (not supported yet) to load managed
3628         agent assemblies before loading the main assembly, similarly to how the
3629         Java VM handles agents.
3630
3631 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3632
3633         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
3634         function to do stack layout of local variables.
3635
3636 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3637
3638         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
3639         calculation.
3640
3641 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
3644         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
3645         JIT if DISABLE_JIT is defined.
3646
3647         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
3648         defined.
3649
3650 2008-09-10  Mark Probst  <mark.probst@gmail.com>
3651
3652         * iltests.il.in: Disable the fconv test on PPC (the result is
3653         undefined according to ECMA).
3654
3655 2008-09-10  Mark Probst  <mark.probst@gmail.com>
3656
3657         * iltests.il.in: Enable tail call tests for PPC.
3658
3659         * mini.h: Add variable for storing incoming valuetype argument
3660         addresses for tail calls.
3661
3662         * mini-ppc.c: Implement valuetype arguments and return values for
3663         tailcalls on Linux.
3664
3665 2008-09-09  Mark Probst  <mark.probst@gmail.com>
3666
3667         * mini-ppc.c: Partially implement tail calls (struct arguments and
3668         return values not supported).
3669
3670         * method-to-ir.c: Enable tail calls on PPC.
3671
3672 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
3675         runtime-invoke wrappers to work around the problem of them getting
3676         assigned to a random class.
3677
3678         * aot-runtime.c (mono_aot_get_method): Ditto.
3679         
3680 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
3683         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
3684
3685 2008-09-07  Mark Probst  <mark.probst@gmail.com>
3686
3687         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
3688         until they're implemented properly.
3689
3690         * exceptions-ppc.c: Use arch-independent exception-handling code
3691         instead of custom one.
3692
3693         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
3694         for Linear IR.
3695
3696         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
3697
3698         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
3699         applies when __powerpc__ is defined.
3700
3701 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
3704         methods to their code to avoid computing the full name of wrappers and
3705         doing a lookup in a string hash table.
3706
3707 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
3708
3709         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
3710         we identify bblocks before method_to_ir () is ran.
3711
3712         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
3713         Also avoid optimizing branches pointing to themselves.
3714
3715         * mini.c (mini_method_compile): Ditto. Fixes #422947.
3716
3717 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3718
3719         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
3720
3721 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
3724         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
3725         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
3726         'buf'.
3727
3728         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
3729         jumped to the same entry in plt_jump_table.
3730
3731 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
3732
3733         * method-to-ir.c (initialize_array_data): Handle field with RVA from
3734         dynamic images.
3735
3736 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
3739         other assignment can be if converted. Saves 1.5% on corlib size and fixes
3740         #421807.
3741
3742 2008-08-29  Geoff Norton  <gnorton@novell.com>
3743
3744         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
3745         segment, and doesn't properly handle .space as .text.  Fixes
3746         AOT Mach/ARM
3747
3748 2008-08-29  Geoff Norton  <gnorton@novell.com>
3749
3750         * mini.c: Disable the mach exception handler when running on 
3751         ARM
3752
3753 2008-08-29  Geoff Norton  <gnorton@novell.com>
3754
3755         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
3756         globals on Darwin/ARM
3757
3758 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
3761         since too many things depend on it. Instead, call 
3762         mono_runtime_set_no_exec ().
3763         
3764         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
3765         the new JIT.
3766
3767         * aot-compiler.c: Add an 'asm-only' AOT option.
3768
3769         * mini.c: Avoid initializing the runtime when doing AOT compilation.
3770                 
3771         * aot-compiler.c (compile_method): Disable gshared support for now as it
3772         doesn't yet work.
3773
3774 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
3775
3776         * mini-amd64.h : Fix a compiler warning.
3777
3778         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
3779           Changed to use a callback function to retrieve the unwind info.
3780           This avoids problems observed when code blocks were removed by
3781           unloading an app domain.
3782
3783         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
3784           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
3785           to work properly.
3786
3787         Contributed under MIT/X11 license.
3788
3789 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
3790
3791         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
3792           case to keep the stack aligned to 8.
3793
3794         Contributed under MIT/X11 license.
3795
3796 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
3799         avoid repeated linear searches.
3800
3801 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
3804         methods it can't handle.
3805         
3806         * aot-compiler.c (add_method): Avoid adding a method twice.
3807         (add_wrappers): Add runtime invoke wrappers for all methods.
3808
3809         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
3810         function to create an aot-compatible version of this trampoline.
3811
3812         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
3813
3814 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
3817
3818         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
3819         with a generic sharing failure.
3820
3821         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
3822
3823         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
3824         CEE_RETHROW. Fixes #419634.
3825
3826         * mini.c (mono_method_to_ir): Ditto.
3827
3828         * exceptions.cs: Add a new test.
3829         
3830         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
3831         to mono_type_stack_size_internal () since some callers might not pass in
3832         an rgctx.
3833
3834         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
3835         instrument_prolog. Fixes #419878.
3836
3837         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
3838         doubles in soft float mode volatile.
3839
3840 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
3841
3842         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
3843
3844         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
3845         to handle soft float correctly.
3846
3847         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
3848         the fast path.
3849
3850         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
3851
3852         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
3853         to sp, since the generics catch code requires it.
3854
3855         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
3856         copying.
3857
3858         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
3859         mono_arch_emit_imt_argument ().
3860
3861         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
3862
3863         * mini-arm.c tramp-arm.c: Generic sharing updates.
3864
3865 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * mini-arm.c: Fix the arm build.
3868
3869         * generic-sharing.c (mini_type_get_underlying_type): New helper function
3870         handling enums, generic instances and generic sharing.
3871         (mini_type_stack_size_full): Ditto.
3872
3873         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
3874         
3875         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
3876
3877         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
3878
3879         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
3880         trampolines.
3881
3882         * mini-arm.c: Various small generic sharing changes.
3883
3884         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
3885         this for x86.
3886         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
3887         custom code.
3888
3889         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
3890         helper function to return a generic class init trampoline.
3891
3892         * method-to-ir.c mini.c: Use it.
3893         
3894         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
3895         arch-specfic function to return a generic class init trampoline.
3896
3897         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
3898         the GENERIC_CLASS_INIT custom code.
3899
3900         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
3901         a fatal error, not a sharing failure.
3902
3903         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
3904         needed.
3905
3906         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
3907         trampoline argument from MONO_ARCH_VTABLE_REG.
3908
3909         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
3910         order of the arguments to the C trampoline: pass 'slot' as the trampoline
3911         argument, and pass the vtable in VTABLE_REG.
3912
3913         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
3914         order of the arguments to the C trampoline: pass 'slot' as the trampoline
3915         argument, and pass the vtable in VTABLE_REG.
3916         (mono_arch_create_trampoline_code_full): Remove some special casing for
3917         the rgctx fetch trampoline.
3918
3919         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
3920         Fixes #419273.
3921
3922         * iltests.il: Add a test for it.
3923
3924 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
3927
3928         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
3929         no longer needed.
3930
3931         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
3932         use mono_jit_info_table_find () to avoid recursion.
3933         (mono_delegate_trampoline): Add a sync wrapper here.
3934
3935         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
3936         here.
3937
3938         * mini.c (mono_method_to_ir): Ditto.
3939         
3940         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
3941         add_sync_wrapper argument. Don't add a sync wrapper here.
3942         (mono_create_jump_trampoline): Don't add a sync wrapper here.
3943
3944         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
3945         
3946 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
3947
3948         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
3949           of nonvolatile registers back from MonoContext to CONTEXT.
3950
3951         Contributed under MIT/X11 license.
3952
3953 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
3954
3955         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
3956           arguments on Winx64 there are only 4 argument registers.  For this
3957           logic to work the last argument must be pulled from the stack.  
3958
3959         Contributed under MIT/X11 license.
3960
3961 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
3964
3965         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
3966         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
3967         encode/decode_method_ref ().
3968
3969         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
3970
3971         * aot-runtime.c (decode_patch): Ditto.  
3972
3973         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
3974         MONO_PATCH_INFO_METHOD.
3975
3976         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
3977         MonoGenericJitInfo.
3978
3979         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
3980         MonoGenericJitInfo.
3981
3982         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
3983
3984         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
3985         one from the caller.
3986
3987         * aot-runtime.c (decode_generic_inst): New function to decode and
3988         return a interned generic inst.
3989         (decode_klass_ref): Use it.
3990         (decode_method_ref): Ditto.
3991
3992         * aot-compiler.c (emit_exception_debug_info): Save 
3993         jinfo->has_generic_jit_info too.
3994
3995 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
3998
3999         * iltests.il.in: Add a test for fconv_to_i.
4000
4001         * liveness.c: Disable the liveness2 pass for now to save space.
4002
4003         * regalloc2.c: Include mempool-internals.h to fix warnings.
4004
4005         * aot-compiler.c (encode_method_ref): Encode the context of generic
4006         instance methods.
4007
4008         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4009         the context saved in the aot file.
4010
4011         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4012
4013         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4014
4015         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4016         volatile so they won't be optimized away.
4017
4018 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4019
4020         * ssa.c:
4021         * ssa2.c:
4022         * mini.c:
4023         * regalloc2.c:
4024         * dominators.c: Remove duplicated functions that now are in
4025         mempool-internals.h.
4026
4027 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * aot-compiler.c: Fix warnings.
4030
4031         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
4032
4033         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
4034
4035         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
4036         as the patch type.
4037
4038         * mini.c (mono_resolve_patch_target): Ditto.
4039         
4040         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
4041         (encode_klass_ref): Add support for encoding VARs/MVARs.
4042
4043         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
4044
4045         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
4046         the handling of the got entries into a separate 'decode_got_entry' function.
4047         Add support for RGCTX_FETCH.
4048
4049         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
4050         clobbered by the trampoline code.
4051
4052         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
4053         not clobbered by the indirect calling code.
4054
4055 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4056
4057         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
4058         to fix the build.
4059
4060 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4061
4062         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
4063         signature using the compilation mempool otherwise we would leak it.
4064
4065 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
4068         mono_emit_abs_call ().
4069
4070         * patch-info.h: Add GENERIC_CLASS_INIT.
4071
4072         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
4073
4074         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
4075         as their target as a near call.
4076
4077         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
4078         ABS handling code.
4079         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
4080
4081         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
4082         call to a runtime function described by a patch.
4083
4084         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
4085         mono_emit_abs_call, this has the advantage that the ABS handling code in
4086         mono_codegen () can handle them both, and can handle other stuff in the
4087         future without additional code.
4088
4089         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
4090         entry.
4091         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
4092         abs addresses.
4093
4094         * mini.h: Add missing bblock related prototypes.
4095
4096         * mini.h (MonoCompile): Remove unused reverse_inst_list and
4097         reverse_inst_list_len fields.
4098
4099         * mini.c: Refactor this file a bit by moving branch optimizations to 
4100         branch-opts.c.
4101
4102         * method-to-ir.c: Merge generic sharing changes missed earlier.
4103
4104         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
4105
4106         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
4107         shared patches. Process METHODCONST as a shared patch.
4108
4109         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
4110         as it crashes on the 2.0 mscorlib.
4111
4112         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
4113         to cause crashes.
4114         
4115         * aot-compiler.c: Use is_plt_patch () in a few additional places.
4116         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
4117         by IMT.
4118
4119         * aot-compiler.c: Reorganize the got handling code to be a bit more
4120         understandable.
4121
4122 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
4125         mono_patch_info_equals/hash, and use it to massively simplify
4126         get_plt_index ().
4127
4128         * mini.c (mono_patch_info_hash): Simplify this and add support for
4129         more patch types.
4130
4131         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
4132
4133         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
4134         handling code, since an offset is not enough to identify a trampoline.
4135
4136         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
4137
4138 2008-08-17  Mark Probst  <mark.probst@gmail.com>
4139
4140         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
4141
4142         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
4143
4144         * mini-ops.h: Argument and result types for OVF_CARRY ops.
4145
4146         * decompose.c: PPC decompositions for various ops.
4147
4148         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
4149
4150 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
4153         call the generic trampoline code using a call, instead of a jump, to
4154         remove some special casing from the generic trampoline code.
4155
4156         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
4157         (mono_codegen): Ditto.
4158
4159         * aot-compiler.c aot-runtime.c: Ditto.
4160
4161         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
4162
4163         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
4164         helper function to find the offset corresponding to a lazy fetch trampoline.
4165
4166         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
4167         when doing generic sharing.
4168
4169         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
4170         places.
4171         
4172         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
4173         mini-trampolines.c to be with the other trampoline creation functions.
4174
4175         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
4176         as it is equal to method->signature in most cases, add a 
4177         mono_emit_method_call_full variant which takes a signature and an imt
4178         argument as well.
4179
4180 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
4183         to this function, since it could be computed easily from the method 
4184         argument.
4185         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
4186         more.
4187
4188         * method-to-ir.c mini.c: Remove references to 
4189         compile_generic_method_wo_context.
4190
4191         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
4192         generic method calls.
4193         
4194         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
4195         dimensional non-szarrays.
4196
4197         * mini.c (mini_init): Register mono_array_new_1.
4198
4199         * jit-icalls.c (mono_array_new_1): New jit icall.
4200
4201         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
4202         pointing to the method.
4203
4204         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
4205         method addresses belonging to METHOD_JUMP patches in the 
4206         jump_target_got_slot_hash.
4207         (mono_aot_load_method): Ditto.
4208
4209         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
4210         METHOD_JUMP patches.
4211
4212         * mini.c (mini_create_jit_domain_info): New helper function which 
4213         initializes/frees domain->runtime_info.
4214         (mini_free_jit_domain_info): Ditto.
4215         (mini_init): Install the domain hook functions with the runtime.
4216
4217         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
4218         information maintained by the JIT.
4219
4220         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
4221         insertion into jump_table_hash into mono_codegen (), also implement proper
4222         locking.
4223
4224         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
4225         tail calls, it is already done by the aot code.
4226         
4227         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
4228         mechanism on amd64.
4229
4230         * iltests.il.in: Make the jmp test a bit more complex.
4231
4232         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
4233         generic instances which doesn't have a token.
4234
4235         * aot-runtime.c (decode_method_ref): Ditto.
4236         
4237         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
4238         can handle this case now.
4239         (handle_box): Ditto.
4240
4241 2008-08-15  Geoff Norton  <gnorton@novell.com>
4242
4243         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
4244         debugging check.
4245
4246 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4247
4248         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
4249         calling generic methods.
4250
4251         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
4252
4253         * aot-runtime.c (decode_patch_info): Ditto.
4254
4255         * mini.c (mono_resolve_patch_target): Ditto.
4256         
4257         * patch-info.h: Add METHOD_RGCTX.
4258
4259         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
4260
4261 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
4264         arguments in registers.
4265
4266         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
4267         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
4268
4269         * mini.c (mini_method_compile): Abort aot compilation for generic
4270         methods if generic sharing is disabled.
4271         
4272         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
4273         an mrgctx.
4274
4275         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
4276         requiring an mrgctx.
4277
4278         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
4279         store instructions when converting a vcall to a normal call.
4280
4281         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
4282         mono_arch_find_jit_info.
4283
4284 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
4287         avoid calling mono_method_full_name () for every method even if the
4288         env var is not set.
4289         (check_inline_caller_method_name_limit): Ditto.
4290
4291 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
4294         assemblies in one run.
4295
4296         * aot-compiler.c (mono_compile_assembly): Only print out a count of
4297         skipped methods if it is not 0.
4298
4299         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
4300
4301 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
4302
4303         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
4304           MONO_ARCH_HAVE_UNWIND_TABLE.
4305
4306         Contributed under MIT/X11 license.
4307
4308 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
4309
4310         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
4311           from default optimizaton list on Winx64.
4312
4313         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
4314
4315         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
4316           the LMF from the MonoJitTlsData structure.
4317
4318         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
4319
4320         Contributed under MIT/X11 license.
4321
4322 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4323
4324         * mini.c (sigsegv_signal_handler): Fix the build.
4325
4326         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
4327         assembly->aot_module.
4328
4329         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
4330         hash table. This simplifies and speeds up a lot of code, and fixes support
4331         for .netmodules.
4332
4333         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
4334         with the runtime.
4335
4336         * mini-exceptions.c: Ditto.
4337         
4338         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
4339         'native_offset' argument, since these are computed in the 
4340         mono_find_jit_info () function.
4341
4342         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
4343         is used by exceptions-ppc.c.
4344
4345         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
4346         mono_arch_find_jit_info ().
4347         
4348         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
4349         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
4350         generic code in mini-exceptions.c.
4351
4352 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
4355
4356         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
4357         
4358         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
4359         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
4360         called while holding the loader lock. Fixes #415608.
4361         (mono_aot_get_method_from_token_inner): Ditto.
4362
4363 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
4366         to reduce differences between this and the generic implementation in
4367         mini-exceptions.c.
4368         (ves_icall_get_frame_info): Ditto.
4369
4370         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
4371
4372         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
4373         longer neccesarry.
4374
4375         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
4376         mono_arch_get_call_filter () and make it non-static, for consistency with the
4377         other architectures.
4378
4379 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
4380
4381         * mini.c:
4382         * local-propagation.c:
4383         * mini-x86.c: Correct the name of arch defines.
4384
4385 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
4388         NO_EMULATE_LONG_SHIFT_OPS define.
4389
4390 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
4393         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
4394
4395         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
4396         MACH fixes. Merged from the 2.0 branch.
4397
4398         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
4399
4400         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
4401         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
4402
4403         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
4404
4405         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
4406         mono_marshal_get_native_wrapper () signature changes.
4407
4408 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4409
4410         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
4411         conversion bug under arm.
4412
4413 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4414
4415         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
4416
4417         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
4418         with overflow checking.
4419
4420 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4421
4422         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
4423         to the genmdesc.pl file
4424
4425 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
4426
4427         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
4428         arg_array in the soft-float versions of the LOAD/STORE macros.
4429
4430         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
4431         implementation.
4432
4433         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
4434
4435 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
4438         a float HFA. Fixes #413621.
4439
4440 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
4441
4442         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
4443         frame_size to args_size. Fixes build.
4444
4445 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
4446
4447         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
4448         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
4449
4450         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
4451         the stack are not unaligned. Fixes #413247.
4452         
4453 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
4454
4455         * mini.c: update jitted methods performance counters.
4456
4457 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4458
4459         * mini-exceptions.c: increase the exceptions thrown performance
4460         counter in mono_handle_exception ().
4461
4462 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
4465         can work with netmodules.
4466
4467 2008-07-28  Geoff Norton  <gnorton@novell.com>
4468
4469         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
4470         regression tests.
4471
4472 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
4475         correct place.
4476
4477 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
4478
4479         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
4480           The float param registers and other param registers must be the 
4481           same index on Windows x64.
4482
4483         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
4484           ArgValuetypeAddrInIReg argument case.  Setting the argument
4485           op to OP_VTARG_ADDR (OP_REGOFFSET)).
4486
4487         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
4488           variable computed above as the copy length for arguments of storage
4489           type ArgValuetypeAddrInIReg.
4490
4491         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
4492           ArgValuetypeAddrInIReg argument case.  This case will rely on
4493           mono_arch_emit_outarg_vt to emit the correct code later in the process.
4494
4495         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
4496           a 32 byte stack allocation for all calls.  We will omit the adjustment for
4497           jump and tail call instructoins as they do not follow the typical call behavior.
4498
4499         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
4500           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4501           local variable and pass the local variable by reference to the called method.
4502
4503         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
4504           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
4505           of a struct is passed in a register it must be saved with the other
4506           volatile argument on the stack.
4507
4508         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
4509           frame pointer the stack adjustment value must be saved to the unwind 
4510           info structure.
4511
4512         Contributed under MIT/X11 license.
4513
4514 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
4517         which got lost in the merge.
4518
4519 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4520
4521         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
4522         build.
4523
4524         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
4525         
4526         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
4527         icalls, since they won't be patched.
4528
4529         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
4530         different code sequence when running under valgrind to prevent some valgrind
4531         errors.
4532
4533         * iltests.il.in: Add new regression test.
4534
4535         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
4536         end with a throw.
4537
4538         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
4539         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
4540
4541         * iltests.il.in: Add new test.
4542
4543         * aot-compiler.c: Fix some warnings.
4544
4545         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
4546         Fixes #412494.
4547
4548 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4549
4550         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
4551         (mini_usage_jitdeveloper): Add a missing --wapi option.
4552
4553 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * mini-codegen.c: Simplify the is_fp macros.
4556         (free_up_ireg): Remove, use free_up_reg instead.
4557         (free_up_reg): Fix the fp case.
4558
4559 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
4560
4561         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
4562         lowered earlier.
4563
4564         * exceptions-x86.c: Merge some changes which seemed to have got lost
4565         in the linear-ir merge.
4566
4567         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
4568
4569         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
4570         long vreg volatile even if the variable was already created.
4571
4572         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
4573         volatile variables.
4574
4575 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
4578
4579         * mini.c (mono_jit_compile_method_inner): Add support for 
4580         MONO_EXCEPTION_BAD_IMAGE.
4581
4582         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
4583         mini_method_get_context () returns NULL. Fixes #356531.
4584
4585         * mini.c (mono_method_to_ir): Ditto.
4586         
4587         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
4588         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
4589
4590 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
4591
4592         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
4593         in the LDFTN implementation.
4594
4595 2008-07-25  Mark Probst  <mark.probst@gmail.com>
4596
4597         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
4598         code, patch calls to icalls, too, even if they're not in the
4599         shared generic code hash.  Fixes #411962.
4600
4601 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * cpu-x86.md: Increase the length of the fcall opcodes.
4604
4605         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
4606         calls returning floats.
4607
4608         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
4609         on NEWARR.
4610         
4611         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
4612         missed earlier.
4613
4614         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
4615         into the domain->method_code_hash.
4616
4617         * aot-compiler.c: Fix win32 build.
4618
4619         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
4620         
4621         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
4622         gshared NEWARR implementation.
4623
4624         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
4625
4626         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
4627         can be used outside of method_to_ir.
4628
4629         * mini.h (MonoCompile): Add arg_types field.
4630
4631         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
4632         
4633         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
4634         the values of the local arg_array and param_types array.
4635
4636 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4637
4638         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
4639         got accesses might only get generated later when NEWOBJ is decomposed.
4640         
4641         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
4642         looking up the native code of the target method when a delegate is called
4643         for the first time.
4644
4645         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
4646         optimization.
4647
4648         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
4649
4650         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
4651         AOT work on platforms without a working dlsym implementation.
4652
4653         * mini.h: Bump AOT image format version.
4654         
4655 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4656
4657         * mini-exceptions.c: Free a MonoType with
4658         mono_metadata_free_type() instead of g_free().
4659
4660         * aot-runtime.c: Free a MonoType.
4661
4662 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
4665         optimization.
4666
4667         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
4668         fp stack on x86.
4669
4670 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
4671         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
4672         profiler hook.
4673
4674 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4675
4676         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
4677         NEWOBJ calls on valuetypes.
4678
4679         * iltests.il.in: Add new test.
4680
4681         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
4682
4683 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4684
4685         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
4686         is no longer needed.
4687
4688         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
4689         non register sized integer arguments.
4690         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
4691         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
4692         emit_memcpy2 ().
4693
4694         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
4695         CEE_MONO_RETOBJ.
4696         
4697         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
4698         two a binop with different sized arguments is emitted.
4699
4700         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
4701         instruction in the ins==NULL case.
4702
4703 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4704
4705         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
4706
4707         * mini-x86.c: Fix osx build.
4708
4709         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
4710         opcodes as well.
4711
4712         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
4713         instruction for non int sized variables.
4714
4715         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
4716         implementation.
4717
4718 2008-07-23  Robert Jordan  <robertj@gmx.net>
4719
4720         * method-to-ir.c: Fix MSVC build.
4721
4722 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
4725         a non int sized type, widen it to an int since newer versions of gcc seem to
4726         generate code which needs this.
4727
4728         * ssa2.c abcremoval2.c: Fix warnings.
4729
4730         * *: Merge the Linear IR branch.
4731
4732         The original branch is at trunk/branches/vargaz/mini-linear-il, and
4733         the ChangeLog file there describes all the changes done over the years. 
4734         Further documentation can be found at www.mono-project.com/Linear_IL.
4735
4736 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
4737
4738         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
4739           The float param registers and other param registers must be the 
4740           same index on Windows x64.
4741
4742         Contributed under MIT/X11 license.
4743
4744 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * mini.c: Make the previous fix GC safe.
4747
4748 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
4749
4750         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
4751
4752 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
4753
4754         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
4755           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
4756           ArgValuetypeAddrInIReg instead.
4757
4758         Contributed under MIT/X11 license.
4759
4760 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
4761
4762         * mini-codegen.c (get_register_spilling): Fix a warning.
4763
4764 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
4767         for types which the initialization fails. Raises the provided exception
4768         at the right stop after cleanup.
4769
4770 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * aot-compiler.c: Free most of the memory allocated during compilation.
4773
4774         * mini.c (mini_parse_debug_options): Fix a leak.
4775         
4776         * mini.c (mini_method_compile): Don't add the method to the jit info tables
4777         during aot compilation.
4778
4779 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
4780
4781         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
4782         it has too much register pressure.
4783
4784 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
4787
4788 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4789
4790         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
4791         on x86.
4792
4793         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
4794         on amd64 similar to the way it is done on arm.
4795
4796         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4797
4798         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
4799         consistency, normalize error messages, avoid loading aot-only modules in
4800         normal mode.
4801
4802         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
4803         for consistency.
4804
4805         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
4806
4807 2008-07-11  Martin Baulig  <martin@ximian.com>
4808
4809         * debug-debugger.h
4810         (MonoDebuggerInfo): Add `interruption_request'.
4811
4812 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4813
4814         * aot-compiler.c (emit_plt): Remove some dead code.
4815
4816         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
4817
4818         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
4819         return the plt info offset belonging to a given plt entry.
4820
4821         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
4822         mono_aot_get_plt_info_offset.
4823         
4824         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
4825         similar to the amd64 code by makeing jumps through a separate jump table 
4826         instead of embedding the jump addresses into the code.
4827
4828 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
4829
4830         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
4831         method.
4832
4833 2008-07-10  Martin Baulig  <martin@ximian.com>
4834
4835         * mini.c (mini_method_compile): Disable generics sharing when
4836         running in the debugger.
4837
4838 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
4839
4840         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
4841
4842         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
4843         the local register allocator from running out of registers on x86 when 
4844         using aot.
4845
4846 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
4847
4848         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
4849         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
4850         C4146.
4851
4852         Contributed under MIT/X11 license.
4853
4854 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
4855
4856         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
4857         speed up the assembler.
4858
4859 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
4860
4861         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
4862         support.
4863
4864         * mini.c: Move the soft float handling macros a bit earlier, add 
4865         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
4866         place.
4867
4868         * mini.h: Add prototype for mono_arch_fixup_jinfo.
4869
4870         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
4871         read-only to help catch code allocation requests.
4872         
4873         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
4874         and turn it off when using --aot-only or when compiling with --aot=full.
4875
4876         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
4877         jump table for switches from the normal domain mempool, not the code
4878         manager.
4879
4880         * mini-trampolines.c (get_unbox_trampoline): New function to return an
4881         unbox trampoline which handles aot-only mode too.
4882
4883         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
4884         an AOTed unbox trampoline.
4885
4886         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
4887
4888 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
4889
4890         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
4891         ""
4892
4893         Contributed under MIT/X11 license.
4894
4895 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
4896
4897         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
4898           the unwind information for the method at the end of the allocated block.
4899           
4900         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
4901           MonoCompileArch to hold the unwind info for SEH on Winx64
4902         
4903         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
4904           frame pointer info for the method being compiled.
4905           
4906         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
4907           the call to mono_exception_from_token.
4908           
4909         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
4910           storing the method prolog information in a format that the Winx64 SEH can understand.  This
4911           information is stored a the end of the method block because it is all 32-bit offset based.
4912
4913         Contributed under MIT/X11 license.
4914
4915 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
4918
4919         * wapihandles.c: Fix warnings.
4920
4921         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
4922         mode.
4923
4924         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
4925         mono_jit_compile_method in aot-only mode since that calls the type 
4926         initializer.
4927         
4928         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
4929         get_delegate_invoke_impl in aot-only mode.
4930
4931         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
4932
4933 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
4934
4935         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
4936
4937         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
4938         is on by default.
4939
4940         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
4941
4942         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
4943         init trampoline from the AOT file as well.
4944
4945         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
4946         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
4947         code.
4948
4949         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
4950         mono_init.
4951
4952         * exceptions-amd64.c: Add _full variants for the remaining exception code
4953         creation functions as well, allow emission of relocatable code, remove
4954         caching since that is now done by the caller.
4955
4956         * mini-exceptions.c: Add _full variants for the remaining exception code
4957         creation functions as well, add aot-only support.
4958
4959         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
4960         if we can determine a proper token for them.
4961         (add_wrappers): Add a few more wrappers.
4962         (emit_method_code): Remove some dead code.
4963         (emit_trampolines): Emit exception code too.
4964
4965         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
4966
4967         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
4968         mono_array_new_va which avoids varargs.
4969
4970         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
4971
4972         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
4973         mono_arch_create_specific_trampoline () in all places.
4974
4975         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
4976         a bit so it can be used for other things as well.
4977         
4978         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
4979         on demand as well.
4980
4981         * exceptions-amd64.c: Rename the caching from the exception code creation
4982         functions, it is done by the caller instead.
4983         
4984         * exceptions-amd64.c: Change the signature of the exception code creation 
4985         functions to allow the creation of relocatable code later.
4986
4987         * mini-exceptions.c: Add a set of functions to query the various 
4988         runtime-generated exception functions.
4989
4990         * mini.c mini-exceptions.c: Use the newly added functions instead of the
4991         mono_arch_.. () functions.
4992         
4993 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4994
4995         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
4996
4997         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
4998
4999         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5000         (mini_get_vtable_trampoline): Ditto.
5001
5002         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5003         code in the AOT case by returning the code size and a list of relocations to
5004         the caller.
5005
5006         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5007
5008 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5009
5010         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5011           clean the stack.
5012
5013         Contributed under MIT/X11 license.
5014
5015 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5016
5017         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5018         so the buffer size can be computed correctly. Fixes #404735.
5019
5020         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5021         normally as cfg->debug_info is already freed.
5022
5023 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * mini-amd64.c: For calls returning vtypes in registers, don't store
5026         the return address on the stack, instead allocate a separate local for
5027         it. Fixes #404729.
5028
5029 2008-07-05  Mark Probst  <mark.probst@gmail.com>
5030
5031         * mini-trampolines.c, mini.h: Add an argument to
5032         mono_create_jit_trampoline_in_domain() for turning off the adding
5033         of the sync wrapper.
5034
5035         * mini.c: Use the JIT trampoline without sync instead of
5036         ldftn_nosync in static RGCTX invoke wrappers so that the call can
5037         be patched.
5038
5039 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5040
5041         * driver.c: Turn on GSHARED optimization by default.
5042
5043 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
5044
5045         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
5046         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
5047
5048         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
5049         create a variant of the generic trampoline code callable from AOTed trampolines.
5050
5051         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
5052         trampoline code callable from AOTed trampolines.
5053
5054         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
5055
5056 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5057
5058         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
5059         pass-through manner.
5060
5061         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
5062         and don't fail sharing for them anymore.
5063
5064         * mini-exceptions.c: Handle exceptions in shared generic methods.
5065
5066         * generic-sharing.c: When checking the context of a generic
5067         method, also check its class's context.  Don't treat wrappers as
5068         sharable.
5069
5070         * mini-trampolines.c: Some code factored out to
5071         metadata/generic-sharing.c.  Handle the MRGCTX case.
5072
5073         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
5074         we must deal with the method being of another instantiation of the
5075         class.  Add static rgctx invoke wrappers to generic methods.
5076
5077 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5078
5079         * mini.c: Provide all jit infos of generic shared methods with a
5080         generic jit info.
5081
5082         * mini-exceptions.c: Handle the new situation that a generic info
5083         might be available, but not info about the this/vtable/mrgctx
5084         variable.
5085
5086 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5087
5088         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
5089         generic methods.
5090
5091 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * dominators.c (check_dominance_frontier): Fix a warning.
5094
5095         * mini.h: Add some missing prototypes.
5096
5097         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
5098
5099         * driver.c (mono_jit_init_version): Correct the comments since the first
5100         argument should be the name of the root domain, not a filename.
5101
5102         * aot-runtime.c (make_writable): Error out if this is called while running
5103         with --aot-only.
5104         (load_aot_module): Ditto.
5105
5106         * aot-compiler.c: Really fix the computation of method indexes.
5107
5108         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
5109         optimizations as this is no longer called frequently.
5110
5111         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
5112         method and the invoke impl code and pass it to the delegate trampoline instead of
5113         just the delegate class.
5114
5115 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
5116
5117         * aot-compiler.c: Fixup the computation of method indexes.
5118         (add_wrappers): Create the base methods of the runtime invoke wrappers using
5119         the method builder infrastructure.
5120
5121         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
5122         has no header.
5123
5124         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
5125         mode, load the method right away instead of creating a trampoline.
5126
5127         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
5128
5129         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
5130         some checks a bit.
5131
5132 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
5133
5134         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
5135         (mono_aot_load_method): Use method_index instead of method->token.
5136
5137         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
5138         can handle icalls etc. properly.
5139
5140         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5141
5142         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
5143
5144         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
5145         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
5146         JIT_ICALL_ADDR patch type.
5147
5148         * patch-info.h: Add JIT_ICALL_ADDR patch type.
5149
5150         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
5151         request flag.
5152         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
5153
5154         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
5155
5156 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
5157
5158         * mini.c: Use domain->jit_code_hash_lock for controlling access to
5159         domain->jit_code_hash.
5160
5161 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
5164
5165 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
5168         get_this_arg_from_call, let it compute it when needed.
5169
5170         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
5171         gsctx from code only when needed.
5172
5173         * mini-trampolines.c (get_generic_context): Rename this to 
5174         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
5175         it can be called by the arch backends.
5176
5177         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
5178
5179 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
5180
5181         * driver.c (mono_main): Add experimental --aot-only command line option.
5182
5183         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
5184         set.
5185
5186 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
5187
5188         * driver.c (DllMain): Remove mono_module_handle.
5189
5190         Contributed under MIT/X11 license.
5191
5192 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
5195         for emitting methods which are not in the source assembly. Detect and report
5196         failure of assembling+linking.
5197         
5198         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
5199
5200         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
5201
5202 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
5203
5204         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
5205
5206 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5207
5208         * mini.h: Remove some obsolete prototypes.
5209
5210         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
5211
5212 2008-06-24  Mark Probst  <mark.probst@gmail.com>
5213
5214         * mini.c (get_object_generic_inst): Variable-sized arrays are not
5215         supported by Visual Studio, so use alloca().
5216
5217 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
5218
5219         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
5220         Fixes #402585.
5221
5222 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5223
5224         * mini.c: Fail sharing of a generic method if it contains an open
5225         catch clause (because we don't pass MRGCTXs yet).
5226
5227 2008-06-23  Mark Probst  <mark.probst@gmail.com>
5228
5229         * mini.c: When compiling a method with generic sharing, insert the
5230         method instantiated with an all-Object generic context into the
5231         jit info table, instead of the context of the first instantiation
5232         of the method we happen to compile.
5233
5234 2008-06-18  Martin Baulig  <martin@ximian.com>
5235
5236         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
5237         `major_version' and `minor_version'.
5238
5239 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5240
5241         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
5242         mono_method_is_generic_sharable_impl() takes an additional
5243         argument specifying whether to treat type variables as reference
5244         types.
5245
5246 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5247
5248         * mini.h: Removed obsolete prototypes.
5249
5250 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5251
5252         * mini.c: Don't fail generic sharing for initobj and sizeof - we
5253         already handle them.
5254
5255 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5256
5257         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
5258         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
5259         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
5260         tramp-x86.c: Added a MonoGenericContext* argument to
5261         mono_arch_get_unbox_trampoline() so that it can call other
5262         functions which require it.
5263
5264 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5265
5266         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
5267         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
5268         mono_arch_get_this_arg_from_call() takes a
5269         MonoGenericSharingContext* as well.
5270
5271 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5272
5273         * mini.c: Factor out code for emitting unbox into emit_unbox() and
5274         implement generic sharing of unbox.
5275
5276 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5277
5278         * mini.c: Don't compute the vtable to determine whether a field is
5279         special static, because it might not work for open types.
5280
5281 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5282
5283         * mini.c: Removed the unused token_type and token_source arguments
5284         from get_runtime_generic_context_ptr().
5285
5286 2008-06-17  Marek Habersack  <mhabersack@novell.com>
5287
5288         * mini.c (ADD_BINOP): fix the build
5289
5290 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
5293         a widening op.
5294
5295 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5296
5297         * mini.h: Removed class relations enum that's not used anymore.
5298
5299 2008-06-16  Mark Probst  <mark.probst@gmail.com>
5300
5301         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
5302
5303         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
5304         the lazy fetch trampoline access code.
5305
5306 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
5309
5310 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
5313
5314         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
5315
5316         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
5317
5318 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
5321         intrinsics.
5322
5323         * mini-ops.h: Add MIN/MAX_UN opcodes.
5324
5325         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
5326         intrinsics.
5327
5328         * basic-math.cs: Add more min/max tests.
5329
5330         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
5331
5332 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5333
5334         * mini.c: Small fix in the prologue of emit_castclass.
5335
5336 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5337
5338         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
5339
5340         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
5341         do not work even for unsigned types. Fixes #400014.
5342
5343         * basic-math.cs: Add regression tests for unsigned Min/Max.
5344
5345 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5346
5347         * mini.c: Added additional context_used argument to several
5348         functions, which will be needed for sharing generic methods.  Use
5349         GET_RGCTX macro wherever appropriate.  Declare only one
5350         context_used in mono_method_to_ir().
5351
5352 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5353
5354         * mini.c, generic-sharing.c: Removed generic class relations.
5355
5356         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
5357         functions due to MRGCTX changes.
5358
5359 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5360
5361         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
5362         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
5363         with calculated IMT.
5364
5365         * mini.c: Generic sharing of calls via generic interfaces.
5366
5367         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
5368         generic method with non-constant MonoGenericContext*.  Instead,
5369         the context is taken out of the method itself.
5370
5371 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5372
5373         * mini.c: Generic sharing of ldvirtftn.
5374
5375 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5376
5377         * mini.c: Generic sharing of ldftn.
5378
5379 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5380
5381         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
5382
5383 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5384
5385         * mini.c: Generic sharing of the special case of ldtoken followed
5386         by a call to GetTypeFromHandle.
5387
5388 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5389
5390         * mini.c: Generic sharing of box for nullable types.
5391
5392 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5393
5394         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
5395         are passed on the stack. Fixes #324807.
5396
5397 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
5398
5399         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
5400         for the ArgValuetypeAddrInIReg case.
5401
5402         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
5403         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
5404
5405         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
5406         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5407         local variable and pass the local variable by reference to the called method.
5408           
5409         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
5410         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
5411
5412         Contributed under MIT/X11 license.
5413
5414 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
5417
5418         * debug-mini.c (mono_debug_print_vars): Release memory after printing
5419         everything.
5420
5421 2008-06-10  Martin Baulig  <martin@ximian.com>
5422
5423         * debug-mini.c
5424         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
5425
5426 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
5427
5428         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
5429         possible error when no arguments are passed.
5430
5431         Contributed under MIT/X11 license.
5432
5433 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
5434
5435         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
5436         where the file name is NULL.
5437
5438 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5439
5440         * mini.c: Fix s390 build.
5441
5442 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * trace.c (mono_trace_parse_options): Fix warnings.
5445
5446         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
5447
5448 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * mini.c (remove_block_if_useless): Avoid printing the method name.
5451         
5452         * mini.c: Remove needless setting of ins->cil_code which is now done by 
5453         MONO_INST_NEW.
5454
5455         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
5456         LMF. Not yet used.
5457
5458         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
5459         translated code after it has been patched.
5460
5461 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
5464         avoid problems during code patching on SMP systems.
5465         (emit_call): Avoid adding a patch info which is already added by 
5466         emit_call_body.
5467         (mono_arch_emit_exceptions): Ditto.
5468
5469 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
5472         MONO_TYPE_ISSTRUCT already checks for it.
5473
5474 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
5475
5476         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
5477           structs with floats on Winx64 the float registers are not used.  
5478           The integer registers are always used..
5479         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
5480           only one register will be used and only if the size of the struct 
5481           is 1,2,4, or 8 bytes.
5482
5483         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
5484           to work for Winx64.
5485
5486         Contributed under MIT/X11 license.
5487
5488 2008-06-05  Martin Baulig  <martin@ximian.com>
5489
5490         * debug-debugger.c (debugger_lookup_class): Also call
5491         mono_class_setup_methods() here; we're only called from RTI.
5492
5493 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5494
5495         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
5496         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
5497         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
5498         Post-process object files and add dtrace-generated object, if necessary.
5499
5500         Contributed under MIT/X11 license.
5501
5502 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5503
5504         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
5505         element class.
5506
5507         * mini.c: Generic sharing for unbox.any and castclass.
5508
5509 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5510
5511         * mini.c: Ignore tailcall prefix in shared generic code and when
5512         doing calls which require a vtable/rgctx argument.
5513
5514 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5515
5516         * mini.c: Don't free the JIT info.
5517
5518         * driver.c: Changes in the JIT info table testing code.
5519
5520 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5521
5522         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
5523         interruption. Fix some warnings.
5524
5525         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
5526         interruption_checkpoint.
5527
5528 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
5529
5530         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
5531         from embedding applications.
5532
5533 2008-06-02  William Holmes  <billholmes54@gmail.com>
5534
5535         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
5536           reserving 32 bytes on the stack when making calls. 
5537
5538         Contributed under MIT/X11 license.
5539
5540 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
5541
5542         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
5543         the linear IL branch.
5544
5545         * driver.c: Print out more information for --version on arm.
5546
5547 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
5550         bb_exit instead, since out of line bblocks might not actually be emitted
5551         out-of-line.
5552         
5553         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
5554         maximum epilog size for out of line bblocks if tracing is enabled.
5555
5556         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
5557
5558 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
5559
5560         * arrays.cs: Regression tests for allocating arrays with negative sizes.
5561
5562 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
5565         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
5566         opcodes.
5567
5568 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
5571         the 'value' to store is a constant.
5572
5573         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
5574
5575         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
5576         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
5577
5578 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5579
5580         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
5581         for accessing method->generic_container.
5582
5583 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
5586         
5587         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
5588
5589         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
5590
5591         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
5592         fails.
5593
5594 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
5597
5598         * mini.c: Handle the case when mono_class_vtable () fails.
5599
5600 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5601         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
5602         the stat profiler.
5603
5604 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5605
5606         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
5607         together with domain sharing.
5608
5609 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5610
5611         * mini.c: Treat callvirts to final methods like non-virtual calls
5612         when doing generic sharing, i.e. look them up in the runtime
5613         generic context.
5614
5615 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5616
5617         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
5618         with computed types (for generic sharing).
5619
5620         * mini.c: Generic sharing for mkrefany and refanyval.
5621
5622 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5623
5624         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
5625         possible.
5626
5627         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
5628         the generic sharing code.
5629         
5630         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
5631         when needed.
5632
5633 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * mini.h: Remove the declaration of mono_aot_init_vtable ().
5636
5637 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
5638
5639         * driver.c: updated copyright date
5640
5641 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5642
5643         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
5644         needed.
5645
5646 2008-05-19  Martin Baulig  <martin@ximian.com>
5647
5648         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
5649         pointing to the new `_mono_debug_using_mono_debugger' variable.
5650
5651         * driver.c
5652         (mono_main): Check mono_debug_using_mono_debugger() rather than
5653         the `MONO_INSIDE_MDB' environment variable to check whether we're
5654         inside the debugger.
5655
5656 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
5657
5658         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
5659         argument.
5660
5661 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5662
5663         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
5664
5665         * mini.c: Added mini_assembly_can_skip_verification. This
5666         function checks if the assembly requested to skip verification. 
5667         Fixes part of #387274.
5668
5669 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * mini.c (mini_get_method): Disable the check for open generic classes when
5672         using generic sharing.
5673
5674         * generics.cs: Add a test for #387034.
5675
5676         * mini.c (mini_get_method): Check whenever the method class is an open generic
5677         type, and return NULL in that case, causing a verification error. Fixes
5678         #384123.
5679
5680 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * driver.c (mono_main): Revert r102623. The right
5683         thing to do is to enable the verifier under verifiable
5684         unless a --security flag was passed.
5685
5686         We need this non-trivial behavior for --verify-all otherwise
5687         mcs-compileall won't be able to use it. As it needs everything to
5688         be verified under validil.
5689
5690 2008-05-06  Martin Baulig  <martin@ximian.com>
5691
5692         Fix #383749.
5693
5694         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
5695         (mono_debugger_thread_cleanup): Likewise.
5696         (mono_debugger_extended_notification): Likewise.
5697
5698 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
5699
5700         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
5701         against both inflated and non-inflated methods. We need to check against the
5702         generic definition for cases where the instantiated method is not visible.
5703         We need to check against the inflated types for cases where the instantiation
5704         changes any super type. This fixes #382986.
5705
5706         Note that this doesn't need to be applied to other parts of mono_method_to_ir
5707         that check for visibiliy as generic params only appears as the type subject
5708         of tokens on call opcodes. Field manipulation and ldftn must always
5709         target an exact type.
5710
5711 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
5712
5713         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
5714         if no related --security flag is passed.
5715
5716 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5717
5718         * mini-arch.h: Prepare support for ppc64.
5719
5720         Contributed under MIT/X11 license.
5721
5722 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5723
5724         * aot-runtime.c: Prepare support for ppc64.
5725
5726         Contributed under MIT/X11 license.
5727
5728 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5729
5730         * mini-ops.h: Prepare support for ppc64.
5731
5732         Contributed under MIT/X11 license.
5733
5734 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
5735
5736         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
5737
5738         Contributed under MIT/X11 license.
5739
5740 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
5743         assemblies, since aot_name is not a full path, causing us to load MS.NET 
5744         assemblies on windows.
5745
5746 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
5747
5748         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
5749         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
5750         * main.c: Use UTF-8 encoded command line instead of Windows default code
5751         page on Windows to support Unicode.
5752         * driver.c (DllMain): New function for mixed-mode assembly support.
5753         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
5754         export __stdcall functions without decoration.
5755
5756         Contributed under MIT/X11 license.
5757
5758 2008-04-28  Mark Probst  <mark.probst@gmail.com>
5759
5760         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
5761         saving it very early.
5762
5763 2008-04-28  Mark Probst  <mark.probst@gmail.com>
5764
5765         * mini.h, mini.c: Lots of code for accessing the old RGCTX
5766         deleted.  The only way to access the new RGCTX is via the
5767         trampline.
5768
5769         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
5770         vtable instead of the RGCTX to static methods.
5771
5772         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
5773         accessing the new RGCTX.
5774
5775         * generic-sharing.c: There is no separation between self, type
5776         arguments and other types in the RGCTX anymore.
5777
5778 2008-04-25  Jonathan Chambers <joncham@gmail.com>
5779
5780         * mini-amd64.c (add_general): Remove previous stack adjustment.
5781         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
5782         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
5783         for 32 bytes of stack space reserved for all calls.
5784         
5785         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
5786         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
5787         adjustment.
5788         
5789         Code contributed under MIT/X11 license.
5790
5791 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
5792
5793         * mini.c (mini_method_verify): Only verify non-inflated methods, check
5794         against the root definition, peeling out method and type instantiations.
5795         Cache verify success results, code that fails verification is still
5796         checked multiple times.
5797
5798 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
5801
5802 2008-04-23  Jonathan Chambers <joncham@gmail.com>
5803
5804         * mini-amd64.c (add_general): Always increment stack on Win64.
5805         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
5806         on Win64.
5807         
5808         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
5809         stack based argument handling on Win64.
5810         
5811         Code contributed under MIT/X11 license.
5812
5813 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
5814
5815         * Makefile.am (version.h): Add support for git-svn.
5816
5817 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
5820         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
5821         avoiding allocations and libc functions which might deadlock.
5822         
5823         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
5824         'no-gdb-backtrace' option is set.
5825
5826         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
5827
5828         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
5829
5830 2008-04-21  Martin Baulig  <martin@ximian.com>
5831
5832         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
5833         and `get_lmf_addr'; `notification_address' is no longer a pointer.
5834
5835 2008-04-21  Martin Baulig  <martin@ximian.com>
5836
5837         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
5838         `thread_vtable', `event_handler_ptr' and `event_handler'.
5839
5840 2008-04-21  Martin Baulig  <martin@ximian.com>
5841
5842         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
5843         allows delayed initialization of the `executable_code_buffer' when
5844         attaching.
5845
5846 2008-04-21  Martin Baulig  <martin@ximian.com>
5847
5848         * mini.h (mono_debugger_create_notification_function): Removed.
5849         * tramp-*.c (mono_debugger_create_notification_function): Removed.
5850
5851         * mdb-debug-info64.s
5852         (MONO_DEBUGGER__notification_function): Added this in the .text section.
5853
5854         * mdb-debug-info32.s
5855         (MONO_DEBUGGER__notification_function): Added this in the .text section.
5856
5857         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
5858         currently only works on x86 and x86_64, so don't create it on ppc.
5859
5860 2008-04-21  Martin Baulig  <martin@ximian.com>
5861
5862         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
5863
5864         * mini.c
5865         (mini_method_compile): In the fp elimination check, check
5866         `debug_options.mdb_optimizations' in addition to
5867         mono_debug_using_mono_debugger().       
5868
5869         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
5870         disable some JIT optimizations which are only disabled when
5871         running inside the debugger.
5872         Added `--help-debug' option to describe the debugging options.
5873         (parse_debug_options): New static function to parse the `--debug'
5874         options, so we can easily add more stuff in future.
5875
5876 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
5879         the method has no body.
5880
5881 2008-04-19  Jonathan Chambers <joncham@gmail.com>
5882
5883         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
5884         assembly is not allowed in MSVC 64-bit compiler. 
5885         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
5886         as we get floating point exceptions everywhere.
5887         
5888         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
5889         correctly align arguments for call to throw_exception.
5890         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
5891         
5892         Code contributed under MIT/X11 license.
5893
5894 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
5895
5896         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
5897
5898 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
5901
5902         * mini-amd64.c (NEW_INS): Set cil_code.
5903
5904         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
5905         from mini-amd64.c so all debugger related logic is in one place.
5906
5907         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
5908         later won't have a random ip assigned to them.
5909
5910 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
5913         the arch specific function initializes code_size.
5914         (mono_create_delegate_trampoline): Ditto.
5915
5916         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
5917         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
5918         platforms.
5919
5920         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
5921         running under the debugger.
5922
5923         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
5924         debugger.
5925
5926         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
5927         debugger. Also move the disabling of optimizations here from driver.c.
5928         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
5929         debugger.
5930
5931         * mini.h (MonoCompile): Add a few new flags.
5932
5933 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
5936         so the cil_code field of created MonoInst's is properly set.
5937         (mini_select_instructions): Ditto.
5938
5939         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
5940         (MONO_INST_NEW_CALL): Ditto.
5941
5942         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
5943         in many places so the ins->cil_code field is properly initialized.
5944
5945         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
5946         place.
5947
5948 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * mini.c (mini_method_compile): Print a different message when compiling a 
5951         shared method.
5952         
5953         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
5954         > 1.
5955
5956 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
5957
5958         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
5959         SSE2 instructions.
5960
5961         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
5962         
5963 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
5964
5965         * mini.c (handle_stack_args): Make this return void since its return value was
5966         never used. Also set cfg->unverifiable for invalid IL instead of calling
5967         G_BREAKPOINT ().
5968
5969 2008-04-10  Mark Probst  <mark.probst@gmail.com>
5970
5971         * mini.c: Make sure "this" is live in catch clauses with type
5972         variables in shared generic code.
5973
5974 2008-04-08  Mark Probst  <mark.probst@gmail.com>
5975
5976         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
5977         generic_class_is_reference_type() to ensure the proper behaviour
5978         when sharing generic code and the type in question is a type
5979         argument.
5980
5981 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
5984         race conditions when printing thread dumps. Fixes #377738.
5985
5986 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
5987         
5988         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
5989         shows up when both MonoInst arguments can cause aliasig.
5990         There is likely no way in the current JIT to trigger this problem, but
5991         it showed up in the development of generics sharing, when in a new
5992         opcode both args of an OP_GROUP can be aliases (addresses of a local).
5993         When the generics sharing code will be committed, its tests will be
5994         valid also for this bug.
5995
5996 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
5999         PATCH_INFO_METHOD.
6000
6001         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6002         NULL.
6003
6004 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6005
6006         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6007         use a more detailed exception message for InvalidCastException.
6008
6009         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6010
6011         * driver.c (mono_main): Add --debug=casts option to turn on better 
6012         InvalidCastException message details.
6013
6014         * mini.c (mini_get_debug_options): New helper function to return the address of
6015         the debug_options variable.
6016
6017         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6018         the jit_tls TLS variable.
6019
6020         * mini.c (mono_jit_tls): New TLS variable.
6021
6022         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6023         option is used.
6024
6025 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6028
6029         * mini.c: Removed verifer related stuff, code moved to verify.c.
6030
6031         * driver.c: Using code from verify.c instead of mini.c.
6032
6033 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
6036         longer valid.
6037
6038 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
6039
6040         * mini.c (check_for_method_verify): Enabling verification of
6041         corlib if mono_verify_all is set. Bugs in the verifier preventing that
6042         have been fixed.
6043
6044 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
6045
6046         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
6047         caller saved registers as well.
6048         
6049         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
6050         saved registers as well.
6051
6052 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
6055
6056         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
6057         code.
6058
6059 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
6060
6061         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
6062         to get_call_info.
6063         (get_call_info): Take a gsctx argument instead of 'cfg'.
6064
6065 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
6068         mono_verify_all is set.
6069
6070         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
6071
6072         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
6073
6074 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
6077         an exception.
6078
6079         * driver.c mini.c mini.h: Add a --verify-all development option to test the
6080         verifier and the code generated by the compiler.
6081
6082 2008-03-25  Mark Probst  <mark.probst@gmail.com>
6083
6084         * mini.c: Generic sharing of the non-nullable case of the box
6085         instruction.
6086
6087 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * inssel.brg: Fix the build.
6090
6091         * iltests.il.in: Add a test for lconv.ovf.u8.un.
6092
6093 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
6094
6095         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
6096         Array:Address. Fixes #372410.
6097
6098         * iltests.il.in: New tests for readonly prefix.
6099
6100 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
6101
6102         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
6103         mini-trampolines.c.
6104
6105         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
6106         mini-exceptions.c.
6107
6108         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
6109         
6110         * mini.c (mono_decompose_op_imm): New helper function.
6111
6112         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
6113         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6114         return value.
6115
6116         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6117         mono_arch_output_basic_block. Fix warnings.
6118
6119         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
6120         for now.
6121
6122 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
6125         since the extra frame is now detected automatically inside the loop.
6126
6127         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
6128         opts which are now in mono_peephole_ins ().
6129         
6130         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
6131
6132         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
6133         frames and skip duplicate managed-to-native frames. Fixes #367665.
6134
6135         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6136         opts which are now in mono_peephole_ins ().
6137         (mono_arch_peephole_pass_2): Ditto.
6138
6139         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
6140
6141         * mini-codegen.c (mono_peephole_ins): New helper function containing the
6142         arch independent peephole optimizations.
6143
6144         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
6145         opts which are now in mono_peephole_ins ().
6146
6147         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
6148         
6149         * mini-s390.c (mono_arch_output_basic_block): Fix build.
6150
6151         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
6152         pattern.
6153
6154         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
6155         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
6156         opcode. 
6157
6158 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
6161         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
6162         return value.
6163
6164         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
6165         mono_arch_output_basic_block. Fix warnings.
6166
6167 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6170         conv.ovf.u.un.
6171
6172 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
6175         conv.ovf.u.un.
6176
6177         * iltests.il: Add new tests.
6178
6179 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6180
6181         * mini.c: Removed Windows version macros.
6182
6183 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6184
6185         * generic-sharing.c: Put reflection types in the extensible part
6186         of the runtime generic context.
6187
6188         * mini.c: Generic sharing of the GetTypeHandle special case of the
6189         ldtoken instruction.
6190
6191 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
6192
6193         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
6194
6195         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
6196         
6197         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
6198         consistency with the other version on the linear IR branch.
6199
6200         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
6201
6202         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
6203
6204         * iltests.il.in: Add new tests.
6205
6206 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
6209
6210         * iltests.il.in: Add new tests.
6211
6212 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6213
6214         * mini.c: Two variables with the same name were declared in
6215         nesting contexts and one wasn't initialized.  Fixed.
6216
6217 2008-03-19  Mark Probst  <mark.probst@gmail.com>
6218
6219         * mini.c: Generic sharing of the initobj instruction.
6220
6221 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6222
6223         * mini.c: make the test to optimize ldtoken from typeof() more
6224         precise.
6225
6226 2008-03-18  Mark Probst  <mark.probst@gmail.com>
6227
6228         * mini.c: Generic sharing of the initobj instruction for reference
6229         types.
6230
6231 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6232
6233         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
6234         the mono_breakpoint_clean_code() code to perform bound checks.
6235
6236 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
6237
6238         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
6239         mono_arch_patch_callsite() to include the start of the managed method
6240         to be able to perform bound checks.
6241
6242 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6243
6244         * mini.c: Generic sharing for the isinst instruction.
6245
6246 2008-03-17  Mark Probst  <mark.probst@gmail.com>
6247
6248         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6249         inssel-long32-mips.brg: Added opcodes for doing indirect calls
6250         with the runtime generic context argument.
6251
6252         * mini.c: Share calls to several types of unsharable methods by
6253         putting the address of the method code in the runtime generic
6254         context and doing an indirect call.
6255
6256         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
6257         to switches.
6258
6259 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6260
6261         * generic-sharing.c: Change due to a change in the runtime genric
6262         context API.
6263
6264 2008-03-15  Martin Baulig  <martin@ximian.com>
6265
6266         * tramp-x86.c
6267         (mono_arch_nullify_class_init_trampoline): Add call to
6268         mono_breakpoint_clean_code() to make things work when running
6269         inside the debugger.
6270
6271         * tramp-amd64.c
6272         (mono_arch_nullify_class_init_trampoline): Add call to
6273         mono_breakpoint_clean_code() to make things work when running
6274         inside the debugger.
6275
6276 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * inssel-long.brg (reg): Fix 64 bit build.
6279
6280 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6281
6282         * mini.c, mini.h: Share static generic code by passing it an
6283         implicit argument pointing to the runtime generic context.
6284
6285         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
6286         inssel-long32-mips.brg: New opcodes for calling shared static,
6287         which need to be passed the runtime generic context.
6288
6289         * mini-amd64.c, mini-x86.c: Save the runtime generic context
6290         argument on the stack in the prologue if needed.  New function for
6291         finding the runtime generic context argument from the registers
6292         saved by the trampoline.
6293
6294         * mini-amd64.h, mini-x86.h: Specify which register to use for the
6295         runtime generic context argument.
6296
6297         * tramp-amd64.c: Also restore the register used for the runtime
6298         generic context argument.
6299
6300         * mini-trampoline.c: Resolve shared static calls by consulting the
6301         runtime generic context via the new argument.
6302
6303         * generic-sharing.c: Add an argument to sharability-checking
6304         functions that specifies whether type variables should be treated
6305         as sharable type arguments.
6306
6307         * inssel-x86.brg: Removed a superfluous, buggy rule.
6308
6309         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
6310         to switches.
6311
6312 2008-03-14  Martin Baulig  <martin@ximian.com>
6313
6314         * debug-debugger.c (main_thread_handler): Call
6315         mono_runtime_run_main() without sending any notifications.
6316
6317         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
6318
6319 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
6322
6323 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6324
6325         * tramp-x86.c: Fixed register restore offsets in the trampoline
6326         code for ECX and EDX.
6327
6328 2008-03-12  Geoff Norton  <gnorton@novell.com>
6329
6330         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
6331         different ucontext_t implementations.
6332         * exceptions-arm.c: Use the above defines to get exceptions working on 
6333         iPhone (based on a patch by Luke Howard lukeh@padl.com)
6334         * mini-arm.c: Implement iPhone icache support (based on a patch by
6335         Luke Howard lukeh@padl.com)
6336
6337 2008-03-12  Mark Probst  <mark.probst@gmail.com>
6338
6339         * mini.c: Enable generic sharing of calls to non-static
6340         non-interface non-generic non-value-type methods.
6341
6342         * mini-trampolines.c: Resolve calls from shared generic code.
6343
6344 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
6347
6348         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
6349
6350 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
6351
6352         * mini.c: some fixes for the AOT compiler.
6353
6354 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6355
6356         * cpu-amd64.md: Add clob:1 to some float opcodes.
6357
6358 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
6359
6360         * mini.h: Added MiniVerifierMode enumeration.
6361
6362         * mini.c: Added mini_verifier_set_mode to control
6363         the usage of the new verifier.
6364
6365         * mini.c (mono_method): Integrated the new verifier.
6366
6367         * driver.c: Extended --security option with validil and
6368         verifiable options to activate the new verifier.
6369
6370 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6371
6372         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
6373         optimization to ctors taking 0 or 2 arguments too.
6374
6375         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
6376         a bit.
6377
6378         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
6379
6380         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
6381
6382 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6383
6384         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
6385         non-aot case as well.
6386
6387         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
6388
6389         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
6390         changes.
6391
6392         * aot-compiler.c (encode_patch): Ditto.
6393
6394         * mini.h (G_MININT32): Fix the definition of this.
6395
6396 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
6399
6400         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
6401
6402 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6403
6404         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
6405         methods returning vtypes in registers.
6406         (mono_arch_allocate_vars): Ditto.
6407
6408         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
6409
6410         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
6411
6412         * generics.cs: Add a test from the linear IR branch.
6413
6414         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
6415
6416         * mini.c (inline_method): Cache failed inline attempts.
6417
6418 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6419
6420         * mini.c: For shared methods of generic classes put the location
6421         of "this" into the MonoGenericJitInfo.
6422
6423         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
6424         register out of a MonoContext by register number.  Add the generic
6425         sharing context as an argument to mono_arch_find_this_argument().
6426
6427         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
6428         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
6429         for new arch function.
6430
6431         * mini-exception.c: Handle open exception clauses in shared
6432         generic code.
6433
6434         * mini-trampolines.c: Supply additional argument to
6435         mono_arch_find_this_argument().
6436
6437 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6438
6439         * Makefile.am (regtests): Run the bench.exe tests last.
6440
6441 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
6442
6443         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
6444         a bit.
6445
6446 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
6447
6448         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
6449         with MS.
6450
6451         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
6452         
6453         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
6454
6455         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
6456         whose class has no cctor.
6457
6458         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
6459
6460 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
6463         unverified.
6464
6465 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
6466
6467         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
6468         to be in sync with the code on the linear IR branch.
6469
6470         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
6471
6472         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
6473
6474 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
6477
6478         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
6479
6480         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
6481
6482         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
6483
6484         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
6485         
6486         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
6487         body.
6488
6489 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
6490
6491         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
6492         OP_LOADR4_MEMBASE emission.
6493
6494         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
6495         (mono_spillvar_offset_float): Ditto.
6496
6497         * mini-mips.c (mono_arch_emit_prolog): Ditto.
6498
6499         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
6500         emission.
6501
6502         * basic-long.cs: Add regression tests for them.
6503
6504         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
6505         use.
6506         (mono_arch_allocate_vars): Fix representation of single-precision float
6507         argument.
6508         (mono_arch_output_basic_block): Ditto.
6509
6510         * inssel-mips.brg: Ditto, remove duplicate items.
6511
6512         * mini-mips.c (emit_load_volatile_arguments): New function to handle
6513         arguments of tail calls as on other platforms.
6514         (mono_arch_output_basic_block): Handle tail calls.
6515
6516         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
6517         register.
6518
6519         * objects.cs (test_5_pass_static_struct): Add test for it.
6520
6521         Contributed under MIT/X11 license.
6522
6523 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * Makefile.am: Use gmcs for compiling the regression tests.
6526
6527         * *.2.cs *.2.il: Rename to *.cs and *.il.
6528
6529 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * regalloc.h: Make the vassign array smaller.
6532
6533         * mini.c (mini_method_compile): Remove an unused field in cfg.
6534
6535         * mini-codegen.c: Add a bunch of micro optimizations.
6536
6537 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * regalloc.h: Remove some unused fields.
6540
6541 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
6544
6545         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
6546
6547 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6548
6549         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
6550
6551         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
6552         trampoline: Fetch an entry from the runtime generic context.  If
6553         it's NULL, jump to the actual trampoline to fill the runtime
6554         generic context.  Otherwise, return it.
6555
6556         * mini.c: Call the lazy fetch trampoline to get entries out of the
6557         runtime generic context.
6558
6559         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
6560         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
6561         tramp-sparc.c: Stubs for the lazy fetch trampoline.
6562
6563 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6564
6565         * mini.c: Fetch data out of the extensible part of the runtime
6566         generic context instead of calling a helper function.
6567
6568         * generic-sharing.c: Some functions moved into
6569         metadata/generic-sharing.c.  Helper function for fetching other
6570         types now checks and asserts against extensible rgctx (just for
6571         debugging purposes - the helper function isn't called anymore
6572         unless for debugging).
6573
6574 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
6575
6576         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
6577         for tail calls up to the point that the tests in iltests.exe run. Also add a
6578         dummy CKFINITE implementation.
6579         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
6580         needed for trampoline LMF frames.
6581
6582         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
6583         trampoline LMF frames.
6584
6585 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * mini.c (inline_method): clean any pending loader error when inlining fail.
6588         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
6589
6590 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
6591
6592         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
6593
6594         * aot-runtime.c (decode_patch_info): Ditto.
6595
6596         * mini.c (mono_resolve_patch_target): Ditto.
6597         
6598         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
6599         icall wrappers.
6600
6601         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
6602         
6603         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
6604         if it references an icall address.
6605
6606 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
6607
6608         * cpu-s390x.md: Remove some more unused opcodes.
6609         
6610         * cpu-s390x.md: Remove some unused opcodes.
6611
6612         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
6613         mono_op_imm_to_op ().
6614
6615         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
6616         instead of a switch statement.
6617         
6618         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
6619         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
6620
6621         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
6622         
6623         * mini-codegen.c: Remove unused mono_regstate2_... functions.
6624
6625         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
6626         -1.
6627
6628 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
6629
6630         * driver.c (mono_main): Improve error reporting when an assembly cannot be
6631         opened. Fixes #362607.
6632
6633         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
6634
6635         * iltests.il.in: Add a test for static methods in interfaces.
6636
6637 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * genmdesc.c (build_table): Fix a crash on older glib versions.
6640
6641         * cpu-sparc.md: Remove some unused opcodes.
6642         
6643         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
6644         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
6645
6646         * cpu-amd64.md: Remove some unused opcodes.
6647
6648         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
6649         like the other opcodes.
6650
6651 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
6652
6653         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
6654
6655         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
6656
6657         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
6658         variables 'cfg' instead of 'm' for consistency.
6659
6660         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
6661
6662         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
6663         argument holding the vtype return address, to avoid the ambigious use of
6664         cfg->ret for this purpose.
6665
6666         * mini.c (NEW_RETLOADA): Use vret_addr if set.
6667
6668         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
6669         
6670         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
6671         new mono_print_ins () function which only takes one argument.
6672
6673 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
6674
6675         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
6676         macro arguments.
6677
6678 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
6679
6680         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
6681
6682         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
6683
6684         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
6685         opcodes and other small changes.
6686
6687         * mini-ops.h: Add some new opcodes from the linear IR branch.
6688
6689         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
6690
6691         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
6692         opcodes, use the REG_MEMBASE opcodes instead.
6693         
6694         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
6695         opcodes, use the REG_MEMBASE opcodes instead.
6696         
6697         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
6698         linear IR branch.
6699
6700         * mini.c (mono_op_imm_to_op): New helper function.
6701
6702         * mini-ops.h: Add some opcodes from linear IR branch.
6703
6704 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
6705
6706         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
6707         <tsv@solvo.ru>.
6708
6709 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
6712         OP_ICONV_TO_R4/R8.
6713
6714         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
6715
6716 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
6717
6718         * aot-compiler.c (emit_method_code): Add an assert.
6719
6720         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
6721         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
6722         methods.
6723
6724 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
6727         some load/store opcodes so they are consistent. 
6728         (mono_arch_emit_prolog): Simplify some code.
6729
6730         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
6731
6732         * objects.cs: Add tests for large argument offsets on ARM.
6733
6734         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
6735         stack offsets. Fixes #359651.
6736
6737         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
6738
6739         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
6740
6741         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
6742
6743         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
6744
6745         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
6746
6747         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
6748         rid of CEE_CONV_R_UN.
6749
6750         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
6751
6752 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
6753
6754         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
6755
6756         * mini.c (mono_normalize_opcodes): Add some more opcodes.
6757
6758         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
6759
6760         * cpu-amd64.md: Remove some unused opcodes.
6761
6762         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
6763
6764         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
6765
6766         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
6767         arch specific functions for its parts. Call the peephole pass after local
6768         regalloc so the prolog can compute a more accurate max_offset.
6769         
6770         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
6771         the corresponding OP_I/OP_L opcodes.
6772
6773         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
6774
6775         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
6776
6777 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
6780         as they are handled in mini.c.
6781
6782         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
6783         
6784         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
6785         case since it is handled in mini.c.
6786
6787         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
6788
6789         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
6790
6791         * *.c: Use the new opcodes in the IR and back end code.
6792
6793         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
6794
6795         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
6796
6797 2008-02-06  Mark Probst  <mark.probst@gmail.com>
6798
6799         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
6800         an assert because it has a race condition.
6801
6802 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
6803
6804         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
6805
6806         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
6807
6808         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
6809
6810         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
6811         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
6812
6813 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * cpu-amd64.md (move): Correct the maximum size of move.
6816
6817 2008-02-05  Mark Probst  <mark.probst@gmail.com>
6818
6819         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
6820         the generic class init trampoline to return quickly if the class
6821         is already inited.
6822
6823 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
6826         issues where an 32 bit callsite cannot be patched by a 64 bit address.
6827
6828 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
6831         branch.
6832
6833 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * objects.cs: Add some soft-float tests.
6836
6837         * mini.c: Fix a couple more soft-float issues.
6838
6839         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
6840
6841         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
6842         avoid a REX prefix.
6843
6844 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
6845
6846         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
6847         exception happens while compiling a virtual method.
6848
6849 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
6850
6851         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
6852         
6853         * mini-sparc.c: Fix build.
6854
6855         * mini-sparc.c (get_call_info): Add support for generic sharing.
6856
6857         * mini-exceptions.c: Add a FIXME.
6858
6859 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
6860
6861         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
6862         altstack handling code.
6863
6864         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
6865         
6866         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
6867
6868         * mini-s390.c: Add support for generic sharing.
6869
6870         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
6871         Fix CAS on s390.
6872         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
6873
6874         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
6875
6876         * mini-s390x.c: Add support for generic sharing.
6877         
6878         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
6879         Fix CAS on ia64.
6880         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
6881
6882         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
6883         can be used since it takes a 16 bit signed immediate.
6884
6885         * inssel-s390x.brg: Fix OP_SETRET.
6886
6887         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
6888
6889         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
6890
6891         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
6892
6893         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
6894
6895         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
6896         in one place.
6897
6898         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
6899         stuff.
6900
6901         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
6902         of the unused mono_arch_patch_delegate_trampoline stuff.
6903
6904 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
6905
6906         * basic-long.cs: Move the fp related tests to basic-float.cs.
6907
6908         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
6909
6910         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
6911
6912         * basic-calls.cs: Add a test for proper float argument passing.
6913
6914         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
6915         if the context corresponds to an exception received through a signal.
6916
6917         * exceptions.cs: Add a test for nullref handling at the start of a try
6918         clause.
6919
6920         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
6921
6922         * jit-icalls.c (mono_break): New JIT icall.
6923
6924         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
6925
6926         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
6927
6928 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * cpu-*.md: Get rid of unused opcodes.
6931
6932         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
6933
6934         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
6935         by all platforms.
6936
6937         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
6938         define.
6939
6940         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
6941         the arch independent trampoline code in mini-trampolines.c.
6942
6943         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
6944
6945         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
6946
6947         * mini-s390.h: Remove an unused define.
6948         
6949         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
6950         the arch independent trampoline code in mini-trampolines.c.
6951
6952         * mini-arm.c (mono_arch_emit_prolog): Fix build.
6953
6954 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
6957
6958         * mini-s390.c (mono_arch_emit_prolog): Fix build.
6959
6960         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
6961
6962         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
6963
6964         * cpu-amd64.md: Use smaller sizes for int opcodes.
6965
6966         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
6967
6968         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
6969         objects.cs.
6970
6971         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
6972         debugging.
6973
6974         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
6975         instead of though a pointer to save an indirection when accessing elements of
6976         the array.
6977
6978         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
6979         some typos.
6980         (NOT_IMPLEMENTED): New helper macro.
6981         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
6982         of a bb.
6983
6984         * *.c: Use the new helper macro.
6985
6986 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
6989
6990 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
6991
6992         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
6993         stack slots.
6994
6995 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
6996
6997         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
6998         profiling is enabled.
6999         
7000         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7001         the end.
7002         (mono_arch_emit_prolog): Add more first bblock optimizations.
7003
7004         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7005         in order if possible.
7006         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7007         bblock, since the arguments are still in their original registers.
7008
7009         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7010
7011 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7012
7013         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7014         as well.
7015
7016         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7017         offset 0.
7018
7019         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7020
7021         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7022         process async exceptions received while in unmanaged code.
7023
7024         * mini.c (mini_init): Install a callback with the runtime which will be called
7025         when a thread receives an async exception while in unmanaged code.
7026
7027         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7028
7029         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
7030
7031 2008-01-16  Wade Berrier  <wberrier@novell.com>
7032
7033         * cpu-g4.md:
7034         * cpu-arm.md:
7035         * cpu-s390x.md:
7036         fix build
7037
7038 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7039
7040         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
7041         compilation with sun cc.
7042
7043         * cpu-*.md: Fix the build.
7044
7045         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
7046
7047         * mini-amd64.h: Add some comments to the MonoLMF structure.
7048
7049         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
7050         
7051         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
7052         in the LMF structure if possible. This saves two instructions in the
7053         managed->native wrappers.
7054
7055         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
7056
7057 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7058
7059         * generic-sharing.c: New type argument lookup code which uses the
7060         runtime generic context template.
7061
7062 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
7065
7066         * mini-arm.c (add_general): Fix arm eabi parameter passing.
7067         (mono_arch_output_basic_block): Fix localloc implementation.
7068
7069         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
7070
7071         * mini-ia64.c (peephole_pass): Fix ia64 build.
7072
7073         * mini-amd64.c (peephole_pass): Fix a warning.
7074         
7075         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
7076         at a constant offset from sp/fp.
7077
7078         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
7079         instead of obtaining it from *lmf in the managed method case.
7080
7081 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
7084
7085 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
7086
7087         * mini.h (MonoInstList): New type.
7088         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
7089         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
7090         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
7091         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
7092         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
7093         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
7094         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
7095         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
7096         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
7097         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
7098         MONO_INST_LIST_FOR_EACH_ENTRY,
7099         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
7100         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
7101         mono_inst_list_first, mono_inst_list_last,
7102         mono_inst_list_next, mono_inst_list_prev): New instruction
7103         list handling interfaces.
7104         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
7105         list head 'ins_list'.
7106         (MonoInst): Replace next pointer with list head 'node'.
7107         (MonoCallInst): Make 'out_args' a MonoInstList.
7108         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
7109         (MonoCompile): Delete reverse_inst_list and
7110         reverse_inst_list_len.
7111         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
7112         mono_arch_lowering_pass, mono_arch_local_regalloc,
7113         mono_arch_output_basic_block, mono_arch_emit_prolog):
7114         Convert to new instruction lists.
7115         (insert_after_ins): Delete.
7116         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
7117         instruction lists.
7118         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
7119         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
7120         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
7121         mono_emulate_opcode, mono_emit_load_got_addr,
7122         inline_method, mono_method_to_ir, mono_print_bb_code,
7123         print_dfn, decompose_pass, nullify_basic_block,
7124         replace_out_block_in_code, remove_block_if_useless,
7125         merge_basic_blocks, move_basic_block_to_end,
7126         try_unsigned_compare, optimize_branches, mono_print_code,
7127         mini_select_instructions, remove_critical_edges): Likewise.
7128         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
7129         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
7130         mono_arch_output_basic_block, mono_arch_emit_prolog):
7131         Likewise.
7132         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
7133         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7134         mono_arch_output_basic_block): Likewise.
7135         (inst_list_prepend, insert_after_ins): Delete.
7136         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
7137         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
7138         instruction lists.
7139         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
7140         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
7141         mono_arch_emit_prolog): Likewise.
7142         * cfold.c (mono_constant_fold): Likewise.
7143         * liveness.c (visit_bb, mono_analyze_liveness,
7144         optimize_initlocals): Likewise.
7145         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
7146         * graph.c (mono_draw_code_cfg): Likewise.
7147         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
7148         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
7149         mono_ssa_cprop): Likewise.
7150         * abcremoval (get_relations_from_previous_bb, process_block):
7151         Likewise.
7152         * local-propagation (mono_cprop_invalidate_values,
7153         mono_local_cprop_bb): Likewise.
7154         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
7155         peephole_pass, mono_arch_output_basic_block,
7156         mono_arch_emit_prolog): Likewise.
7157         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
7158         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7159         mono_arch_emit_prolog): Likewise.
7160         (insert_after_ins): Delete.
7161         * aliasing.c (print_code_with_aliasing_information,
7162         mono_build_aliasing_information, mono_aliasing_deadce):
7163         Convert to new instruction lists.
7164         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
7165         peephole_pass, NEW_INS, mono_arch_lowering_pass,
7166         mono_arch_local_regalloc, mono_arch_output_basic_block):
7167         Likewise.
7168         (insert_after_ins): Delete.
7169         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
7170         peephole_pass, mono_arch_output_basic_block): Convert to
7171         new instruction lists.
7172         * mini-codegen (InstList, inst_list_prepend,
7173         insert_after_ins): Delete.
7174         (insert_before_ins, get_register_force_spilling,
7175         get_register_spilling, free_up_ireg, free_up_reg,
7176         create_copy_ins, create_spilled_store, alloc_int_reg,
7177         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
7178         to new instruction lists.
7179         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
7180         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
7181         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
7182         (insert_after_ins): Delete.
7183         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
7184         mono_arch_local_regalloc, mono_arch_output_basic_block,
7185         mono_arch_call_opcode): Convert to new instruction lists.
7186         (insert_after_ins): Delete.
7187         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
7188         peephole_pass, mono_arch_output_basic_block,
7189         mono_arch_emit_prolog): Convert to new instruction lists.
7190
7191 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7192
7193         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
7194
7195         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
7196         Fixes #353182.
7197
7198         * Makefile.am (version.h): Make this work with non-bash shells.
7199
7200 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
7203
7204 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
7207         the InitializeArray optimization.
7208
7209 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7210
7211         * mini.c driver.c: Don't include os/gc_wrapper.h.
7212
7213 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * mini.c (print_jit_stats): Print GC statistics if available.
7216
7217 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
7218
7219         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
7220
7221 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
7222
7223         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
7224
7225 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7226
7227         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
7228         
7229         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7230
7231         * driver.c (mono_main): Ditto.
7232
7233 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
7236
7237         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
7238         in the vtable can't be encoded.
7239         (compile_method): Ditto.
7240
7241 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
7244         defined.
7245
7246         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
7247         lmf->rbp.
7248
7249         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
7250         the top LMF entry belongs to the current method.
7251
7252         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
7253
7254 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7255
7256         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
7257         
7258         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
7259
7260         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
7261
7262         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
7263
7264         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
7265
7266         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
7267         implementation.
7268
7269         * basic-float.cs: Add an ulong->double cast test.
7270
7271 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
7272
7273         * mini.c (mono_method_to_ir): Fix a warning.
7274
7275 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * mini-ops.h: Add OP_SWITCH.
7278
7279         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
7280         CEE_SWITCH in back-end code, use OP_SWITCH instead.
7281
7282 2007-12-11  Geoff Norton  <gnorton@novell.com>
7283
7284         * mini-s390x.c: Minor change to the MAX() define to allow
7285         it to compile with other gcc versions.
7286
7287 2007-12-11  Geoff Norton  <gnorton@novell.com>
7288
7289         * cpu-s390x.md:
7290         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
7291
7292 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         exceptions-arm.c (mono_arch_get_restore_context): Restore
7295         the frame pointer.
7296
7297         exceptions-arm.c (throw_exception): Save the frame pointer.
7298         This is a partial fix for #323747. Only the client side is
7299         fixed.
7300
7301 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
7304         was using an unrelated variable to log the class which
7305         needed the cctor to be called. This was crashing on arm.
7306
7307 2007-12-09  Robert Jordan  <robertj@gmx.net>
7308
7309         * mini-x86.c (mono_arch_emit_epilog):
7310         Consider all kinds of 64-bit types. Fixes #323114.
7311
7312 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
7313
7314         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
7315
7316 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7317
7318         * mini-amd64.c (peephole_pass): Add a missing instruction check.
7319
7320 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7321
7322         * mini.c: run type ctor before allocating an object, not only
7323         when running it's constructor method (fixes at least part of bug #342507).
7324
7325 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7326         
7327         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
7328         
7329         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
7330         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
7331         function.
7332
7333         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
7334         mono_generic_class_init_trampoline () the same as it is done with the other
7335         trampolines.
7336
7337         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
7338         aot-runtime.c aot-compiler.c: Implement AOT support.    
7339
7340 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7341
7342         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
7343         build for archs which don't have the vtable trampoline defined
7344         yet.
7345
7346 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
7349
7350         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
7351
7352         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
7353
7354         * tramp-<ARCH>.c: Use the new helper function.
7355
7356 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7357
7358         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
7359         trampoline call, which takes a vtable argument.
7360
7361         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
7362         OP_TRAMPCALL_VTABLEs like other calls.
7363
7364         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
7365         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
7366         call.  Implemented a support function which fetches the vtable
7367         from a register set.
7368
7369         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
7370         Implemented a generic class init trampoline, using the
7371         OP_TRAMPCALL_VTABLE opcode.
7372
7373         * mini.c: Implemented static field access when sharing generic
7374         code.  This implies initing the class using the new
7375         OP_TRAMPCALL_VTABLE call.
7376
7377 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7378
7379         * mini.c: Don't compile methods with sharing enabled if their
7380         classes are disabled for sharing.
7381
7382 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * inssel.brg: Add a missing sign extension to the GETCHR and array access
7385         opcodes. Fixes #346563.
7386
7387         * objects.cs: Add a new test.
7388
7389         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
7390
7391         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
7392         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
7393
7394 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
7397
7398 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
7401         code stream.
7402
7403 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
7406
7407         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
7408         optimization in the AOT case.
7409         
7410 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
7411
7412         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
7413         
7414         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
7415
7416         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
7417
7418         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
7419
7420         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
7421         is created by the inlined delegate ctor.
7422
7423         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
7424
7425         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
7426
7427 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * cpu-x86.md: Fix the length of ckfinite.
7430
7431 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
7432
7433         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
7434         
7435         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
7436         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
7437
7438         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
7439
7440         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
7441         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
7442
7443 2007-11-28  Martin Baulig  <martin@ximian.com>
7444
7445         * mini-x86.c
7446         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
7447         after creating the trampoline.
7448
7449 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * aot-runtime.c (load_aot_module): Check runtime version if needed.
7452
7453         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
7454         the same version.
7455
7456         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
7457         instead of the calling method to help AOT.
7458
7459         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
7460
7461 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
7462
7463         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
7464         is defined.
7465
7466 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
7467
7468         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
7469         
7470         * aot-compiler.c (compile_method): Correct check for generic method definitions.
7471         (encode_method_ref): No need to handle generic method definitions specially.
7472
7473         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
7474
7475         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
7476         decode_klass_info.
7477
7478         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
7479         encode_klass_info.
7480         (compile_method): Enable generic sharing.
7481
7482 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
7483
7484         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
7485         (mini_method_compile): Add preliminary support for AOTing shared generic code.
7486
7487         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
7488         generic code.
7489
7490         * mini-trampolines.c: Fix a warning.
7491
7492         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
7493         NEW_PCONST.
7494         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
7495         (generic_class_is_reference_type): Remove unused function.
7496
7497         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
7498         in the generic vtable trampoline case.
7499
7500         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
7501         
7502         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
7503         return an AOT method based on a vtable slot.
7504
7505         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
7506
7507         * mini.c (mini_get_vtable_trampoline): Export this.
7508
7509 2007-11-22  Martin Baulig  <martin@ximian.com>
7510
7511         * debug-debugger.h
7512         (MonoDebuggerInfo): Move `debugger_version' up.
7513
7514 2007-11-22  Martin Baulig  <martin@ximian.com>
7515
7516         * mini-amd64.c
7517         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
7518
7519         * mini-trampolines.c
7520         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
7521         after compiling the method.
7522
7523 2007-11-20  Martin Baulig  <martin@ximian.com>
7524
7525         * debug-mini.c
7526         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
7527         (mono_debugger_remove_breakpoint): Likewise.
7528         (mono_debugger_check_breakpoints): Likewise.
7529
7530         * debug-debugger.c: Implement the new breakpoint interface here.
7531
7532 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
7535         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
7536
7537         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
7538
7539 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
7540
7541         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
7542
7543         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
7544         mini.c.
7545
7546         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
7547         mini.c.
7548
7549         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
7550         returning a vtype in a register.
7551
7552         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
7553         here from the arch specific code.
7554
7555         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
7556         mini.c.
7557
7558         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
7559         (mono_arch_emit_prolog): Increment maximum prolog size.
7560
7561         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
7562         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
7563
7564         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
7565         MonoGenericSharingContext.
7566
7567         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
7568         MonoGenericSharingContext. Allocate memory from the cfg mempool.
7569
7570 2007-11-15  Mark Probst  <mark.probst@gmail.com>
7571
7572         * mini.c, mini.h, generic-sharing.c: Functions for producing code
7573         which extract fields out of the runtime generic context.  Full
7574         sharing of the NEWARR opcode.
7575
7576 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
7577
7578         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
7579         --enable-minimal=ssa.
7580
7581 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
7582
7583         * mini-trampolines.c (mono_delegate_trampoline): Update after 
7584         mono_marshal_get_delegate_invoke () signature change.
7585
7586 2007-11-13  Mark Probst  <mark.probst@gmail.com>
7587
7588         * mini.c: Removed the shared context in favor of the generic
7589         sharing context.  Allocate the MonoJitInfo structure with room for
7590         the generic sharing context if it's needed.
7591
7592         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
7593         domain-internals.h now.
7594
7595         * mini-x86.c: Pass the generic sharing context to get_call_info ().
7596
7597         * generic-sharing.c: Several changes for working without a shared
7598         context and instead operating on open types instead.
7599
7600 2007-11-12  David S. Miller  <davem@davemloft.net>
7601
7602        * inssel-sparc.brg: Fix double instruction emit.
7603
7604 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
7607         Get/Set/Address methods.
7608         
7609         * mini.c debug-debugger.c mini-trampolines.c: Update after 
7610         mono_marshal_get_delegate_invoke signature change.
7611
7612 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7613
7614         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
7615         This can happens with dynamic methods. Fixes the other bug in #322722.
7616
7617 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7618
7619         * tramp-arm.c (mono_arch_patch_callsite): Support patching
7620         BX call sequence.
7621
7622         * mini-arm.c (arm_patch): Implement patching of BX call
7623         sequence. Fixes one of the bugs in #322722.
7624
7625 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
7626
7627        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
7628        under Linux.  We only need to flush every 32-byte cache line.    
7629
7630 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
7631
7632         * mini.c:
7633         move_basic_block_to_end: Add branches when needed, eventually creating
7634         a new BB.
7635         optimize_branches: added a parameter that tells if it's ok to create
7636         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
7637         and avoid calling move_basic_block_to_end when it's not ok.
7638         Fixes bug 318677.
7639
7640 2007-11-07  Mark Probst  <mark.probst@gmail.com>
7641
7642         * mini.c: Abort inlining call to InitializeArray if something
7643         looks wrong.  Let the icall handle it, which now has proper safety
7644         checks.
7645
7646 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7647
7648         * mini.c (mono_spill_call): add support for soft-float.
7649
7650         * mini.c (mono_method_to_ir): add support for soft-float
7651         to inlined functions that return float.
7652
7653         * mini.c (mono_method_to_ir): add support for soft-float
7654         to cee_stsfld opcode on float fields.
7655
7656 2007-11-05  Geoff Norton  <gnorton@novell.com>
7657
7658         * mini-x86.h: Fix the structure access for X86 Leopard.
7659
7660
7661 2007-11-05  Martin Baulig  <martin@ximian.com>
7662
7663         * mini-trampolines.c
7664         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
7665         after compiling the method to notify the debugger.
7666
7667 2007-11-05  Martin Baulig  <martin@ximian.com>
7668
7669         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
7670
7671 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
7674         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
7675
7676 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
7677
7678         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
7679         native-to-managed wrappers.
7680         
7681 2007-11-01  Geoff Norton  <gnorton@novell.com>
7682
7683         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
7684         members.
7685
7686 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
7687
7688         * mini.c, mini-x86.c: when getting back from unmanaged code
7689         to managed via a marshaled delegate we also need to set the
7690         right domain.
7691
7692 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
7693
7694         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
7695         for amd64.
7696
7697 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
7698
7699         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
7700         let the debugger or other external agents to tell the JIT when
7701         a sw breakpoint has been inserted in the code that the JIT needs
7702         to be able to inspect.
7703
7704 2007-10-31  Martin Baulig  <martin@ximian.com>
7705
7706         * debug-debugger.h
7707         (MonoDebuggerInfo): Remove `runtime_class_init'.
7708
7709 2007-10-30  Martin Baulig  <martin@ximian.com>
7710
7711         * debug-mini.h
7712         (mono_debugger_thread_created): Added `MonoThread *' argument.
7713         (mono_debugger_extended_notification): New public method.
7714         (mono_debugger_trampoline_compiled): New public method.
7715
7716         * debug-mini.c
7717         (MonoDebuggerThreadInfo): Added `thread' and
7718         `extended_notifications' fields.
7719
7720         * debug-debugger.c
7721         (debugger_executable_code_buffer): New static variable.
7722
7723         * debug-debugger.h
7724         (MonoDebuggerInfo): Added `executable_code_buffer',
7725         `executable_code_buffer_size', `breakpoint_info_area',
7726         `breakpoint_table' and `breakpoint_table_size'.
7727
7728 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
7731         that IP  either is an unused value or the vtable pointer. IMT 
7732         calls use vtable + offset now. Reduced by almost half the size
7733         of IMT entries.
7734
7735 2007-10-26  Jonathan Chambers <joncham@gmail.com>
7736
7737         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
7738         defines to access param registers. Replace long usage with
7739         gsize as sizeof(long) != sizeof(void*) on Win64.
7740
7741         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
7742         on Win64. Fix intrinsic, use _AddressOfReturnAddress
7743         instead of non-existant _GetAddressOfReturnAddress.
7744
7745         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
7746         param registers. Save/restore %rdi and %rsi in MonoLMF.
7747
7748         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
7749         param registers. Modify (throw_exception) signature to take 
7750         %rdi and %rsi on Win64. 
7751
7752         Code is contributed under MIT/X11 license.
7753
7754 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7755
7756         * helpers.c: unlink debugging output files.
7757
7758 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * mini.c: Move mono_create_ftnptr () to object.c.
7761
7762 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7763
7764         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
7765         optional. This function can now be used to disassemble code generated
7766         outside the JIT such as trampolines and IMT thunks.
7767
7768         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
7769
7770         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
7771         vtable pointer from a ldr instruction.
7772
7773         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
7774         new IMT call sequence.
7775
7776         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
7777         call sequence for interface invocations.
7778
7779         * mini-arm.c (mono_arch_emit_imt_argument): added, required
7780         for imt support. This function is empty since IMT on ARM requires no
7781         special handling on the IR side.
7782
7783         * mini-arm.c (mono_arch_find_imt_method): added, required for
7784         imt support.
7785
7786         * mini-arm.c (mono_arch_find_this_argument): added, required
7787         for imt support.
7788
7789         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
7790         a ldr instruction to load a value stored in the code stream.
7791
7792         * mini-arm.c (mono_arch_build_imt_thunk):added, required
7793         for imt support.
7794
7795
7796 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * mini.c (mini_init): Install the jump trampoline callback.
7799
7800 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7801
7802         * mini-trampolines.c: handle synchronized methods with the common
7803         vtable trampoline (bug #335601).
7804
7805 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
7808
7809         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
7810         64 bit platforms.
7811
7812         * mini-ia64.h mini-ia64.c: Add support for IMT.
7813
7814         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
7815         prolog. Fixes #331958.
7816
7817 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
7818
7819         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
7820
7821 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7822
7823         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
7824         trampoline.
7825
7826 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
7827
7828         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
7829         trampoline.
7830
7831 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
7832
7833         * mini-x86.c, mini-x86.h: x86 support for the common vtable
7834         trampoline.
7835
7836 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
7837
7838         * mini-trampolines.c: changed the magic rampoline to understand
7839         the common vtable trampoline method: the method to invoke is
7840         determined by the vtable displacement of the call.
7841
7842 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7843
7844         * mini.c, mini.h: register the common vtable trampoline if the
7845         architecture supports it.
7846
7847 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7848
7849         * cpu-amd64.md: use the correct max length for tls_get.
7850
7851 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
7854         CEE_STELEM_ANY. Fixes #333696.
7855
7856 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7857
7858         * exceptions-x86.c: provide more graceful handling of the case where
7859         we followed a bogus function pointer from managed code (bug #332866).
7860
7861 2007-10-11  Mark Probst  <mark.probst@gmail.com>
7862
7863         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
7864         replaces the generic_shared flag and will carry more information
7865         in the future.
7866
7867         * generic-sharing.c: Added mini_type_stack_size() which allows
7868         allows open types if given a generic sharing context.
7869         mini_get_basic_type_from_generic() takes a
7870         MonoGenericSharingContext* instead of a MonoCompile* now.
7871
7872         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
7873         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
7874         mini-sparc.c, mini-x86.c: Trivial changes required by the two
7875         changes above.  Just passing arguments through to the right
7876         places.
7877
7878 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7879
7880         * mini-arm.c: unify the call emission to emit_code_seq().
7881
7882 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
7883
7884         * tramp-arm.c: reduced the trampoline size.
7885
7886 2007-10-10  Mark Probst  <mark.probst@gmail.com>
7887
7888         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
7889         variable handling out of arch-specific code.
7890
7891 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
7892
7893         * mini-arm.c: implemented fast delegate dispatch.
7894
7895 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
7898         that fp elimination is turned off if the space required by locals is too
7899         big. Fixes #331958.
7900
7901 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7902
7903         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
7904         ARM to the new style trampoline.
7905
7906 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
7909
7910         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
7911
7912 2007-10-09  Martin Baulig  <martin@ximian.com>
7913
7914         * debug-debugger.h
7915         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
7916         `field_info_offset_offset'.     
7917
7918 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
7919
7920         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
7921         removed more internal usage of the r11 register and made it available
7922         to the register allocator.
7923
7924 2007-10-08  Mark Probst  <mark.probst@gmail.com>
7925
7926         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
7927         when sharing generics and treat type variables as references.
7928
7929 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
7930
7931         * mini-ppc.c: started removing the internal uses of register r11
7932         to eventually allow the register allocator to manage it as an
7933         additional available register.
7934
7935 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7936
7937         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
7938
7939 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
7940
7941         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
7942         specific trampolines as they are not performance critical as a jump
7943         target (maybe align as before only for AOT code?). This saves about
7944         200 KB of native code on x86 for monodevelop startup.
7945
7946 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
7947
7948         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
7949         monodevelop startup.
7950
7951 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
7954
7955         * mini-sparc.h mini-sparc.c: Implement IMT support.
7956
7957         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
7958         its smaller and doesn't clobber sparc_g1.
7959
7960         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
7961
7962 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
7963
7964         * mini-ppc.c: optimized the size of the IMT thunks a bit.
7965
7966 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7967
7968         * mini-ppc.c: implemented fast delegate invocation.
7969
7970 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
7971
7972         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
7973
7974 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
7975
7976         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
7977         code to the new style trampoline in preparation for IMT support.
7978
7979 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
7980
7981         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
7982         systems already. This also reduces the specific trampiline sizes and
7983         prepares for the use of r12 as the IMT identifier register.
7984
7985 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
7986
7987         * mini-mips.h: endianess fix (simplified from a patch by
7988         Thomas Kunze <thommy@tabao.de>, bug #323737).
7989
7990 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
7991
7992         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
7993         to access ucontext fields and enable netbsd support
7994         (partially from Magnus Henoch <mange@freemail.hu>).
7995
7996 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
7997
7998         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
7999         use the preprocessor from the CPP env var if it is set.
8000
8001 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8002
8003         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8004         code, before interface_offset gets used.
8005
8006 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8009         mono_class_setup_vtable () before accessing klass->vtable.
8010
8011 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8014         hackish.
8015
8016 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8017
8018         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8019         IMT slots (this saves hundreds of KB of memory in programs like
8020         IronPython and Monodevelop).
8021
8022 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8023
8024         * mini.c: print the delegate counter.
8025
8026 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8027
8028         * mini-x86.c: make it easier to enable the debugging code for IMT
8029         slots.
8030
8031 2007-09-28  Martin Baulig  <martin@ximian.com>
8032
8033         * debug-debugger.h
8034         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
8035         `mono_method_klass_offset' and `mono_method_token_offset'.
8036
8037 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8038
8039         * mini.c: First generics sharing implementation.  Can only share
8040         in very simple cases.  If sharing doesn't work it falls back to
8041         dedicated compilation.
8042
8043         * mini.h: Flag in MonoCompile to specify whether generic
8044         compilation is shared.  Flags enum for marking which generic inst
8045         of a context is used.  Prototypes for helper functions.
8046
8047         * generic-sharing.c: Helper functions for generic method sharing.
8048
8049         * optflags-def.h: Optimization flag (gshared) for enabling generic
8050         method sharing added.
8051
8052         * Makefile.am: generic-sharing.c added.
8053
8054 2007-09-19 Daniel Nauck <dna@mono-project.de>
8055
8056         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
8057
8058 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
8059         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
8060         fixes bug 325507.
8061
8062 2007-09-19  Martin Baulig  <martin@ximian.com>
8063
8064         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
8065         mono_debug_cleanup() is now part of mono_cleanup().
8066
8067 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * driver.c (mono_main): Fix a warning.
8070
8071 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8072
8073         * aot-compiler.c: Optimize various parts when processing large assemblies.
8074         Fixes ##325568.
8075
8076         * mini.c (mono_patch_info_hash): Improve hash function.
8077
8078 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8079
8080         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
8081         
8082         Code is contributed under MIT/X11 license.
8083
8084 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * mini.c (mini_init): Fix a leak.
8087
8088         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
8089
8090 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8091
8092         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
8093
8094 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8095
8096         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
8097
8098 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
8101         variance tests.
8102
8103         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
8104
8105         * mini.c (handle_alloc): Enable managed allocators in AOT code.
8106
8107         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
8108
8109         * aot-runtime.c (decode_patch_info): Ditto.
8110
8111 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8112
8113         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
8114         static case. Cache delegates in architecture specific code, 
8115         based on number of parameters.
8116         
8117         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
8118         in architecture specific code, based on number of parameters.
8119         
8120         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
8121         caching happen in architecture specific code now.
8122         
8123         Code is contributed under MIT/X11 license.
8124
8125 2007-09-12  Jonathan Chambers <joncham@gmail.com>
8126
8127         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
8128         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
8129         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
8130
8131         Code is contributed under MIT/X11 license.
8132
8133 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
8134         * mini.c: (mono_thread_abort) Fixed bug #82416.
8135
8136 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8137
8138         * mini.: hook the new managed GC allocation feature into the JIT.
8139
8140 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
8141
8142         * mini.c: implementation for the new runtime tls opcode.
8143
8144 2007-09-11  Martin Baulig  <martin@ximian.com>
8145
8146         * debug-debugger.h
8147         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
8148         `mono_method_inflated_offset'.
8149
8150 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
8151
8152         * driver.c mini.h mini.c: Add a new devel command line option for injecting
8153         async exceptions into a method.
8154
8155         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
8156         purpose of testing whenever the unwinder works at every instruction.
8157
8158 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
8159
8160         * mini.c: check accessibility of method used in ldftn (fixes
8161         bug #82635).
8162
8163 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
8164
8165         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
8166
8167         * inssel.brg: Fix a warning.
8168
8169 2007-09-03  Martin Baulig  <martin@ximian.com>
8170
8171         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
8172         now takes the `main_method' as argument.
8173
8174 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
8175
8176         * cpu-sparc.md (endfilter): Add missing src1:i argument.
8177
8178 2007-08-30  Jonathan Chambers <joncham@gmail.com>
8179
8180         * driver.c: include the cil-coff.h header on Windows.
8181         
8182         Code is contributed under MIT/X11 license.
8183
8184 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
8185
8186         * mini.c, driver.c: don't include the cil-coff.h header.
8187
8188 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8189
8190         * mini.c: flag places that needs fixes fo soft-float support.
8191
8192 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
8193
8194         * mini.h, inssel-float.brg: fix soft-float constant loads on big
8195         endian systems (partially from Dean Jenkins, bug #81924).
8196
8197 2007-08-28  Mark Probst  <mark.probst@gmail.com>
8198
8199         * mini.c (check_linkdemand): Remove embedded reference object in
8200         call to LinkDemandSecurityException.
8201         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
8202         with an IntPtr instead of a reference object.
8203
8204 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
8205
8206         * mini.c (handle_initobj): Handle alignment properly.
8207
8208         * inssel.brg (mini_emit_memset): Ditto. 
8209
8210         * inssel.brg (mini_emit_memcpy): Ditto. 
8211
8212         * inssel-sparc.brg: Ditto.              
8213
8214         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
8215
8216 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
8217
8218         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
8219         exceptions raised in unmanaged code. Fixes part of #82594.
8220
8221 2007-08-24  Mark Probst  <mark.probst@gmail.com>
8222
8223         * mini.c (mono_method_to_ir), declsec.c
8224         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
8225
8226 2007-08-22  Martin Baulig  <martin@ximian.com>
8227
8228         * debug-mini.h
8229         (MonoDebuggerThreadInfo): New typedef.
8230         (mono_debugger_thread_table): New global variable.
8231         (mono_debugger_thread_created): New public function.
8232         (mono_debugger_thread_cleanup): New public function.
8233
8234         * debug-debugger.h
8235         (MonoDebuggerInfo):
8236         - removed `get_current_thread' and `lookup_assembly'.
8237         - removed `data_table'.
8238         - added `thread_table'.
8239
8240         * mini.c
8241         (mono_thread_start_cb): Call mono_debugger_thread_created().
8242         (mono_thread_attach_cb): Likewise.
8243         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
8244         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
8245         initial domain.
8246
8247         * driver.c (mono_main): Move mono_debug_init() up, before calling
8248         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
8249
8250 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8251
8252         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
8253         together when passing several arguments of type double (gives a small
8254         speedup and saves a few bytes of generated code).
8255
8256 2007-08-20  Jb Evain  <jbevain@novell.com>
8257
8258         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
8259
8260 2007-08-20  Jb Evain  <jbevain@novell.com>
8261
8262         * mini.c (mono_method_to_ir): throw MethodAccessException
8263         and FieldAccessException instead of InvalidProgramException.
8264
8265 2007-08-20  Mark Probst  <mark.probst@gmail.com>
8266
8267         * mini.c: CoreCLR security checks.
8268
8269         * mini.h: Removed MonoSecurityMode (moved to
8270         metadata/security-manager.h) and mono_security_mode global var
8271         (replaced by set/get functions in security-manager.h).
8272
8273         * driver.c: Added "core-clr-test" security mode for testing.  Used
8274         set-function for setting security mode.
8275
8276 2007-08-17  Mark Probst  <mark.probst@gmail.com>
8277
8278         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
8279         the new jit_info_table.
8280
8281         * driver.c: Test code for the new jit_info_table (enabled by the
8282         define MONO_JIT_INFO_TABLE_TEST).
8283
8284 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
8285
8286         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
8287         detection of call <REG> instruction sequence. Fixes build on freebsd.
8288
8289 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * mini-exceptions.c: Fix a warning.
8292
8293 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
8294
8295         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
8296         stack overflow handling code on amd64 too.
8297
8298         * mini-exceptions.c (mono_setup_altstack): Make this use 
8299         mono_thread_get_stack_bounds ().
8300
8301         * mini-x86.h: Disable sigaltstack on solaris x86.
8302
8303 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
8306
8307 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
8308
8309         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
8310
8311 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
8314
8315         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
8316
8317 2007-08-03  Neale Ferguson <neale@sinenomine.net>
8318
8319         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
8320         due to alignment.
8321
8322 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
8323
8324         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
8325         to be emitted (bug #82281).
8326
8327 2007-08-01  Martin Baulig  <martin@ximian.com>
8328
8329         Merged the `debugger-dublin' branch.
8330
8331         * debug-debugger.h (MonoDebuggerInfo):
8332         Removed the `old_*' compatibility entries.
8333         Added `debugger_version' and `data_table'.
8334         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
8335         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
8336
8337         * debug-mini.c
8338         (MiniDebugMethodBreakpointInfo): Add `address_list'.
8339         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
8340         instead of a `gconstpointer'.
8341         (mono_debugger_insert_method_breakpoint): Return a
8342         `MonoDebugMethodAddressList *'.
8343
8344 2007-06-28  Martin Baulig  <martin@ximian.com>
8345
8346         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
8347
8348 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
8349
8350         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
8351         __builtin_frame_address () since it is broken on older gcc versions.
8352
8353 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8354
8355         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
8356         on the stack overflow handling and made the managed stack overflows
8357         catchable in most cases using soft guard pages.
8358         * exceptions-x86.c: added code to restore the protection in the soft
8359         guard pages at the end of exception handling.
8360
8361 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
8364
8365 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8366
8367         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
8368         exception handling.
8369
8370 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8371
8372         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
8373         signal handling support until it has been ported to the new mechanism.
8374         * mini.c: fixed stack overflow detection and use the new
8375         architecture code  to handle signals on the altstack.
8376
8377 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
8378
8379         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
8380         stack overflows on the alt stack.
8381
8382 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8383
8384         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
8385         stack overflows on the alt stack.
8386
8387 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
8388
8389         * exceptions-ppc.c: cleanup preparing for altstack support.
8390
8391 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
8392
8393         * exceptions-arm.c: cleanup preparing for altstack support.
8394
8395 2007-07-27  Mark Probst  <mark.probst@gmail.com>
8396
8397         * mini.c (print_jit_stats): Output hazard pointer stats.
8398
8399 2007-07-26  Mark Probst  <mark.probst@gmail.com>
8400
8401         * driver.c, mini.c: Replaced security mode flags with a single
8402         enum variable.
8403
8404 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8405
8406         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
8407
8408 2007-07-25  Mark Probst  <mark.probst@gmail.com>
8409
8410         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
8411         (which doesn't do anything yet) for activating Core CLR
8412         (Silverlight) security.
8413
8414 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
8415
8416         * mini-codegen.c: work around a possible gcc bug on arm.
8417
8418 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8419
8420         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
8421         message for platforms that don't support AOT compilation.
8422
8423 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8424
8425         * mini.h, mini.c, driver.c: temporary smcs hack.
8426
8427 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
8428
8429         * mini-arm.h, mini-arm.c: arm EABI fixes.
8430
8431 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
8434         case.
8435
8436         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
8437         trampolines taking a method argument.
8438
8439         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
8440
8441         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
8442         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
8443
8444         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
8445         JIT compilation throws an exception. Fixes #82050.
8446
8447 2007-07-19  Mark Probst  <mark.probst@gmail.com>
8448
8449         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
8450         with the MONO_EXCEPTION_ defines.
8451
8452 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
8453
8454         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
8455         #82117.
8456         
8457         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
8458         the cause of an assertion.
8459
8460 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
8461
8462         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
8463         removed.
8464
8465 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
8466
8467         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
8468         assert. Should fix #82103.
8469
8470 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
8471
8472         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
8473         here too. Fixes #82095.
8474
8475         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
8476         addresses.
8477
8478         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
8479
8480         * mini-amd64.h: Enable IMT for amd64.
8481         
8482         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
8483
8484 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
8485
8486         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
8487
8488 2007-07-12  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
8491         as soon as check_linkdemand sets an exception_type.
8492
8493 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
8494
8495         * mini-x86.c: fixed offsets for IMT call sequence.
8496         * mini-x86.h: enable IMT again.
8497
8498 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
8499
8500         * trace.c (mono_trace_enter_method): Decode MonoType too.
8501
8502         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
8503
8504         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
8505
8506         * mini-amd64.c: Add preliminary IMT implementation.
8507         
8508 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8509
8510         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
8511         understand the new IMT-base interface invocation (thanks to
8512         Daniel Nauck for the report and the remote debugging session).
8513
8514 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8515
8516         * mini-x86.c: size and speed optimizations for the IMT bsearch.
8517
8518 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
8519
8520         * Makefile.am (aotcheck): Make this actually use the AOTed code.
8521
8522 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
8523
8524         * mini-trampolines.c: implement AOT IMT support.
8525         * mini-x86.h: enable IMT support for wider testing.
8526
8527 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
8528
8529         * inssel.brg (emit_imt_argument): Add aot support here.
8530
8531         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
8532
8533 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8534
8535         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
8536         of the IMT implementation, partially from massi, with my
8537         implementation of the bsearch sequence. Disabled by default until
8538         the AOT code is implemented.
8539
8540 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
8543
8544         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
8545
8546 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8547
8548         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
8549         arch-independent IMT JIT code from Massimiliano
8550         Mantione (massi@ximian.com) with small cleanups from me.
8551
8552 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
8553
8554         * Makefile.am: fix svn invocation to get the svn revision to be
8555         independent of the local language (build fix).
8556
8557 2007-07-09  Mark Probst  <mark.probst@gmail.com>
8558
8559         * mini.c (inline_method): Reset cfg->exception_type if the
8560         inlining is aborted.  Fixes: 82049.
8561
8562 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8563
8564         * mini.c: remove assert from exception handling code when exception_ptr
8565         is not set.
8566
8567 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * mini.c (mono_codegen): Add an assert.
8570
8571         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
8572         enter and leave code.
8573         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
8574
8575 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8576
8577         * mini-ppc.c: fixed memory corruption for localloc(0)
8578         (bug #81852).
8579
8580 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
8581         
8582         * mini.c: Fix warnings.
8583
8584 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
8585
8586         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
8587         to emit better double->int conversions.
8588
8589 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
8590
8591         * mini.c: the provided Min/Max optimizations are valid for unisgned
8592         ints.
8593
8594 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
8595
8596         * 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
8597
8598 2007-06-28  Miguel de Icaza  <miguel@novell.com>
8599
8600         * mini.c (mono_running_on_valgrind): Add support for reporting the
8601         method and  its boundaries to valgrind.
8602
8603 2007-06-28  Martin Baulig  <martin@ximian.com>
8604
8605         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
8606
8607 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
8608
8609         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
8610
8611         * generic.2.cs: Add new test case.
8612
8613 2007-06-25  Martin Baulig  <martin@ximian.com>
8614
8615         Merged the `debugger-dublin' branch.
8616
8617         * debug-mini.c
8618         (mono_debugger_insert_method_breakpoint): New public method.
8619         (mono_debugger_remove_method_breakpoint): Likewise.
8620         (mono_debugger_check_breakpoints): New static method.
8621         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
8622
8623         * debug-debugger.h (MonoDebuggerInfo):
8624         Renamed (to keep backward compatibility in the vtable):
8625         `insert_breakpoint' -> `old_insert_breakpoint'.
8626         `remove_breakpoint' -> `old_remove_breakpoint'.
8627         `create_string' -> `old_create_string'.
8628         `lookup_class' -> `old_lookup_class'.
8629         `lookup_type' -> removed; changed into a dummy field.
8630         `lookup_assembly' -> `old_lookup_assembly'.
8631         Added (same functionality, but different signature):
8632         `create_string', `lookup_class', `lookup_assembly'
8633         Added new:
8634         `get_method_addr_or_bpt', `remove_method_breakpoint',
8635         `runtime_class_init'.
8636
8637         * debug-debugger.c: Merged the `debugger-dublin' branch.
8638
8639 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
8642         well.
8643         (peephole_pass): Likewise.
8644
8645 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
8646
8647         * driver.c: hopefully make setaffinity work also for ancient
8648         versions of linux.
8649
8650 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
8651
8652         * driver.c : win32 build fix.
8653
8654 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8655
8656         * driver.c: check for the MONO_NO_SMP env var and bind to a single
8657         processor if it is set.
8658
8659 2007-06-21  Martin Baulig  <martin@ximian.com>
8660
8661         * debug-mini.h: New file.
8662
8663         * debug-mini.c
8664         (mono_debugger_insert_breakpoint_full): Moved here from
8665         ../metadata/mono-debug-debugger.c.
8666         (mono_debugger_remove_breakpoint): Likewise.
8667         (mono_debugger_breakpoint_callback): Likewise.
8668
8669 2007-06-15  Raja R Harinath  <rharinath@novell.com>
8670
8671         * jit-icalls.c (mono_helper_compile_generic_method): Update to
8672         changes in MonoGenericClass.
8673
8674 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
8677
8678 2007-06-14  Raja R Harinath  <rharinath@novell.com>
8679
8680         * jit-icalls.c (mono_helper_compile_generic_method): Update to
8681         removal of MonoGenericMethod.
8682
8683 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8684
8685         * mini-exceptions.c: hooks for the exception events profiling API.
8686
8687 2007-06-14  Randolph Chung  <tausq@debian.org>
8688
8689         * Makefile.ma: Add hppa target.
8690         * mini-arch.h: Include mini-hppa.h
8691         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
8692         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
8693         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
8694
8695 2007-06-14  Randolph Chung  <tausq@debian.org>
8696
8697         * inssel.brg: Add rules for "chained" compare-branch operations so that
8698         a single compare op can affect multiple branches.  Adjust cost for
8699         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
8700         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
8701         cost for some rules so that they can more easily be overridden by
8702         per-arch rules (with fixes from lupus).
8703         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
8704
8705 2007-06-13  Randolph Chung  <tausq@debian.org>
8706
8707         * mini-ops.h: Reorder branch ops so that they match the order of the
8708         corresponding CEE_* ops.  The code expects them this way.
8709         Add new ops for HPPA target.
8710         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
8711
8712 2007-06-13  Randolph Chung  <tausq@debian.org>
8713
8714         * mini-exceptions.c: Handle cases where the stack grows towards
8715         larger addresses.
8716         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
8717
8718 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
8719
8720         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
8721         counter.
8722         * driver.c: explain where a non-matching corlib is found.
8723
8724 2007-06-13  Mark Probst  <mark.probst@gmail.com>
8725
8726         * mini.c (print_jit_stats): Output dynamic code allocation stats.
8727
8728 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
8729
8730         * mini-exceptions.c: Generate a method profile leave event during
8731         an exception to ensure that the profiler gets notified.
8732
8733 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
8736         branch.
8737
8738         * cpu-amd64.md: Add long_and/or/xor opcodes.
8739
8740 2007-06-06  Wade Berrier  <wberrier@novell.com>
8741
8742         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
8743         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
8744         length of instruction shr_imm (expected 8, got 10)
8745
8746 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
8749
8750 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8751
8752         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
8753         MonoInternalHashTable again (fixed bug in the internal hash table
8754         code).
8755
8756 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8757
8758         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
8759         Have to figure out what makes it crash the SWF regression.
8760
8761 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
8764
8765 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8766
8767         * mini.c: optimize out the type check when storing null in a
8768         reference array.
8769
8770 2007-06-04  Mark Probst  <mark.probst@gmail.com>
8771
8772         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
8773         MonoInternalHashTable.
8774
8775 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8776
8777         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
8778         signed integer methods.
8779
8780 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
8781
8782         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
8783         permanently since the current approach doesn't work.
8784
8785 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
8786
8787         * inssel.brg (stmt): Only call delegate->invoke_impl if 
8788         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
8789
8790 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
8793         the sreg2==rdx case.
8794         
8795         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
8796         account if it contains a rex prefix.
8797         (peephole_pass): Handle OP_FMOVE as well.
8798
8799 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
8800
8801         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
8802         as it causes regressions.
8803
8804 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
8805
8806         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
8807         static case as well.
8808
8809         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
8810
8811         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
8812         (mono_arch_get_this_arg_from_call): Ditto.
8813
8814         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
8815
8816         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
8817         invoke_impl field.
8818
8819         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
8820         (mono_arch_get_this_arg_from_call): Ditto.
8821
8822         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
8823         
8824         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
8825         try to create optimized invoke code and use that for further invocations. 
8826         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
8827
8828         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
8829
8830 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
8831
8832         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
8833         sealed classes or methods.
8834         *devirtualization.cs: tests for the new optimization
8835
8836 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
8839         by the update_volatile () function.
8840
8841 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
8844         require it.
8845
8846         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
8847
8848 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
8849
8850         * mini.c: Add configure checks for header files.
8851         * mini-x86.c: Add configure checks for header files.
8852         * trace.c: Add configure checks for header files.
8853         * aot-runtime.c: Add configure checks for header files.
8854         * aot-compiler.c: Add configure checks for header files.
8855         * driver.c: Add configure checks for header files.
8856         * mini-codegen.c: Add configure checks for header files.
8857         
8858         Code is contributed under MIT/X11 license.
8859
8860 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
8863         icompare_imm -128 + op_iclt. Fixes #81703.
8864
8865 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
8868
8869 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
8870
8871         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
8872         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
8873         so that all isinst checks now use "interface_bitmap".
8874
8875 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * cpu-amd64.md (jmp): Fix a warning.
8878
8879         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
8880
8881         * basic.cs: Add new regression test.
8882
8883         * basic.cs: Remove test which is now in basic-long.cs.
8884
8885         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
8886
8887         * basic-long.cs: Add new test.
8888         
8889 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
8890
8891         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
8892
8893 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
8896
8897         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
8898         places.
8899         
8900         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
8901         throwing code a bit.
8902
8903         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
8904         the exception throwing code a bit.
8905
8906         * mini-x86.c (get_call_info): Allocate result from a mempool.
8907
8908 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
8909
8910         * aot-compiler.c (find_typespec_for_class): Fix the assert.
8911
8912         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
8913
8914         * mini.h (MonoCompile): Add 'token_info_hash' field.
8915
8916         * mini.c: Save token->method associations during compilation so the AOT 
8917         compiler can use it.
8918         
8919         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
8920         which reference generic classes and methods.
8921
8922 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
8923
8924         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
8925
8926         * aot-compiler.c (compile_method): Fix a typo in a comment.
8927
8928         * aot-runtime.c (decode_cached_class_info): Skip generic types.
8929
8930         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
8931         everything generic.
8932
8933         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
8934
8935 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * mini.h (MonoCompile): Add 'args' field.
8938
8939         * mini.c (mono_compile_create_vars): Store variables representing the arguments
8940         into cfg->args.
8941
8942         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
8943
8944 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
8945
8946         * mini.c (mono_compile_get_interface_var): Remove this unused function.
8947
8948         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
8949
8950         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
8951         opcodes for some opcodes.
8952
8953         * mini.h *.brg *.c: Use the new opcodes.
8954
8955 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
8956
8957         * mini.h: Bumped aot revision.
8958
8959         * inssel.brg: modified code generation of type checks for interfaces
8960         to use the new "MonoClass.interface_bitmap" instead of the old
8961         "MonoClass.interface_offsets".
8962
8963 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
8966
8967 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
8970         64 bit platforms.
8971
8972 2007-04-27  Neale Ferguson <neale@sinenomine.net>
8973
8974         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
8975
8976 2007-04-27  Wade Berrier  <wberrier@novell.com>
8977
8978         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
8979         mini.h) to fix build.
8980
8981 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
8984         
8985         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
8986         causes the corlib unit tests to fail.
8987
8988 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
8989
8990         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
8991
8992         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
8993
8994         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
8995         opcodes to the comparison relations.
8996
8997         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
8998         opcodes to their types.
8999         
9000         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9001
9002         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9003         it in cfg->arch.cinfo.
9004
9005         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9006
9007         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9008         cfg->cil_offset_to_bb.
9009
9010 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9013         created becase of initlocals.
9014
9015 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9018         Sergey Tikhonov <tsv@solvo.ru>.
9019
9020 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9021
9022         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9023
9024 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9025
9026         * cpu-s390.md (break): Correct the length of break instruction.
9027
9028 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9029
9030         * mini.c: fix a couple of soft-float issues and comments.
9031
9032 2007-04-15  Miguel de Icaza  <miguel@novell.com>
9033
9034         * trace.c (is_filenamechar): - is also a filename char.
9035
9036 2007-04-15  Neale Ferguson <neale@sinenomine.net>
9037
9038         * mini-s390.c: Correct checking for enum type in return value processing.
9039
9040 2007-04-14  Raja R Harinath  <rharinath@novell.com>
9041
9042         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
9043         (version.h): Makefile is in the build directory.
9044
9045 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
9046
9047         * mini-amd64.h: fix for assertion failure on Solaris/amd64
9048
9049 2007-04-11  Martin Baulig  <martin@ximian.com>
9050
9051         * mini.c (can_access_member): Fix handling of generic classes;
9052         fixes #81259.
9053
9054 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
9057
9058 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
9059
9060         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
9061
9062 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9063
9064         * mini-codegen.c: make sure the right spill amount is
9065         used for fp or integer registers (fixes the float_sub_spill() on ppc).
9066
9067 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
9068
9069         * mini-ppc.c: fixes for the fp_branch_nan test.
9070
9071 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * basic.cs: Comment out new test which still fails on ia64.
9074
9075 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9076
9077         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
9078
9079 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9080
9081         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
9082
9083 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
9086         on 64 bit machines. Fixes part of #80738.
9087
9088         * basic.cs: Add regression test.
9089
9090 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * inssel.brg basic.cs: Revert previous change to fix build.
9093
9094         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
9095         platforms.
9096         
9097         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
9098
9099         * basic.cs: Add new regression test.
9100
9101 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9102
9103         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
9104         many arguments.
9105
9106 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9107
9108         * cpu-s390x.md: Correct length of break instruction.
9109
9110 2007-03-16  Neale Ferguson <neale@sinenomine.net>
9111
9112         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
9113         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
9114
9115 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
9116
9117         * *.c: Begin WIN64 port.
9118         * mini.c:  Use correct register in profiler.
9119         * mini-amd64.c: No inline assembly on Win64.
9120         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
9121         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
9122         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
9123         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
9124         mono_arch_ip_from_context for Win64.
9125         
9126         Contributed under MIT/X11 license.
9127
9128 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
9129
9130         * exceptions-amd64.c (seh_handler): Ditto.
9131
9132         * exceptions-x86.c (seh_handler): Fix a memory leak.
9133
9134 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
9135
9136         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
9137         mini-s390x.c: fixed peephole optimizations to deal
9138         correctly with 1 and 2 byte reload avoidance.
9139
9140 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
9141
9142         * cpu-s390.md, cpu-s390x.md: update localloc length.
9143
9144 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9145
9146         * cpu-g4.md: added missing descriptions.
9147
9148 2007-03-14  Miguel de Icaza  <miguel@novell.com>
9149
9150         *  Makefile.am: Add support so the tail tests are not executed on
9151         PowerPC as that is a known limitation of the PowerPC port.
9152
9153 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9154
9155         * runmdesc.bat:  Move to msvc directory.
9156         
9157 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9158
9159         * runmdesc.bat:  Run executable that was produced by the current
9160         target and sent via an argument.
9161         
9162 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
9163
9164         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
9165         #81102.
9166
9167         * generics.2.cs: Add regression test.
9168
9169 2007-03-09  Wade berrier  <wberrier@novell.com>
9170
9171         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
9172
9173 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
9174
9175         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
9176         AOT code depends on this.
9177
9178 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
9179
9180         * mini.c: more precise tracking of types in the eval stack
9181         (part of fix for bug #81044).
9182
9183 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
9184
9185         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
9186
9187         * aot-compiler.c (encode_patch): Remove an obsolete comment.
9188
9189 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
9190
9191         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
9192
9193         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
9194
9195 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
9198         a pointer on 64 bit systems. Fixes #80190.
9199
9200         * iltests.il: Add new regression test.
9201
9202 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9203
9204         * mini.c: inline a constant for Environment.IsRunningOnWindows.
9205
9206 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
9207
9208         * trace.c: Remove an erroneous alignemnt check when tracing.
9209           Fixes --trace on OSX86.
9210
9211 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
9212
9213         * mini-$(arch).h: initialize SP in context for all the archs.
9214
9215 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
9216
9217         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
9218         regressions in the thread tests.
9219
9220 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
9223         - fixed implementation of LOCALLOC opcode
9224         - implemented non-un compare for floats
9225         - code cleanup
9226         - implementation of FDIV and CKFINITE opcodes
9227         - fixes for latest mono updates
9228         - additional arch opcodes
9229
9230 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
9231
9232         * Makefile.am: simplify and merge rules for cross-compilation.
9233
9234 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
9235
9236         * local-propagation.c: Actually *apply* the fix for bug 80591...
9237
9238 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9239
9240         * mini-exceptions.c: backuot part of the last change
9241         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
9242
9243 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
9244         * inssel.brg: Fix bug 59286.
9245
9246
9247 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
9248
9249         * mini-exceptions.c: patch from Zoltan to correctly check for
9250         stack boundaries (using the stack register, not the frame register),
9251         fixes bugs #80724, #79717.
9252
9253 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
9256         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
9257
9258         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
9259         presence of frame pointer elimination.
9260
9261 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
9262         
9263         * mini-x86.h: NetBSD UCONTEX_REG defines.
9264
9265 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
9266
9267         * inssel-amd64.brg: Fix amd64 build.
9268
9269 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
9270
9271         * mini.h: remove extern to workaround what looks likes gcc bug 26905
9272         on amd64.
9273
9274 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
9275
9276         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
9277         ends.
9278
9279         * mini-<ARCH>.c: Use mono_is_regsize_var ().
9280
9281 2007-01-30 Mark Mason <mason@broadcom.com>
9282
9283            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
9284            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
9285            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
9286            beginning support for CEE_JMP [not quite working yet]
9287            * tramp-mips.c: LMF handling now works
9288         
9289 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
9292
9293         * mini.h (NULLIFY_INS): New macro.
9294
9295 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9296
9297         * mini.c: statistical profiler fix for windows, patch
9298         from Tor Lillqvist (tml@novell.com).
9299
9300 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
9301         * local-propagation.c: Fix bug 80591.
9302
9303 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
9304
9305         * Makefile.am: put back the --export-dynamic option as with
9306         the previous gmodule flags (thanks to Robert Jordan).
9307
9308 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
9309
9310         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
9311
9312         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
9313         simplify and speed up the local register allocator. Also rename some fields
9314         like iassign->vassign.
9315         
9316         * regalloc.c: Remove some functions which are no longer used since their
9317         inlined version is in mini-codegen.c.
9318         
9319         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
9320
9321         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
9322
9323 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
9324
9325         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
9326         narrowing. Fixes #80622.
9327
9328         * iltests.il: Add new regresssion test. 
9329
9330 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
9331
9332         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
9333         debug-debugger.c, debug-debugger.h: warning fixes.
9334         * driver.c: updated copyright year and made it fit in one line.
9335
9336 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
9337
9338         * aot-runtime.c: updated to use mono-dl instead of gmodule.
9339
9340 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
9341
9342         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
9343
9344         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
9345
9346         * iltests.il: Add new test for bug #80507.
9347
9348 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9349
9350         * mini-arm.h: use soft-float also on vfp for now.
9351
9352 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
9353
9354         * mini.c: fix some more soft-float issues.
9355
9356 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
9359
9360 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
9361         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
9362         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
9363         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
9364
9365 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
9366
9367         * mini-arm.c: typo fix.
9368
9369 2007-01-23  Neale Ferguson <neale@sinenomine.net>
9370
9371         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
9372
9373 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
9376         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
9377
9378         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
9379
9380         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
9381
9382         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
9383         
9384         * inssel.brg: Fix a warning.
9385
9386         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
9387
9388         * abcremoval.c ssa.c ssapre.c: Update after this change.
9389         
9390         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
9391
9392         * dominators.c (df_set): Use mono_bitset_union_fast.    
9393
9394 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
9395
9396         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
9397         mini-codegen.c: reduce relocations and memory usage for the cpu
9398         description.
9399
9400 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
9401
9402         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
9403
9404         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
9405         to reduce their size.
9406
9407 2007-01-19 Mark Mason <mason@broadcom.com>
9408
9409         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
9410         * mini-mips.c: more configuration macros, support long conditional branches, additional
9411         asserts, fix epilog instrumentation.
9412         * mini-mips.h: use standard stack walk
9413         * cpu-mips.md: increase size of div, rem and conditional branches
9414         
9415 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
9416
9417         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
9418         to cpu spec data.
9419
9420 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
9423         (compile_method): Ditto.
9424
9425         * aot-runtime.c (decode_klass_info): Ditto.
9426
9427         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
9428         needed by the code generated by inssel.brg. Also fix a warning.
9429
9430 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
9431
9432         * mini.c: deal with enums that become genericinsts by
9433         being nested in a generic class (bug #79956).
9434
9435 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
9436
9437         * mini.c: match the generic definition to check for
9438         private access with generic types (bug #78431).
9439
9440 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
9441
9442         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
9443         to make life easier for people cross-compiling that insist on not
9444         using scratchbox.
9445
9446 2007-01-17 Mark Mason <mason@broadcom.com>
9447
9448         * inssel-long.brg: patch to deal with mips missing flags
9449         * inssel-long32-mips.brg: implement overflow checks
9450         * insset-mips.brg: implement overflow checks
9451         * mini-mips.h: implement conditional exception handling
9452         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
9453           Remove unused code, minor cleanups.
9454         * exceptions-mips.c: minor cleanups
9455         * mini-ops.h: add mips conditional exception ops
9456         * cpu-mips.md: add mips conditional exception ops
9457
9458         
9459 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
9460
9461         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
9462         to deal with mips missing of flags.
9463
9464 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
9465
9466         * exceptions-ppc.c: execute fault handlers.
9467
9468 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
9469
9470         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
9471
9472 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9473
9474         * mini.c: handle also floating point values in initialize_array.
9475
9476 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
9477
9478         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
9479         array initialization and make it conditional on the intrins option.
9480
9481 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
9482
9483         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
9484         relocations and put the patch info names close to the enum definition.
9485
9486 2007-01-15 Mark Mason <mason@broadcom.com>
9487
9488         * basic.cs, exceptions.cs: break up large tests to increase debugability.
9489
9490 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9491
9492         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
9493
9494 2007-01-12  Raja R Harinath  <rharinath@novell.com>
9495
9496         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
9497
9498 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
9499
9500         * Makefile.am: distribute the mips sources.
9501
9502 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9503
9504         * mini-codegen.h: handle bug #80489 here, by excluding ecx
9505         directly.
9506
9507 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
9508
9509         * cpu-x86.md: back out for now as this triggers other regressions.
9510
9511 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
9512
9513         * cpu-x86.md: force src1 and dest regpair for long shift instructions
9514         to eax:edx, so ecx can't get allocated to them (bug #80489).
9515
9516 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
9517
9518         * mini.c, mini-exceptions.c: enabled running fault handlers
9519         (bug #80469).
9520
9521 2007-01-03  Miguel de Icaza  <miguel@novell.com>
9522
9523         * driver.c: If nothing fail, do not use the string "failed",
9524         because it makes it very annoying to view test result logs on the
9525         web. 
9526
9527 2006-12-30  Miguel de Icaza  <miguel@novell.com>
9528
9529         * debug-debugger.c (mono_debugger_main): Rename "main" to
9530         "main_method" to prevent a warning.
9531
9532         Remove a warning for unused field.
9533
9534 2006-12-28  Martin Baulig  <martin@ximian.com>
9535
9536         * debug-debugger.c
9537         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
9538
9539 2006-12-22  Martin Baulig  <martin@ximian.com>
9540
9541         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
9542         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
9543         seperate `.mdb_debug_info' section, so we can access it from the
9544         debugger even if the binary is stripped.
9545
9546         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
9547         from the `.mdb_debug_info' here to prevent the linker from
9548         removing that section.
9549
9550         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
9551         mdb-debug-info64.s.
9552
9553 2006-12-19  Robert Jordan  <robertj@gmx.net>
9554
9555         * mini-x86: enable the code to return small structures in
9556         registers for FreeBSD as well. Fixes bug #80278.
9557         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
9558
9559 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9560
9561         * mini-x86.c: align the stack when calling the profiler
9562         function instrumenting the prolog (on OSX).
9563
9564 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
9565
9566         * mini.c: emit a break opcode where Debugger.Break () is called.
9567
9568 2006-12-13  Miguel de Icaza  <miguel@novell.com>
9569
9570         * mini.c (mono_method_to_ir): Provide useful information on this
9571         assert, to prevent others from debugging like I did.
9572
9573 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
9574
9575         * mini.c: enable code which was incorrectly commented
9576         (bug #80235).
9577
9578 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
9579
9580         * mini-x86.c: enable on OSX, too, the code to return small
9581         structures in registers.
9582
9583 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9584
9585         * mini-x86.c: remove the use of the dynamic code manager here, too.
9586
9587 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
9588
9589         * mini.h, debug-debugger.c, tramp-*.c: fixed 
9590         mono_debugger_create_notification_function() to use
9591         mono_global_codeman_reserve () instead of a dynamic code manager.
9592
9593 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
9594
9595         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
9596         ves_array_element_address() jit icall and use a generated
9597         managed method instead (which is about 4 times faster for a rank 3
9598         array access).
9599
9600 2006-11-29  Mark Mason  <mason@broadcom.com>
9601
9602         * basic-calls.cs: additional tests for passing
9603         structures as function arguments.
9604
9605 2006-11-29  Mark Mason  <mason@broadcom.com>
9606
9607         * mini-mips.h: disable custom exception handling
9608         * mini-mips.c: throw/rethrow should use jalr to call
9609         exception stubs.  Fixed bug with passing structures
9610         by value. More support for tracing floating point
9611         functions.
9612
9613 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9614
9615         * mini.c: fixed typo in the soft-float ldind.r4 handling
9616         (bug #80086).
9617
9618 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
9619
9620         * mini.c, mini.h, driver.c: added --runtime command line
9621         option to select a different runtime than the autodetected one.
9622         * jit.h: added API for embedders to initialize with a specific
9623         runtime version.
9624
9625 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
9626
9627         * mini.c: handle also boxing of r4 values (bug #80024).
9628
9629 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9630
9631         * mini-ppc.c: force indirect calls until we reserve
9632         enough address space for all the generated code.
9633
9634 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
9635
9636         * exceptions-arm.c: workaround bugs in the libc definition
9637         of struct ucontext.
9638
9639 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9640
9641         * inssel.brg: fixes from me and Mark Mason.
9642
9643 2006-11-23  Dick Porter  <dick@ximian.com>
9644
9645         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
9646         semaphore display now we've fixed the initial value
9647
9648 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9649
9650         * inssel.brg: partially revert the last change to fix the build.
9651
9652 2006-11-21  Mark Mason  <mason@broadcom.com>
9653
9654         * inssel.brg: Add and use compare-and-branch macros to support
9655         architectures that do not have condition code registers (ie. MIPS).
9656         * *-mips.{c,brg,md}: Fix copyright statements
9657
9658 2006-11-20  Mark Mason  <mason@broadcom.com>
9659
9660         * Makefile.am: remove mini-codegen.c from list of MIPS sources
9661         * mini.c: Allow GET_CONTEXT to be specified by the arch port
9662         * mini.h: Added declaration for mono_print_ins()
9663         * mini-codegen.c: added ins_spec initializer for MIPS
9664         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
9665         vreg to be virtual and hreg to be non-virtual.
9666         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
9667         is not yet working/implemented correctly.
9668         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
9669         non-static, fixup calls to print_ins() from other parts in the file.
9670
9671 2006-11-20  Mark Mason  <mason@broadcom.com>
9672
9673         * basic-calls.cs: added tests for passing structures as arguments
9674         to calls.
9675
9676 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9677
9678         * inssel-long32.brg: optimize signed division by power of two.
9679
9680 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
9681
9682         * mini-arm.c: added support for interworking with thumb code
9683         (mono must be still be built using the ARM instruction encoding).
9684
9685 2006-11-19  Miguel de Icaza  <miguel@novell.com>
9686
9687         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
9688         verifier has different rules for it.   Fixes a few verifier issues
9689         in the test suite.
9690
9691         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
9692         at the end, so people know what happened.
9693
9694 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9695
9696         * brach-opts.c: in optimize_exception_target() make sure we
9697         are in a catch clause (fixes bug #79871).
9698
9699 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9700
9701         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
9702         more soft-float support fixes.
9703
9704 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
9705
9706         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
9707         that are passed half on the stack and half in registers.
9708
9709 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
9710
9711         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
9712         more mips integration work from Mark E Mason 
9713         <mark.e.mason@broadcom.com>.
9714
9715 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
9716
9717         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
9718         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
9719         tramp-mips.c: added sources for the mips port, not
9720         integrated in the build yet. Contributed by
9721         Mark E Mason <mark.e.mason@broadcom.com>.
9722
9723 2006-11-14  Neale Ferguson <neale@sinenomine.net>
9724
9725         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
9726
9727 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9728
9729         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
9730         put the soft-float rules in its own file since it seems to
9731         break s390 compilation.
9732
9733 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
9734
9735         * mini-arm.c: fixed wrnings.
9736
9737 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
9738
9739         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
9740         inssel-arm.brg: ARM support for soft-float.
9741
9742 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
9743
9744         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
9745         loads and stores of 32 bit fp values.
9746
9747 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
9748
9749         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
9750
9751         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
9752         works. Fixes #79852 and #79463.
9753
9754 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9755
9756         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
9757         more soft-float support WIP and fixes.
9758
9759 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
9760
9761         * mini-arm.c: some VFP updates.
9762
9763 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
9764
9765         * mini-exceptions.c: 0 is a valid local var offset in some
9766         architectures, don't assert (bug #78508).
9767
9768 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
9769
9770         * exceptions-arm.c: fixed off by one error in stack walk code.
9771
9772 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9773
9774         * mini.h, mini.c: more precise tracking of type load exceptions.
9775
9776 2006-11-03  Robert Jordan  <robertj@gmx.net>
9777
9778         * Makefile.am: [WIN32] Add monow.exe target.
9779         * driver.c: [WIN32] Don't detach the console when debugging.
9780         Fixes bug #79797.
9781         
9782 2006-10-30  Miguel de Icaza  <miguel@novell.com>
9783
9784         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
9785
9786 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * aot-compiler.c (emit_method_info): Add a case missed earlier.
9789
9790         * driver.c (mini_regression): Fix --regression with AOT.
9791
9792         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
9793
9794 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
9797
9798         * mini-sparc.h: Don't use sigaction on sparc/linux.
9799
9800         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
9801
9802         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
9803
9804         * mini-exceptions.c: Add proper include files for getpid ().
9805
9806 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
9809         address instead of a MonoJitInfo* to avoid decoding the exception info for the
9810         method.
9811
9812         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
9813         name cache to reduce its size.
9814
9815         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9816
9817 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * mini-x86.c: Save/restore the current LMF structure more efficiently using
9820         the mono_lmf TLS variable.
9821
9822         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
9823         trampoline lmf frames.  
9824
9825         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
9826
9827 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
9830         the mono_lmf TLS variable.
9831
9832         * mini-exceptions.c: Access the LMF structure through accessors.
9833
9834         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
9835         variable instead of in jit_tls->lmf.
9836
9837         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
9838         
9839         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
9840         trampoline lmf frames.
9841
9842         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
9843
9844 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
9845
9846        * mini.c trace.c mini-x86.c: Revert these too.
9847         
9848        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
9849        signature change.
9850
9851 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
9852
9853         * genmdesc.c: removed now dead code.
9854
9855 2006-10-09  Robert Jordan <robertj@gmx.net>
9856
9857         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
9858
9859 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
9860
9861         * mini.h: do not leave gaps in the opcode values.
9862
9863 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
9864
9865         * jit-icalls.h: flag functions as internal here, too.
9866
9867 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
9868
9869         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
9870         functions with the internal attribute.
9871
9872 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
9873
9874         * aot-compiler.c: fclose the file descriptor in the profile read loop.
9875
9876 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
9877
9878         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
9879         for soft-float.
9880
9881 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
9884         tail calls as on other platforms.
9885
9886         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
9887
9888         * iltests.il: Add a few tailcall tests.
9889
9890 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
9891
9892         * driver.c: fix loop for old compilers (bug #79521).
9893
9894 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
9895
9896         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
9897
9898         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
9899
9900         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
9901         metadata without any code.
9902
9903         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
9904         more precise debugging information using gdb.
9905
9906 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
9907
9908         * inssel-ia64.brg: Make the helper methods static.
9909
9910 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
9911
9912         * inssel-x86.brg: make the helper methods static.
9913
9914 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
9915
9916         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
9917
9918 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
9919
9920         * mini.c: updates for monoburg changes.
9921         * inssel.brg: make a few helper functions static as they should.
9922
9923 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * Makefile.am: Move mini-codegen.c to common_sources.
9926
9927 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
9928
9929         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
9930         instructions.
9931         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
9932         mini-ppc.h: port to use the common local register allocator.
9933
9934 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * mini.h: Remove the comment too then.
9937
9938 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
9939
9940         * mini.h: put back backend.data which is to be used shortly and
9941         doesn't increase the size of MonoInst. If any 64 bit arch aligned
9942         pointers on 4 byte boundaries it'd have much bigger issues running
9943         and you can ifdef it out anyway.
9944
9945 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
9946
9947         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
9948         MonoInst size by 4 bytes on 64 bit machines.
9949
9950 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
9951
9952         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
9953         replacement with more meaningful field names. Arch maintainers, please
9954         check the assigned names are good enough for your arch.
9955
9956 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
9957
9958         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
9959         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
9960
9961 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
9962
9963         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
9964         relocations and memory requirements, put the optimization flags
9965         definitions in their own file.
9966
9967 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
9968
9969         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
9970
9971         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
9972
9973 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
9976
9977 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
9978
9979         * inssel.brg: use the correct function to get the size of an item
9980         in an array, given an element class.
9981         * aot-compiler.c: do not access class->class_size directly.
9982
9983 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
9984
9985         * mini.h, debug-mini.c: added a debugging function to print
9986         info about local variables and arguments in a jitted method.
9987
9988 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
9991
9992         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
9993
9994 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
9997         inner and outer loops when passing vtypes.
9998
9999 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10000
10001         * mini-ppc.c: take into account the cpu errata for cache flushing
10002         which caused some random errors (bug #79381).
10003
10004 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10007         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10008
10009 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10010
10011         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10012         loaded.
10013
10014         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10015         freebsd ports tree.
10016
10017         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10018         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10019
10020         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10021         displacement.
10022
10023 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10024
10025         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10026
10027 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10028
10029         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
10030         macro does not have to be changed during debugging.
10031
10032         * 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>.
10033
10034         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
10035
10036         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
10037         
10038         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
10039         MONO_ARCH_NO_EMULATE_MUL is defined.
10040
10041         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
10042
10043         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
10044
10045         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
10046
10047         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
10048         
10049 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
10052         stuff to mini-exceptions.c where it is used.
10053
10054         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
10055         setup code, the real one is in mini-exceptions.c.
10056
10057         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
10058         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
10059         some changes from the freebsd ports tree.
10060
10061         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
10062         constants.
10063         
10064         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
10065
10066 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
10067
10068         * mini.c: on Linux, check for /proc to be mounted
10069         (bug# 79351, novell bug#201204).
10070
10071 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10072
10073         * mini.c: handle cases where pthread_attr_getstack() behaves
10074         incorrectly (bug #78096).
10075
10076 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
10077
10078         * mini-arm.c: support larger stack frames (bug #79272).
10079
10080 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
10081
10082         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
10083
10084         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
10085         tokens.
10086
10087         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
10088         mono_class_from_name () to find a class from its name.
10089
10090         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
10091
10092 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
10095
10096 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
10097
10098         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
10099
10100 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
10103         callinfo->trampoline.
10104
10105         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
10106         fixes #79271.
10107         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
10108         future.
10109
10110 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
10111
10112         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
10113
10114 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
10117         stats.method_trampolines, it is already done by the generic trampoline code.
10118
10119         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
10120         
10121 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
10124
10125         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
10126
10127         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
10128
10129         * mini.c (print_jit_stats): Print mscorlib mempool size too.
10130         
10131         * mini.c (print_jit_stats): Print new stats.
10132
10133         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10134
10135 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
10136
10137         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
10138         Address on two dimensional arrays. Fixes #78729.
10139
10140         * mini.h (MonoCompile): Add a 'skip_visibility' field.
10141
10142         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
10143         a method.
10144
10145         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
10146
10147         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
10148         #79130.
10149         
10150         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
10151         a race condition.
10152         (mini_get_ldelema_ins): Ditto.
10153
10154 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
10155
10156         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
10157         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
10158         Fixes #79213.
10159
10160 2006-08-29 Neale Ferguson <neale@sinenomine.net>
10161
10162         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
10163         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
10164
10165         * exceptions-s390x.c: Cosmetic change.
10166
10167         * tramp-s390.c: Fix warning.
10168
10169         * cpu-s390.md: Correct length of mul_imm.
10170
10171 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
10172
10173         * aot-compiler.c: added binary writer with ELF backend
10174         implementation (only on Linux/x86 for now).
10175
10176 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * Makefile.am: Don't run net 2.0 AOT tests.
10179
10180         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
10181         (mono_compile_assembly): Skip net 2.0 assemblies as well.
10182
10183         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
10184
10185 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
10186
10187         * aot-compiler.c: simplified and refactored the asm-writing code
10188         to allow different backends.
10189
10190 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10193
10194         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
10195         little. Share patches of type TYPE_FROM_HANDLE as well.
10196
10197         * mini.c (mono_patch_info_equal): New helper function.
10198         (mono_patch_info_hash): Ditto.
10199
10200         * aot-compiler.c (emit_method_code): Fix s390 build.
10201
10202         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
10203         is not handled because it is stored as a flag and not as a type ctor. Fixes
10204         #79016.
10205
10206 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10207
10208         * aot-compiler.c: Fix computation of GOT slot statistics.
10209         
10210         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
10211         Also remove support for not PIC AOT.
10212
10213         * mini.h: Bump AOT file format version.
10214
10215         * objects.cs: Add a test for #78990.
10216
10217         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
10218         (peter.dettman@iinet.net.au). Fixes #79087.
10219
10220         * basic-long.cs: Add a test for the above.
10221
10222 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
10225         
10226         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
10227         code somewhat.
10228
10229 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
10230
10231         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
10232         exceptions.
10233
10234 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
10235
10236         * mini.c: Don't verify COM proxy invoke calls
10237         
10238
10239 2006-08-10  Dick Porter  <dick@ximian.com>
10240
10241         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
10242         which process is holding semaphores locked.
10243
10244 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini-ia64.c mini-amd64.c: Fix #79027.
10247
10248         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
10249
10250         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
10251
10252         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
10253         implicit arguments in a vararg call. Fixes #79027.
10254
10255 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
10256
10257         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
10258         (mono_get_array_new_va_signature): Ditto.
10259
10260 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
10261
10262         * aot-runtime.c: Call init_plt lazily.
10263
10264         * inssel-long.brg: Fix unsigned long->int conversion.
10265
10266         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
10267
10268         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
10269         that most data is now in the .rss/.data section.
10270
10271 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
10274
10275         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
10276
10277         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
10278
10279         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
10280
10281         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
10282         virtual call. Fixes #79010.
10283
10284         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
10285         and use the result as the this argument in the real call.
10286
10287         * generics.2.cs: Add a new test for #79010.
10288         
10289 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini-x86.c: Fix a warning.
10292
10293         * aot-compiler.c: Add a bunch of statistics.
10294
10295         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
10296
10297 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
10298
10299         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
10300
10301 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
10302
10303         * 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>.
10304
10305 2006-07-13  Miguel de Icaza  <miguel@novell.com>
10306
10307         * mini.c (mono_method_to_ir): Obtain the original method in the
10308         CIL stream and use this to perform validation.
10309
10310         Fixed: #78816
10311
10312 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
10313
10314         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
10315         (mono_arch_call_opcode): Ditto.
10316
10317         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
10318         #78826.
10319
10320         * mini.c (mono_patch_info_dup_mp): New helper function.
10321         
10322         * aot-compiler.c (compile_method): Fix some of the memory allocated during
10323         compilation. Fixes #78827.
10324
10325 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
10326
10327         * declsec.c: Use original security informations for
10328           MONO_WRAPPER_MANAGED_TO_MANAGED.
10329
10330 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
10331
10332         * mini.c: Allow Com Interop methods/classes and
10333         don't verify COM wrapper calls
10334         
10335
10336 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
10337
10338         * inssel-long32.brg: Fix long->i4 checked conversion.
10339
10340         * exceptions.cs: Add a test for the above.
10341
10342 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
10343
10344         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
10345
10346         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
10347         leaks.
10348
10349         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
10350         #78775.
10351
10352 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
10353
10354         * mini.c: Fix solaris/x86 exception handling.
10355
10356         * Makefile.am: Get rid of $(ICU_LIBS).
10357
10358 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
10361         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
10362         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
10363
10364         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
10365
10366         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
10367         this function causes a SIGSEGV.
10368
10369 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
10370
10371         * mini.c: Remove unused solaris/x86 includes.
10372
10373 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
10374
10375         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
10376
10377 2006-06-20  Jb Evain  <jbevain@gmail.com>
10378
10379         * cpu-g4.md: fix max length of start_handler instruction.
10380
10381 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
10382         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
10383
10384 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
10385         * ssa.c: Fixed bug 78653 for SSA based deadce.
10386         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
10387         MonoInst.flags, used in SSA based deadce.
10388         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
10389         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
10390
10391 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
10392
10393         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
10394         it can end up using non executable memory on ppc64 systems
10395         running ppc32 userspace (fix from Johannes Berg).
10396
10397 2006-06-14  Dick Porter  <dick@ximian.com>
10398
10399         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
10400         4.1.1
10401
10402 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
10403         * mini.c: Made so that inline is locally disabled if it would
10404         trigger a .cctor, because too many apps depend on this behavior
10405         (which seems to be also the one of the MS CLR).
10406
10407 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
10408
10409         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
10410         No idea why this worked before.
10411
10412         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
10413         which branch to outer exception clauses since they could skip the
10414         inner finally clauses. Fixes #78633.
10415
10416         * exceptions.cs: Add a test for the above.
10417
10418         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
10419         Fixes #78629.
10420
10421         * iltests.il: Add a test for the above.
10422
10423 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
10426         after the end of a try bblock, to prevent asserts in mini_method_compile ().
10427
10428         * iltests.il: Add a test for the above.
10429
10430 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
10433         
10434         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
10435         methods as instrinsics.
10436
10437 2006-06-09  Wade Berrier <wberrier@novell.com>
10438
10439         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
10440         (simple-cee-ops.h ssapre-mini-ops.h)
10441
10442 2006-06-09  Neale Ferguson <neale@sinenomine.net>
10443
10444         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
10445         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
10446         instruction).
10447         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
10448         * cpu-s390x.md: Fix max. length values for a couple of instructions.
10449
10450 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
10451
10452         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
10453
10454 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
10455
10456         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
10457         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
10458         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
10459         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
10460         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
10461         of opcodes, so that bug 78549 should not happen again.
10462         * ssapre.c: Updated to use the renamed files.
10463
10464 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
10467         in OP_ATOMIC_EXCHANGE_I4.
10468
10469 2006-06-07  Wade Berrier <wberrier@novell.com>
10470
10471         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
10472         in mono_debugger_create_notification_function)
10473
10474 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
10475
10476         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
10477         
10478         * mini.c (type_from_stack_type): Disable some changes which do not
10479         seem to work.
10480
10481         * driver.c: Reenable opts.
10482
10483         * mini.h (MonoStackSlot): New structure to keep track of the verification state
10484         of the evaluation stack.
10485         
10486         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
10487         evaluation stack trace at entry to the bblock.
10488
10489         * mini.c (merge_stacks): New function to perform verification of stack merges.
10490         Turned off by default.
10491
10492         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
10493         STACK_MP.
10494         
10495 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
10496
10497         * local-propagation.c: Fixed bug 78549.
10498
10499 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
10502
10503 2006-06-02  Miguel de Icaza  <miguel@novell.com>
10504
10505         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
10506         tramp-arm.c, tramp-ia64.c
10507         (mono_debugger_create_notification_function): Update signature to
10508         new signature and use new protocol for creating the notification
10509         function.  
10510
10511         Should fix the build.
10512
10513 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
10514
10515         * exceptions-ppc.c (mono_jit_walk_stack)
10516         (ves_icall_get_frame_info): Fix the build
10517
10518 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
10519
10520         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
10521
10522 2006-05-31  Raja R Harinath  <rharinath@novell.com>
10523
10524         * il2tests.2.il: New file for generics CIL tests.  Add test for
10525         #78019.
10526         * Makefile.am: Update.
10527
10528         Fix #78019
10529         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
10530         to nullable types.
10531
10532 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
10533
10534         * aliasing.c: Fixed bug 78311.
10535
10536 2006-05-29  Martin Baulig  <martin@ximian.com>
10537
10538         * mini-exceptions.c (mono_find_jit_info): When computing the
10539         native offset, check whether we're actually inside the method's
10540         code; call mono_debug_print_stack_frame() to format the frame.
10541         (ves_icall_System_Exception_get_trace): Call
10542         mono_debug_print_stack_frame() to format the stack frame.
10543         (ves_icall_get_trace): Update to the new debugging API.
10544         (mono_jit_walk_stack_from_ctx): Likewise.
10545         (ves_icall_get_frame_info): Likewise.
10546
10547         * mini.c (get_method_from_ip): Use the new debugging API.
10548         (mono_print_method_from_ip): Likewise.
10549
10550         * exceptions-ppc.c
10551         (mono_jit_walk_stack): Use the new debugging API.
10552         (ves_icall_get_frame_info): Likewise.   
10553
10554 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
10557
10558 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
10559
10560         * mini.c: Added "limitator" to inline for debugging.
10561
10562 2006-05-24  Martin Baulig  <martin@ximian.com>
10563
10564         * debug-debugger.c (mono_debugger_init): Create a private,
10565         malloc()-based code manager for the notification function and
10566         intentionally leak it on exit.  This fixes the crash-on-exit race
10567         condition.
10568
10569         * tramp-amd64.c
10570         (mono_debugger_create_notification_function): Added
10571         `MonoCodeManager *' argument.
10572
10573         * tramp-x86.c
10574         (mono_debugger_create_notification_function): Added
10575         `MonoCodeManager *' argument.
10576
10577 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
10578
10579         * aliasing.c: Fixed 64 bit issue.
10580         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
10581         default since all known bugs are fixed (one more time!).
10582
10583 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
10584
10585         * mini.c: write barrier support.
10586
10587 2006-05-23  Martin Baulig  <martin@ximian.com>
10588
10589         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
10590         check at the top of the file.
10591
10592 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
10593
10594         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
10595         reverting changes without reason and without changelog entries.
10596
10597 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
10598
10599         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
10600         to a few opcodes. Fixes #78439.
10601
10602         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
10603         consistency with other archs.
10604
10605         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
10606
10607 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
10608
10609         * debug-debugger.c: fix the build.
10610
10611 2006-05-17  Martin Baulig  <martin@ximian.com>
10612
10613         * debug-debugger.c
10614         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
10615         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
10616         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
10617         (debugger_attach): Call GC_mono_debugger_add_all_threads().
10618
10619 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
10622
10623 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
10624
10625         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
10626         MONO_TYPE_GENERICINST.
10627         
10628         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
10629         MONO_TYPE_GENERICINST.
10630
10631 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
10632
10633         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
10634         #78325.
10635
10636 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
10637
10638         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
10639         mempool.
10640         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
10641
10642 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
10645         mono_trace_cleanup ().
10646
10647         * iltests.il: Fix problem with the newly added test.
10648
10649         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
10650         due to register constraints, free up the previous hreg. Fixes #78314.
10651
10652         * iltests.il: Add new test for #78314.  
10653
10654         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
10655         Interlocked.Add. Fixes #78312.
10656
10657         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
10658         
10659 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * inssel.brg (mini_emit_virtual_call): Fix a warning.
10662
10663 2006-05-05  Martin Baulig  <martin@ximian.com>
10664
10665         * debug-mini.c (mono_debug_open_block): New method.
10666
10667         * mini-amd64.c
10668         (mono_arch_output_basic_block): Call mono_debug_open_block() at
10669         the beginning of each basic block.
10670
10671         * mini-x86.c
10672         (mono_arch_output_basic_block): Call mono_debug_open_block() at
10673         the beginning of each basic block.
10674
10675 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
10676
10677         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
10678         default until I understand why they break the build on amd64.
10679
10680 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * mini.c (mini_cleanup): Call mono_cleanup ().
10683
10684         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
10685         errors.
10686
10687 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
10688
10689         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
10690         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
10691         default since all known bugs are fixed, and I cannot reproduce bug
10692         77944... I'm asking Matt Hargett to test again after this commit.
10693
10694 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
10695
10696         * mini-codegen.c: Fixed typo that thrashed inline.
10697
10698 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * dominators.c (compute_dominators): Avoid using a worklist since
10701         it is not correct in some cases. Instead, iterate over all bblocks as
10702         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
10703
10704 2006-04-28  Miguel de Icaza  <miguel@novell.com>
10705
10706         * mini.c (mono_jit_compile_method_inner): Use
10707         mono_prepare_exception_from_error that resets the value
10708         internally.
10709
10710 2006-04-27  Miguel de Icaza  <miguel@novell.com>
10711
10712         * mini.c: Move the mini_loader_error_to_exception to metadata. 
10713         
10714 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
10715
10716         * aliasing.c: Fixed bug 78210.
10717
10718 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
10719
10720         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
10721         default until all their problems (or the ones they trigger) are fixed.
10722
10723 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
10726         
10727         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
10728         as loaded only after resolving patches since that could invoke the same method.
10729
10730         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
10731
10732         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
10733         functions.
10734
10735         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
10736         AOT loader.
10737
10738         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
10739         stack.
10740
10741         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
10742         made from AOT code through the PLT table.
10743
10744         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
10745         holding the plt offset when a call is made to the aot plt trampoline.
10746         
10747 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
10750         amd64 AOT support.
10751
10752         * Makefile.am (common_sources): Fix build breakage.
10753
10754         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
10755         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
10756         intra-assembly calls if possible.
10757         
10758         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
10759
10760         * mini-trampolines.c: Handle PLT entries.
10761
10762         * mini.c: Avoid creating a GOT var for calls.
10763
10764         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
10765         from mscorlib code.
10766
10767         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
10768         from mscorlib code.
10769
10770         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
10771         AOT code.       
10772
10773         * mini.h: Bump AOT file format version.
10774         
10775         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
10776         covers more cases.
10777
10778 2006-04-25  Martin Baulig  <martin@ximian.com>
10779
10780         * driver.c: Disable copyprop, consprop and inline when running
10781         inside the debugger.
10782
10783 2006-04-25  Martin Baulig  <martin@ximian.com>
10784
10785         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
10786         with `get_current_thread' and added `detach'.
10787         (MonoDebuggerMetadataInfo): Added `thread_size',
10788         `thread_tid_offset', `thread_stack_ptr_offset' and
10789         `thread_end_stack_offset'.
10790
10791 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
10794         aot-runtime.c.
10795
10796         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
10797         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
10798
10799         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
10800
10801         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
10802
10803         * aot.c: Add support for ADJUSTED_IID.  
10804
10805 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * aot.c (emit_method_order): Don't align method_order_end.
10808
10809         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
10810         the interface ID changes.
10811
10812 2006-04-21  Dick Porter  <dick@ximian.com>
10813
10814         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
10815         cleaning up a thread.  Fixes the new part of bug 77470.
10816
10817 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
10818
10819         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
10820         to managed wrapper.
10821                      
10822 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
10825         
10826         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
10827         SIGSEGV. Fixes #78072.
10828
10829         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
10830         unregister our SIGABRT handler.
10831
10832 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
10833
10834         * mini.c: Disabled inline where it can alter the call stack in a
10835         way visible from managed code.
10836         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
10837         default.
10838
10839 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
10840
10841         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
10842         on other platforms. Fixes #78089.
10843
10844 2006-04-13  Martin Baulig  <martin@ximian.com>
10845
10846         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
10847         determine whether we're inside the debugger.
10848
10849         * debug-debugger.h
10850         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
10851
10852 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
10853
10854         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
10855         handler clauses. Fixes #78024.
10856
10857         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
10858         in the CALL_MEMBASE opcodes. Fixes #78088.
10859         (mono_arch_get_vcall_slot_addr): Ditto.
10860
10861 2006-04-10  Martin Baulig  <martin@ximian.com>
10862
10863         * debug-debugger.c: The thread handling code has now been moved
10864         into ../metadata/threads.c.
10865
10866 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * driver.c (mono_main): Fix --with-gc=none build.
10869
10870         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
10871         (mono_spillvar_offset_float): Ditto.
10872         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
10873         hreg, not when its !global, since on ia64, there is a third category: stacked
10874         registers.      
10875
10876 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
10877
10878         * mini.c: set MonoInst->klass for load field address and a few other
10879         places.
10880
10881 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
10884
10885 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
10888         the branch opt changes.
10889
10890 2006-04-06  Dick Porter  <dick@ximian.com>
10891
10892         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
10893         
10894         * wapihandles.c (mini_wapi_seminfo): 
10895         * driver.c (mono_main): Add semaphore info option
10896
10897 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
10898
10899         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
10900         branch optimization changes. Fixes #78009.
10901
10902 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
10903
10904         * mini.c: ignore accessibility of methods in managed->native wrappers.
10905
10906 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
10909         
10910         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
10911
10912 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
10913
10914         * mini.c: Modify the branch optimizations to preserve the invariant that
10915         the entries inside the in_bb and out_bb arrays are unique.
10916         (mono_unlink_bblock): Avoid creation of new arrays.
10917
10918 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
10919
10920         * mini.c (mono_unlink_bblock): Fix regression caused by previous
10921         change (#77992).
10922
10923 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * mini.c (optimize_branches): Remove the "optimizations" in
10926         the cbranch1/cbranch2 -> branch cases which were causing several
10927         problems in the past. Fixes #77986.
10928
10929 2006-03-31  Chris Toshok  <toshok@ximian.com>
10930
10931         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
10932         default optimizations :(
10933
10934 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
10935
10936         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
10937         branch.
10938
10939 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
10940
10941         * local-propagation.c: Added comments to structs and removed
10942         "Mono" prefixes from local tree mover types.
10943
10944 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
10945
10946         * Makefile.am (arch_sources): Define this for each architecture so 
10947         libmono_la_SOURCES is defined in one place.
10948
10949 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
10950
10951         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
10952         from handles/.
10953
10954 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
10955
10956         * driver.c: print the GC name supplied by configure.
10957
10958 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
10959
10960         * local-propagation.c: Added tree mover, and moved here all the
10961         local propagation code from mini.c
10962         * mini.c: Added support for treeprop, and moved all the local
10963         propagation code to local-propagation.c
10964         * mini.h: Added support for treeprop
10965         * driver.c: Added support for treeprop, enabled consprop, copyprop,
10966         treeprop, inline and deadce by default
10967         * Makefile.am: Added local-propagation.c
10968
10969 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
10970
10971         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
10972
10973 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
10974
10975         * debug-debugger.c: make it compile without the Boehm GC.
10976
10977 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10978
10979         * mini.c: fixed issue with mismatch when an icall is registered
10980         with multiple names but same address.
10981
10982 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
10983
10984         * declsec.c, mini-exceptions.c: use write barrier to set reference
10985         fields of managed objects.
10986
10987 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
10988
10989         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
10990         (can_access_internals): Fix a warning.
10991
10992         * mini.c (print_method_from_ip): Rename this to 
10993         mono_print_method_from_ip so it gets exported.
10994
10995         * trace.c: Deal with strings inside StringBuilder's containing garbage
10996         and fix memory leaks. Fixes #77848.
10997
10998 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11001         fixes #77787.
11002
11003 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11004         
11005         * mini-s390.c: Remove OP_X86_TEST_NULL.
11006
11007 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11008
11009         * mini.c: use the correct GetHashCode() for the moving collector.
11010
11011 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11012
11013         * liveness.c: Regalloc spill cost tuning.
11014
11015 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11016         
11017         * mini-s390x.h: Correct S390_LONG macro.
11018
11019         * mini-s390x.c: Cleanup unused code.
11020
11021 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11022
11023         * jit-icalls.h: New file.
11024
11025         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11026         icalls and include that instead of including jit-icalls.c.
11027
11028         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11029         OP_X86 opcodes.
11030
11031 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
11032
11033         * mini.c: when checking for member accessibility, also check for
11034         friend assemblies and for explicit interface implementations.
11035
11036 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11037
11038         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
11039
11040         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
11041
11042         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11043         common cases are done first.    
11044
11045         * mini-ops.h: Only define platform specific opcodes on the given platform.
11046
11047         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
11048         branch.
11049         
11050 2006-03-14  Martin Baulig  <martin@ximian.com>
11051
11052         Revert Paolo's change from r57348:
11053
11054         * mini.h: don't use gboolean for bitfields.
11055         * mini.c: verifier changes for fields and methods accessibility.
11056
11057 2006-03-13  Neale Ferguson <neale@sinenomine.net>
11058
11059         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
11060
11061         * mini-s390x.c: Fix conv_r_un.
11062
11063         * cpu-s390, cpu-s390x.md: Fix lengths.
11064
11065 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11066
11067         * mini.c: nested types have access to all the nesting
11068         levels, not just the enclosing types.
11069
11070 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11071
11072         * mini.c: added a few more verification checks.
11073
11074 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
11075
11076         * liveness.c: Merge optimizations from the linear-il branch.
11077
11078 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * mini-ia64.c (emit_call): Add a comment.
11081
11082         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
11083
11084         * tramp-ia64.c: Fix some warnings.
11085
11086 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11087
11088         * mini.h: don't use gboolean for bitfields.
11089         * mini.c: verifier changes for fields and methods accessibility.
11090
11091 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11092
11093         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
11094         lazy icall wrapper changes.
11095
11096         * dominators.c: Replace all the dominator algorithms with faster
11097         ones from the linear-il branch.
11098
11099         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
11100         the mempool.
11101
11102         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11103         common cases are done first.
11104
11105         * mini-amd64.c: Fix some warnings.
11106
11107         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
11108         from the mempool.
11109
11110         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
11111         added code.
11112
11113         * mini.h: Add a missing prototype.
11114
11115 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
11116
11117         * mini.c: Compile icall wrappers lazily.
11118
11119         * mini-codegen.c: Use printf instead of g_print since its much faster.
11120
11121         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
11122         function.
11123
11124         * mini.c (optimize_branches): Cache the negative result from 
11125         remove_block_if_useless ().
11126
11127         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
11128         Also fix some bblock linking issues.
11129
11130         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
11131         assembly files.
11132
11133         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
11134
11135         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
11136         accessed fields first, for better cache behavior.
11137         
11138 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11139
11140         * mini.c: speedup IList<T> array accesses.
11141
11142 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
11145         inline_costs counter. Fixes #77190.
11146
11147 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
11148
11149         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
11150         trace messages. Fixes #77706.
11151
11152 2006-03-04  Martin Baulig  <martin@ximian.com>
11153
11154         * tramp-amd64.c, tramp-x86.c
11155         (mono_debugger_create_notification_function): Use
11156         mono_global_codeman_reserve() to allocate a buffer at runtime and
11157         return it.
11158
11159         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
11160
11161         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
11162         notification function at runtime and then call `initialize' in the
11163         `MONO_DEBUGGER__debugger_info' vtable.
11164
11165 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * iltests.il: Fix a visibility problem.
11168
11169 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11170
11171         * driver.c, mini.c: add hooks for the counters API.
11172
11173 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11174
11175         * driver.c: show disabled options.
11176
11177 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11178
11179         * linear-scan.c: always use cost-driven selection.
11180
11181 2006-02-28  Raja R Harinath  <rharinath@novell.com>
11182
11183         * jit-icalls.c (helper_compile_generic_method): Revert change from
11184         2006-02-24.
11185
11186 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
11187
11188         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
11189
11190 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
11191
11192         * inssel.brg: style fixes, mostly to force the updated monoburg
11193         to run for people using svn.
11194
11195 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11196
11197         * mini.c: match monoburg changes.
11198
11199 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11200
11201         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
11202         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
11203         declaration in the header file.
11204
11205 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11206
11207         * helpers.c: reduce relocations and mem usage.
11208
11209 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11210
11211         * mini.h, mini-codegen.c: disable logging features if
11212         requested by configure.
11213
11214 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
11215
11216         * mini.c: tiny verifier changes.
11217
11218 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11219
11220         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
11221         cpu-pentium.md: stack alignment changes for osx/x86,
11222         partially from Geoff Norton <gnorton@customerdna.com>.
11223
11224 2006-02-24  Raja R Harinath  <harinath@gmail.com>
11225
11226         * jit-icalls.c (helper_compile_generic_method): Update to changes
11227         in metadata/class.c.
11228
11229 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
11230         
11231         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
11232         
11233         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
11234         interface calls with large offsets.
11235
11236 2006-02-23  Raja R Harinath  <rharinath@novell.com>
11237
11238         * jit-icalls.c (helper_compile_generic_method): Document the
11239         special-case we depend on so that we can inflate the method twice
11240         with the same context with no bad side-effects.
11241
11242 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11243
11244         * mini-x86.c, mini-amd64.c: fix for case when xen support
11245         is disabled.
11246
11247 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11248
11249         * mini-x86.c, mini-amd64.c: generate code to access tls items
11250         in a faster way for Xen systems.
11251
11252 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11253
11254         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
11255         updates and compilation fixes for the OSX/x86 port, mostly from
11256         Geoff Norton <gnorton@customerdna.com>.
11257
11258 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11259
11260         * inssel.brg: faster interface call implementation
11261         to sync with the interface_offsets MonoVTable changes.
11262
11263 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11264
11265         * mini.c: more verification checks.
11266
11267 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
11268
11269         * mini.c: added a few more verification checks.
11270
11271 2006-02-17      Neale Ferguson <neale@sinenomine.net>
11272
11273         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
11274         facility on the processor and use it if available.
11275
11276 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11277
11278         * driver.c, aot.c, mini.c: throw exception if the IL code is
11279         invalid or unverifiable.
11280
11281 2006-02-17  Raja R Harinath  <rharinath@novell.com>
11282
11283         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
11284         m.StructField.
11285
11286 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
11289
11290 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11291
11292         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
11293         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
11294         handling of instantiated generic valuetypes.
11295
11296 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
11299         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
11300         instead.
11301
11302         * generics.2.cs: Revert the nullable reftypes tests.
11303
11304 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
11305
11306         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
11307         using __builtin_frame_address (1) as it doesn't work in the presence
11308         of optimizations. Hopefully fixes #77273.
11309
11310         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
11311         -> generics.cs change as it doesn't work with some automake versions.
11312
11313 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11314
11315         * mini.c: handle systems that sue a different way to
11316         retrieve the stack address of the current thread.
11317
11318 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
11321         it specially in the makefile.
11322
11323         * generics.2.cs: Add tests for nullable reference types.
11324
11325 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11326
11327         * mini.c: always handle the case when mono_jit_init()
11328         is called in a thread different from the main thread,
11329         confusing libgc (bug #77309).
11330
11331 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
11332
11333         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
11334
11335 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11336
11337         * mini.c: change optimize_branches () to use a single loop
11338         and introduce a new optimization to simplify some range checks.
11339
11340 2006-02-03  Martin Baulig  <martin@ximian.com>
11341
11342         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
11343         and merged with debugger_thread_manager_add_thread().
11344         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
11345         inform the debugger about the main thread.
11346
11347 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * basic.cs: Add test for div.un/rem.un constant folding.
11350
11351 2006-02-03  Neale Ferguson <neale@sinenomine.net>
11352
11353         * cpu-s390x.md: correct int_xor_imm length
11354
11355 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * generics.2.cs: New test for #77442.
11358
11359         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
11360         #77442.
11361
11362 2006-02-02  Martin Baulig  <martin@ximian.com>
11363
11364         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
11365         <mono/metadata/mono-debug-debugger.h>   
11366
11367         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
11368
11369 2006-02-02  Martin Baulig  <martin@ximian.com>
11370
11371         * debug-debugger.h: New header file for debug-debugger.c.
11372
11373         * debug-debugger.c: Big API cleanup; don't run the managed Main()
11374         function is a separate thread anymore; add support for attaching.
11375
11376 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
11377
11378         * tramp-x86.c: Fix a warning.
11379
11380 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
11383         on very large methods.
11384
11385         * aot.c (load_patch_info): Fix a warning.
11386
11387 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11388
11389         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
11390         mini-ops.h: alu membase optimizations.
11391
11392 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
11393
11394         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
11395         to speedup StringBuilder.
11396
11397 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
11398
11399         * dominators.c (mono_compute_natural_loops): Fix detection of
11400         loop body start blocks.
11401
11402         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
11403
11404 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
11405
11406         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
11407         #75145.
11408
11409 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
11410
11411         * aliasing.c: Fixed aliasing issue on 64 bit archs.
11412
11413 2006-01-25  Martin Baulig  <martin@ximian.com>
11414
11415         * debug-debugger.c: Moved the `MonoDebuggerManager' and
11416         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
11417         started to cleanup this file a little bit.
11418
11419 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
11420
11421         * mini.c: optimize a codepath frequently happening in generics code.
11422
11423 2006-01-23  Martin Baulig  <martin@ximian.com>
11424
11425         * Makefile.am: Only compile debug-debugger.c on supported platforms.
11426
11427         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
11428         functions directly.
11429
11430         * driver.c: debug-debugger.c is only available if
11431         `MONO_DEBUGGER_SUPPORTED' is defined.   
11432
11433 2006-01-23  Martin Baulig  <martin@ximian.com>
11434
11435         * debug-debugger.c: Only enable this on platforms where the Mono
11436         Debugger is working (x86 and x86_64).
11437
11438 2006-01-21  Martin Baulig  <martin@ximian.com>
11439
11440         The Mono Debugger is now using the normal `mono' instead of the
11441         `mono-debugger-mini-wrapper' when executing managed code.
11442
11443         * debug-debugger.c: New file; previously known as
11444         debugger/wrapper/wrapper.c.
11445
11446         * debug-mini.c (mono_init_debugger): Removed.
11447
11448         * driver.c (mono_main): Added new `--inside-mdb' command line
11449         argument which is used when running inside the debugger.
11450
11451 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
11452
11453         * liveness.c (mono_analyze_liveness): Remove some unused data
11454         structures.
11455
11456 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
11459
11460 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
11461
11462         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
11463         depends on implementation details of monobitset.
11464
11465         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
11466         Fixes #77271.
11467
11468 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
11469
11470         * liveness.c: Update after monobitset changes.
11471
11472 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
11475
11476 2006-01-11 Neale Ferguson <neale@sinenomine.net>
11477
11478         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
11479
11480         * mini-s390x.c: Remove warning messages.
11481
11482 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
11483
11484         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
11485
11486 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * generics.2.cs: Add ldelem/stelem_any test.
11489
11490 2006-01-10 Neale Ferguson <neale@sinenomine.net>
11491
11492         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
11493
11494 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
11495
11496         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
11497         
11498 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
11499
11500         * generics.2.cs: Reenable vtype tests.
11501
11502         * inssel-x86.brg: Remove an icorrect valuetype rule.
11503
11504 2006-01-06 Neale Ferguson <neale@sinenomine.net>
11505
11506         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
11507         initial support for OP_ABS.
11508
11509 2006-01-05 Neale Ferguson <neale@sinenomine.net>
11510
11511         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
11512
11513 2006-01-05 Neale Ferguson <neale@sinenomine.net>
11514
11515         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
11516         conversion and implement LADD/LSUB.
11517
11518         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
11519         architectures.
11520
11521 2006-01-05 Neale Ferguson <neale@sinenomine.net>
11522
11523         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
11524
11525         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
11526         architectures.
11527
11528 2006-01-05 Neale Ferguson <neale@sinenomine.net>
11529
11530         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
11531         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
11532         (stack walk problem).
11533
11534 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
11535
11536         * aot.c (mono_aot_load_method): Fix a warning.
11537
11538 2006-01-03  Neale Ferguson <neale@sinenomine.net>
11539
11540         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
11541
11542 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * iltests.il: Add test for #77148.
11545
11546         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
11547         #77148.
11548
11549 2006-01-03  Neale Ferguson <neale@sinenomine.net>
11550
11551         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
11552
11553 2006-01-03  Neale Ferguson <neale@sinenomine.net>
11554
11555         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
11556         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
11557
11558         * basic-long.cs: Add lconv-to-r4/r8 tests.
11559
11560 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
11563
11564         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
11565         here as on other archs.
11566
11567 2005-12-29 Neale Ferguson <neale@sinenomine.net>
11568
11569         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
11570
11571 2005-12-29 Neale Ferguson <neale@sinenomine.net>
11572
11573         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
11574         
11575         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
11576
11577         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
11578         instrument_prolog; Add memory_barrier instruction.
11579
11580 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
11581
11582         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
11583
11584 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
11585
11586         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
11587
11588         * aliasing.c inssel.brg: Fix warnings.
11589
11590         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
11591         could skip initialization of some parts of memory.
11592
11593         * mini.c mini-ia64.c: Fix warnings.
11594
11595         * inssel-sparc.brg: Add an implementation of lneg which actually works.
11596
11597 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
11598
11599         * aliasing.c (mono_build_aliasing_information): Add a workaround for
11600         a crash seen on sparc.
11601
11602         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
11603         
11604         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
11605
11606 2005-12-21 Neale Ferguson <neale@sinenomine.net>
11607
11608         * mini-ops.h: Add s390_backchain instruction
11609
11610         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
11611
11612         * cpu-s390.md: Add s390_backchain instruction
11613
11614         * mini-s390.c: Significant ABI changes
11615
11616         * mini-s390.h: Cater for zero length structures
11617
11618 2005-12-20 Neale Ferguson <neale@sinenomine.net>
11619
11620         * mini-s390.c: ABI fixes
11621
11622         * inssel-s390.brg: Remove debug statements
11623
11624         * cpu-s390.md: Fix length of ATOMIC_xx operations
11625
11626 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
11627
11628         * basic-float.cs: Add float<->long conversion tests.
11629
11630 2005-12-16 Neale Ferguson <neale@sinenomine.net>
11631
11632         * mini-s390.c: Fix LOCALLOC processing.
11633
11634         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
11635
11636 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * iltests.il: Add tests for some opcodes not covered by the other
11639         tests.
11640
11641 2005-12-15 Neale Ferguson <neale@sinenomine.net>
11642
11643         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
11644         register loading for Tail processing; Correct trace output.
11645
11646         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
11647
11648         * cpu-s390.md: Correct size of jmp instruction. 
11649
11650 2005-12-13 Neale Ferguson <neale@sinenomine.net>
11651
11652         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
11653
11654 2005-12-13 Neale Ferguson <neale@sinenomine.net>
11655
11656         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
11657           Bring s390 up to current level.
11658
11659 2005-12-12  Zltan Varga  <vargaz@gmail.com>
11660
11661         * generics.2.cs: Disable the newly added tests as they do not work yet.
11662         
11663         * generics.2.cs: Add valuetype tests.
11664
11665 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
11666
11667         * basic-long.cs: Add i4->u8 test.
11668
11669         * objects.cs: Add tests for JIT intrinsic.
11670
11671         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
11672         optimizations lost by a mistake.
11673
11674 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
11675
11676         * basic-long.cs: Remove a test moved to objects.cs.
11677
11678         * arrays.cs: Add more array tests.
11679
11680 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
11681
11682         * arrays.cs: Add new tests for multi-dimensional arrays.
11683
11684 2005-12-06  Raja R Harinath  <rharinath@novell.com>
11685
11686         * Makefile.am (test_sources2): Add generics.2.cs.
11687         (EXTRA_DIST): Add test_sources2.
11688
11689 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
11690
11691         Support for boxing and unboxing nullable types as well as the
11692         isinst operation on nullables, per the CLI ammendment.
11693
11694         * inssel.brg (CEE_ISINST): Special case for nullable
11695
11696         * mini.c (handle_unbox_nullable): new method
11697         (handle_box): Special case for nullable types
11698         (mono_method_to_ir): Call handle_unbox_nullable in correct
11699         places.
11700
11701         * generics.2.cs: New test suite
11702
11703         * Makefile.am: Support for regression tests with generics.
11704
11705 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
11708         allocated to registers. Fixes #76800.
11709
11710 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
11711
11712         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
11713
11714 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
11715
11716         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
11717         of platforms.
11718
11719 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
11722         objects.cs.
11723
11724         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
11725         
11726         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
11727 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
11728
11729         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
11730         single precision before storing to a single precision location.
11731
11732 2005-11-28  Raja R Harinath  <rharinath@novell.com>
11733
11734         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
11735
11736 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
11737
11738         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
11739         correct files.
11740
11741         * basic.cs: Remove test_0_byte_compares test which was moved to
11742         objects.cs a long time ago.
11743
11744 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
11745
11746         * aliasing.c: Fixed aliasing issue on 64 bit archs.
11747
11748 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
11749
11750         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
11751         handlers are called.
11752
11753         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
11754         throwing code.
11755
11756          * mini-ia64.c: Add support for the throw->branch exception 
11757         optimization.   
11758
11759         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
11760
11761 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
11762
11763         * mini.c: Enabled "fastpath" deadce :-)
11764         
11765 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
11766
11767         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
11768         alias analysis pass to support it.
11769         * mini.h: Likewise.
11770         * ssa.c: Likewise.
11771         * liveness.c: Likewise (liveness computation can use aliasing
11772         information to be more accurate).
11773         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
11774         moreover made so that "--compile-all" uses the given optimization
11775         flags and not the default ones.
11776         * aliasing.c: Alias analysis (new file).
11777         * aliasing.h: Likewise.
11778         * Makefile.am: added "aliasing.c" and "aliasing.h".
11779         
11780 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
11781
11782         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
11783         OP_L opcodes.
11784
11785 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
11786
11787         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
11788         fp >= end_of_stack exit condition, as it is not needed, and it might
11789         become true for fp eliminated frames.
11790
11791 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
11794         coded offsets.
11795
11796 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
11797
11798         * mini-arm.c: fixed alignment of doubles/longs to match
11799         the C ABI (bug #76635).
11800
11801 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
11802
11803         * aot.c: fix compilation with --enable-minimal=aot.
11804
11805 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
11806
11807         * mini-arm.c: fixed compatibility with the new
11808         floating point emulator package for compares.
11809
11810 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
11811
11812         * mini.c : reverted sig->pinvoke changes (r51396-51397).
11813
11814 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
11815
11816         * mini-exceptions.c (print_stack_frame): Output to stderr.
11817         (mono_handle_native_sigsegv): Ditto.
11818
11819 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
11820
11821         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
11822         OP_LCONV_TO_OVF_I implementation.
11823
11824         * mini-amd64.c: Add support for the throw->branch exception 
11825         optimization.
11826
11827         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
11828         when the catch clause catches a more general exception, i.e. Object.
11829
11830 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * cpu-ia64.md: Remove unused opcodes.
11833
11834         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
11835         specific defines for architectures defining USE_SIGACTION.
11836
11837         * mini-ia64.c: Fix some warnings.
11838
11839         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
11840         version seemed to skip a frame.
11841
11842 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
11843
11844         * mini.c: Clean up the usage of sig->pinvoke flag. Now
11845         only calls which are made to native code use this flag.
11846
11847 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
11848
11849         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
11850         varargs methods as well.
11851         
11852         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
11853         which have save_lmf set. Reorganize methods prologs a bit.
11854
11855         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
11856         debugger to the proper place.
11857
11858 2005-10-29  Martin Baulig  <martin@ximian.com>
11859
11860         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
11861         when running inside the debugger until the debugger has support
11862         for it.
11863
11864 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini.h: Fix a warning.
11867
11868 2005-10-24  Miguel de Icaza  <miguel@novell.com>
11869
11870         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
11871         we expose publicly, this returns the string.
11872
11873 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
11874
11875         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
11876         with fp elimination.
11877
11878 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
11879
11880         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
11881         native stacktrace using the glibc 'backtrace' function if available.
11882
11883 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
11886
11887         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
11888         handle SIGSEGVs received while in native code.
11889
11890         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
11891         code, call mono_handle_native_sigsegv which will abort the runtime
11892         after printing some diagnostics, instead of converting it into a
11893         confusing NullReferenceException.
11894
11895 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * cpu-pentium.md: Remove unused opcodes.
11898
11899 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
11900
11901         * mini-amd64.h (MonoLMF): Add rsp field.
11902
11903         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
11904         the lmf too.
11905
11906 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * mini-codegen.c (get_register_spilling): Fix some warnings.
11909
11910 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
11911
11912         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
11913         elimination during exception handling. Enable fp elimination by
11914         default.
11915
11916         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
11917         elimination.
11918
11919 2005-10-16  Martin Baulig  <martin@ximian.com>
11920
11921         * mini-exceptions.c
11922         (mono_debugger_run_finally): New public method for the debugger.
11923
11924 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * debug-mini.c (mono_debug_init_method): Fix warning.
11927
11928         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
11929         the 'exname' parameter const to fix some warnings.
11930
11931 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
11932
11933         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
11934         introduced by the previous patch.
11935
11936 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
11937
11938         * basic-float.cs: Add test for precision of float arithmetic.
11939
11940         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
11941         when loading/storing single values from/to memory.
11942
11943         * mini.c (mono_jit_compile_method_with_opt): Create the function
11944         pointers in the correct domain.
11945
11946 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
11947
11948         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
11949         introduced by previous patch.
11950         
11951         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
11952         when out_filter_idx is NULL.
11953
11954         * mini-exceptions.c: Don't run filter clauses twice during exception
11955         handling. Fixes #75755.
11956
11957 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * aot.c: Add support for ldflda wrappers.
11960
11961         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
11962         #75902.
11963
11964 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
11965
11966         * mini.c, mini.h: do not consider exception handlers blocks when
11967         setting up interface variables.
11968
11969 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
11970
11971         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
11972
11973 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
11976         causes a regression.
11977
11978         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
11979
11980 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
11981
11982         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
11983         of the OP_P definitions.
11984
11985         * TODO: Add a proposal for dealing with the CEE/OP mess.
11986
11987         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
11988         optimizations from the x86 port.
11989
11990         * cpu-amd64.md: Ditto.
11991
11992         * basic.cs basic-long.cs: Add tests.
11993
11994 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
11995
11996         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
11997         Patrik Torstensson's implementation of my exception-handling
11998         optimization idea, when the exception object is not used
11999         (bug #62150).
12000
12001 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12004         of the mul_imm optimizations from the old jit.
12005
12006 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12007
12008         * mini.c, liveness.c: patch by Patrik Torstensson and
12009         Zoltan Varga to improve performance in methods with
12010         exception clauses.
12011
12012 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12013
12014         * driver.c: Remove 'Globalization' entry from --version.
12015
12016 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12019         there is a profiler interested in JIT events.
12020
12021         * aot.c: Load profile files produced by the AOT profiling module, and
12022         reorder methods based on the profiling info. Add a 'method_order' table
12023         to the AOT file to make mono_aot_find_jit_info work with the reordered
12024         methods.
12025
12026         * mini.h: Bump AOT file version info.
12027
12028 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12029
12030         * mini-arm.h: work around what looks like a gcc bug when optimizations
12031         are enabled.
12032
12033 2005-09-28  Raja R Harinath  <rharinath@novell.com>
12034
12035         * Makefile.am (AM_CFLAGS): Don't use += to append inside
12036         conditionals.  Use ...
12037         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
12038
12039 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
12040
12041         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
12042         to determine the amount of memory to copy when passing valuetypes.
12043
12044         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
12045         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
12046
12047 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
12050         information about aot.
12051
12052 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12053
12054         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12055         macros. This will allow a deadlock debugger to easily be plugged
12056         in.
12057
12058 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
12059
12060         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
12061
12062 2005-09-27  Raja R Harinath  <rharinath@novell.com>
12063
12064         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
12065         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
12066         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
12067         ($(arch_built)) [CROSS_COMPILING]: Error out.
12068
12069 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * aot.c: Add support for the no_special_static flag for classes.
12072
12073 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12074
12075         * Reapply reverted patches.
12076
12077         * *: Revert r50174 as well.
12078
12079         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
12080
12081 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12082
12083         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
12084
12085 2005-09-23  Miguel de Icaza  <miguel@novell.com>
12086
12087         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
12088         part of the SIG_HANDLER_SIGNATURE.  
12089
12090 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
12093         statistics.
12094
12095         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
12096         introduced by previous patch.
12097
12098 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
12101         saved registers too.
12102
12103         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
12104         upon the information returned by get_call_info ().
12105         
12106         * mini-x86.c (add_float): Fix stack size calculation.
12107         (mono_arch_call_opcode): Rewrite this so it works based up the
12108         information returned by get_call_info ().
12109         (mono_arch_get_this_vret_args): Ditto.
12110
12111 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
12112
12113         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
12114         in cinfo to determine the registers which need to be used.
12115
12116 2005-09-20  Miguel de Icaza  <miguel@novell.com>
12117
12118         * driver.c (mono_main): Add --server and --desktop flags. 
12119
12120 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
12123         registers as global registers.
12124
12125         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
12126         longer needed with the new register allocator.
12127
12128         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
12129
12130         * cpu-ia64.md: Remove unused opcodes.
12131         
12132         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
12133         
12134 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
12135
12136         * cpu-amd64.md: Remove unused opcodes.
12137
12138         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
12139         needed with the new register allocator.
12140
12141         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
12142         reg-reg moves.
12143
12144 2005-09-16  Raja R Harinath  <rharinath@novell.com>
12145
12146         * Makefile.am (check-local): Don't invoke semdel-wrapper.
12147
12148 2005-09-16  Martin Baulig  <martin@ximian.com>
12149
12150         * exceptions-amd64.c
12151         (throw_exception): Don't call mono_debugger_throw_exception() if
12152         we're a rethrow - see the FIXME in the code.
12153
12154 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
12155
12156         * mini.c (mono_init_exceptions): This only works on some architectures.
12157         
12158 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
12161         on ia64.
12162
12163         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
12164
12165         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
12166         now in mini-exceptions.c.
12167
12168 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
12169
12170         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
12171         now in mini-exceptions.c.
12172
12173 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
12174
12175         * exceptions-x86.c: Applied patch from Patrik Torstensson 
12176         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
12177
12178         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
12179         code into mini-exceptions.c. Add some assertions to it.
12180
12181 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * aot.c (emit_section_change): Applied patch from "The Software Team" 
12184         (<software@solmersa.com>). Fix as errors on windows.
12185
12186 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12187
12188         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
12189         method info into the LMF.
12190
12191 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12192         
12193         * mini-ia64.c: Add proper unwind info for method epilogs.
12194
12195         * exceptions-ia64.c: Add some code to help debugging.
12196         
12197         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
12198
12199         * mini-exceptions.c: Fix warning.
12200
12201 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
12202
12203         * mini.c: Really fix build.
12204
12205         * mini-x86.c mini-amd64.c: Fix build.
12206
12207 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12208
12209         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
12210
12211         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
12212         some Interlocked methods as intrinsics.
12213
12214         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
12215         for Thread methods as well.
12216
12217         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
12218
12219         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
12220
12221         * mini-ia64.c mini-x86.c mini-amd64.c 
12222         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
12223         OP_MEMORY_BARRIER.
12224         
12225         * mini.c (mono_init_exceptions): Fix build breakage.
12226
12227 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
12228
12229         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
12230         of instructions. Use the new ia64_unw_op macros for emitting unwind
12231         info.
12232
12233         * mini.c (mono_init_exceptions): Initialize exception handling
12234         related trampolines at startup.
12235
12236 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
12237
12238         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
12239
12240 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * mini.c: Handle type loading errors gracefully during compilation and
12243         throw the appropriate exception.
12244
12245 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
12246
12247         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
12248         for the mono binary.
12249
12250 2005-09-09  Martin Baulig  <martin@ximian.com>
12251
12252         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
12253         the release.
12254
12255 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12256
12257         * mini-arm.h: use emulation for conv.r.un for the release.
12258
12259 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
12260
12261         * mini-arm.c, objects.cs: more fixes and tests for them.
12262
12263 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12264
12265         * mini-arm.c: align structures to at least 4 bytes to be able
12266         to keep our current optimized memcpy.
12267
12268 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
12269
12270         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
12271
12272 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12273
12274         * mini.c: ignore SIGPIPE.
12275
12276 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
12279
12280         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
12281
12282 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * mini.h: Add prototype for mono_allocate_stack_slots_full.
12285
12286 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
12287
12288         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
12289         exception handling support.
12290         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
12291         patch by Brian Koropoff <briank@marakicorp.com>).
12292
12293 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
12294
12295         * mini.c: revert another 'optimization' which breaks when
12296         items on the eval stack need to be saved at a basic block end
12297         (bug #75940).
12298
12299 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
12300
12301         * jit-icalls.c: for arrays, ensure we always provide
12302         lower bounds.
12303
12304 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
12305
12306         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
12307         
12308         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
12309
12310 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
12311
12312         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
12313         arguments in their original register.
12314
12315 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
12318         memset/memcpy.
12319
12320         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
12321         when ssapre is enabled.
12322
12323         * inssel-long.brg: Fix bug in previous patch.
12324
12325         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
12326         multiplication by a constant.
12327
12328 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
12329
12330         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
12331         icc.
12332
12333         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
12334         saving registers.
12335
12336 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
12337
12338         * inssel-arm.brg: apply changes tested by Brian Koropoff
12339         <briank@marakicorp.com>.
12340
12341 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
12342
12343         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
12344         
12345 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
12348         to the same register if dreg is just a base register.
12349         (print_ins): Improve printing of membase opcodes.
12350
12351         * inssel-x86.brg: Add optimized ldind(reg) rules.
12352
12353         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
12354
12355 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
12356
12357         * mini.c: when running under valgrind, set the stack bottom for
12358         the GC at the actual approximate stack for the app (fixes running
12359         mono with valgrind).
12360
12361 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
12362
12363         * mini.c: do no break at the first valuetype to init found
12364         (fixes bug #75791).
12365
12366 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
12367
12368         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
12369
12370 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
12371
12372         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
12373
12374 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
12375
12376         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
12377
12378 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
12379
12380         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
12381
12382         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
12383         code.
12384
12385         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
12386         code.
12387
12388         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
12389         methods.
12390
12391 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
12392
12393         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
12394
12395 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
12396
12397         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
12398         in the tail recursion optimization.
12399
12400         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
12401         debug info into the assembly file.
12402
12403         * iltests.il: Add test for filter regions.
12404
12405         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
12406         initial stack of filter regions. Fixes #75755.
12407
12408 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
12409
12410         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
12411         stack requirements.
12412
12413 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
12414
12415         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
12416         the check for an already compiled method on non-ia64 platforms.
12417         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
12418         proper domain.
12419
12420         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
12421
12422         * inssel-x86.brg: Add some optimized call rules.
12423
12424 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
12425
12426         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
12427         method here.
12428
12429         * mini.h mini-trampolines.c: Pass the trampoline argument to 
12430         mono_arch_patch_delegate_trampoline.
12431
12432         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
12433
12434         * mini-trampolines.c: Fix build.
12435
12436         * mini-amd64.h: Add delegate trampolines.
12437
12438         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
12439
12440         * inssel-amd64.brg: Add optimized call rules.
12441         
12442         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
12443
12444         * inssel-ia64.brg: Add optimized ldind(reg) rules.
12445
12446 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
12447
12448         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
12449         change.
12450
12451         * mini-ia64.c: Remove LMF fixmes.
12452
12453         * mini-ia64.h: Remove most fields from LMF.
12454
12455         * inssel-ia64.brg (stmt): Fix unaligned access errors.
12456
12457         * mini-trampolines.c: Add support for IA64 function descriptors.
12458
12459         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
12460         for IA64 function descriptors.
12461
12462 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
12463
12464         * tramp-arm.c: patch the vtable for virtual calls. Added
12465         support code to register/unregister the LMF.
12466         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
12467         more LMF work.
12468
12469 2005-08-19  Dick Porter  <dick@ximian.com>
12470
12471         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
12472         bit value if needed.
12473
12474 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
12475
12476         * mini.c (mini_get_method): Move handling of wrapper data here.
12477
12478         * mini.c (mono_method_to_ir): Add support for dynamic methods.
12479
12480         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
12481         virtual.
12482
12483         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
12484         bblock->code does not remain empty.
12485
12486 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
12487
12488         * arrays.cs: Add regression test for #75832.
12489
12490         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
12491         rules. Fixes #75832.
12492
12493         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
12494         instruction scheduling.
12495
12496 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
12497
12498         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
12499
12500 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
12501
12502         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
12503
12504         * mini-codegen.c: Fix VC build.
12505
12506         * cpu-pentium.md: Increase length of atomic_exhange_i4.
12507
12508 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12509
12510         * mini.h: fix signature for mono_register_opcode_emulation.
12511
12512 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
12513
12514         * mini.c: Get rid of most of the helper_sig_... constants using
12515         mono_create_icall_signature ().
12516
12517 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
12518
12519         * jit-icalls.c (helper_ldstr): New helper function.
12520
12521         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
12522
12523         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
12524         throw, load the string using a helper call instead of creating a string object.
12525
12526         * aot.c: Update after LDSTR changes.
12527
12528         * mini.h: Bump AOT file version.
12529         
12530         * aot.c: Save class size info into the AOT file. Print more statistics during
12531         compilation.
12532
12533         * mini.h: Bump AOT file version.
12534
12535         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12536         ordering of disasm cases. Fixes #74957.
12537
12538 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
12539
12540         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
12541         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
12542         the generic code needed for the ARM port.
12543
12544 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
12545
12546         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
12547         inssel-arm.brg: more ARM features and fixes.
12548
12549 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
12550
12551         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
12552         ARM port work in progress.
12553
12554 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
12555
12556         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
12557
12558         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
12559
12560         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
12561
12562         * inssel.brg (mini_emit_memset): Add support for unaligned access.
12563
12564         * *-ia64.*: Ongoing IA64 work.
12565         
12566         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
12567
12568 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
12569
12570         * TODO: Remove out-of-data todo stuff.
12571
12572         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
12573         dead code.
12574
12575         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
12576
12577         * mini.h: Bump corlib version.
12578
12579 2005-07-27  Martin Baulig  <martin@ximian.com>
12580
12581         * mini-codegen.c
12582         (create_copy_ins): Added `const unsigned char *ip' argument; set
12583         `copy->cil_code' from it.
12584
12585 2005-07-27  Martin Baulig  <martin@ximian.com>
12586
12587         * mini-exceptions.c (mono_handle_exception): Don't call
12588         mono_debugger_handle_exception() for filters.
12589
12590 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
12591
12592         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
12593         as well.
12594
12595 2005-07-26  Martin Baulig  <martin@ximian.com>
12596
12597         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
12598
12599         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
12600         helper_compile_generic_method() if the method is actually virtual
12601         and non-final.
12602
12603 2005-07-26  Martin Baulig  <martin@ximian.com>
12604
12605         * mini.c
12606         (trampoline_code): Renamed to `mono_trampoline_code' and made it
12607         public; this is now accessed directly by the debugger.
12608         (mono_generic_trampoline_code): Removed.
12609
12610         * debug-mini.c
12611         (mono_debug_init_method): Also add interncalls and wrappers.
12612
12613 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
12614
12615         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
12616
12617 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
12618
12619         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
12620
12621 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
12622
12623         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
12624
12625 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
12626
12627         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
12628         getting TLS offsets on AMD64 too.
12629
12630 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
12631
12632         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
12633
12634 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
12635
12636         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
12637         inssel-arm.brg, mini-arm.h: ARM port work in progress.
12638
12639 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
12640
12641         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
12642
12643         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
12644         to mini.c.
12645
12646         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
12647         mono_sparc_is_virtual_call ().
12648         
12649         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
12650
12651         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
12652         trampoline parameters.
12653
12654         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
12655         
12656         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
12657         to mono_arch_get_vcall_slot_addr.
12658
12659         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
12660         trampoline code.
12661
12662         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
12663
12664 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
12665
12666         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
12667
12668 2005-07-19  Martin Baulig  <martin@ximian.com>
12669
12670         * exceptions-amd64.c (throw_exception): Call
12671         mono_debugger_throw_exception() here like we're doing it on i386.
12672
12673 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
12674
12675         * mini-ia64.c: Add optimized TLS access support.
12676
12677 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
12678
12679         * mini-exceptions.c: Ongoing IA64 work.
12680
12681         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
12682
12683         * mini.c: Use the default optimization set when embedding. Fixes
12684         #75194.
12685
12686 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
12687
12688         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
12689         of trampolines to a separate file.
12690
12691         * mini-trampolines.c: New file.
12692
12693         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
12694         separate file.
12695         
12696         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
12697         amd64/ia64 code.
12698
12699         * mini-codegen.c: Fix cygwin build.
12700
12701 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
12702
12703         * mini.c: Add some minor changes needed by the IA64 port.
12704
12705         * *-ia64.*: Ongoing IA64 work.
12706
12707 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
12708
12709         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
12710         trampolines into arch-independent and arch-dependent parts.
12711
12712         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
12713
12714 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
12715
12716         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
12717
12718         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
12719         the xp-regalloc-branch for amd64.
12720
12721         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
12722         xp-regalloc-branch for x86.
12723
12724 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12725
12726         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
12727
12728 2005-07-06  Martin Baulig  <martin@ximian.com>
12729
12730         * mini.c
12731         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
12732         (mono_jit_runtime_invoke): Likewise.
12733
12734 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
12735
12736         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
12737         on x86 too.
12738         
12739         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
12740         without loading their metadata. Reorganize the file format so exception handling+
12741         debug info is kept separate from normal method info. Create MonoJitInfo 
12742         structures for methods lazily.
12743
12744         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
12745         loading metadata.
12746         (x86_class_init_trampoline): Patch AOT class init trampolines too.
12747
12748         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
12749
12750         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
12751         in AOT code.
12752
12753         * mini.h: Bump AOT file version.
12754
12755 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
12756
12757         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
12758
12759 2005-07-01  Raja R Harinath  <rharinath@novell.com>
12760
12761         * Makefile.am (check-local): Call semdel-wrapper.
12762
12763 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
12764
12765         * mini-x86.c: Revert the last change as it seems to break the build..
12766
12767 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
12768
12769         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
12770         
12771         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
12772
12773 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
12774
12775         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
12776         outside of the macro, so strange stuff doesn't happen with gcc4
12777         (NEW_AOTCONST_TOKEN): Likewise.
12778
12779 2005-06-28  Martin Baulig  <martin@ximian.com>
12780
12781         * mini.c (mini_class_is_system_array): New static method; use this
12782         instead of `klass->parent == mono_defaults.array_class' everywhere
12783         since this also works for the new generic array class.
12784
12785 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
12786
12787         * inssel.brg: Remove warnings.
12788
12789 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
12790
12791         * mini-ia64.c: Ongoing IA64 work.
12792
12793         * basic-float.cs: Add float->i1 conversion test.
12794
12795         * iltests.il: Add conv.u4 test.
12796
12797 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
12798
12799         * inssel-long.brg: Fix bug caused by last change.
12800
12801 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
12802
12803         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
12804         BSDs.  Allows the x86 JIT to work on OSX86
12805
12806 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
12807
12808         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
12809         u4->i8 conversion.
12810
12811         * mini-ia64.c: Ongoing IA64 work.
12812
12813 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
12814
12815         * mini-ia64.c: Ongoing IA64 work.
12816
12817         * driver.c: Clean up jit_code_hash as well when using --regression.
12818
12819         * inssel-long.brg: Fix long->i4/u4 conversion rules.
12820
12821         * basic-long.cs: Add tests for long->u4 conversion.
12822
12823 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
12824
12825         * mini.c: Take mono_get_domainvar out of macros. This makes sure
12826         that we do not depend on undefined C behavior: the order stuff
12827         gets evaluated within an expression. Fixes mono when compiled on
12828         GCC 4.
12829
12830 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
12831
12832         * *-ia64.*: Ongoing IA64 work.
12833
12834         * aot.c: Lower memory usage while loading AOT methods.
12835
12836         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
12837
12838         * mini.h: Bump AOT file format version.
12839
12840 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
12841
12842         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
12843
12844 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
12845
12846         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
12847         not on callee assembly). Fixed some comments.
12848
12849 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
12850
12851         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
12852         it gets proper disassembly.
12853         (emit_method_info): Remove some dead code.
12854
12855         * mini.c (mini_method_compile): Allways allocate the GOT var in
12856         mono_method_to_ir for emulating opcodes.
12857
12858 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
12859
12860         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
12861         before freeing the code memory. Fixes #74990.
12862
12863         * objects.cs: Add regression test for #74992.
12864
12865         * liveness.c: Extend live ranges of arguments to the beginning of the
12866         method. Fixes #74992.
12867
12868         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
12869         so it points into the faulting instruction.
12870
12871 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
12872
12873         * jit-icalls.c (mono_imul_ovf): Add exception handling.
12874
12875         * *-ia64.*: Ongoing IA64 work.
12876
12877         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
12878
12879 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
12880
12881         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
12882
12883         * *-ia64.*: Ongoing IA64 work.
12884
12885 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
12886
12887         * basic-long.cs: Add tests for add/sub.ovf.
12888
12889         * basic.cs: Add tests for sub.ovf.
12890
12891         * *-ia64.*: Ongoing IA64 work.
12892
12893 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
12894
12895         * *-ia64.*: Ongoing IA64 work.
12896
12897         * basic.cs: Add conv.ovf.i4.un test.
12898
12899 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
12900
12901         * mini.c: (remove_block_if_useless) Fixed bug 75061.
12902         
12903 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12904
12905         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
12906
12907 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
12908
12909         * *-ia64.*: Ongoing IA64 work.
12910
12911 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12912
12913         * trace.[ch]:
12914         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
12915
12916 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
12917
12918         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
12919
12920 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
12921
12922         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
12923
12924         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
12925         of a call is callable by a near call.
12926
12927 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
12928
12929         * mini-ia64.c: Ongoing IA64 work.
12930
12931 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
12932
12933         * genmdesc.c: Make the generated array non-static.
12934
12935         * inssel-long.brg: Fix LSHR_IMM rule.
12936
12937         * *-ia64.*: Ongoing IA64 work.
12938
12939         * *-ia64.*: Ongoing IA64 work.
12940
12941 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
12942
12943         * *-ia64.*: Ongoing IA64 work.
12944
12945         * *-ia64.*: Ongoing IA64 work.
12946         
12947         * mini-ia64.c: Ongoing IA64 work.
12948
12949         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
12950
12951 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
12952
12953         * objects.cs basic-calls.cs: Move some tests to objects.cs.
12954         
12955         * objects.cs basic-long.cs: Move some tests to objects.cs.
12956
12957 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
12958
12959         * *-ia64.*: Ongoing IA64 work.
12960
12961         * iltests.il: Add a new test.
12962
12963         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
12964         newobj. Fixes #75042.
12965
12966 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
12967
12968         * *-ia64.*: Ongoing IA64 work.
12969         
12970         * *-ia64.*: Ongoing IA64 work.
12971         
12972         * *-ia64.*: Ongoing IA64 work.
12973
12974         * basic.cs objects.cs: Move tests accessing static variables as well.
12975
12976         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
12977
12978 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
12979
12980         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
12981
12982         * driver.c: Always print failed tests.
12983
12984         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
12985         frame pointer.
12986
12987         * *ia64*: Ongoing IA64 work.
12988
12989 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
12990
12991         * basic.cs: Add tests for add.ovf. Fix warnings.
12992
12993 2005-05-18  Miguel de Icaza  <miguel@novell.com>
12994
12995         * driver.c (mono_main): Avoid crash if no argument is passed to
12996         --break;  Do not use g_error, but f_printf.   And fix all other
12997         ocurrences of the same crash.
12998
12999 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13000
13001         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13002         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13003         Fixes #74742.
13004
13005 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13006
13007         * *-ia64.*: Add beginnings of IA64 backend.
13008
13009         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13010
13011 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13012
13013         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13014         Fixes #74925.
13015
13016         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13017
13018         * mini-amd64.c: Fix a warning.
13019
13020 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13021
13022         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13023         in float_neg. Fixes #74897.
13024
13025         * mini-amd64.c (emit_call): Fix another near call bug.
13026
13027 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13028
13029         * declsec.c: Keep the appdomain information in the structure. Added a 
13030         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
13031         value gets overwritten).
13032         * declsec.h: Set the default MonoArray for the the stack to 6. Added
13033         an MonoAppDomain member to MonoSecurityFrame.
13034         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
13035         used in the stack walk. Now use a MonoArray which grow (double) when
13036         it gets full.
13037
13038 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13039
13040         * mini.c: Re-enabled runtime cleanup, since running threads should
13041         now properly stop when exiting.
13042
13043 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13044
13045         * mini-codegen.c: New file contaning the arch-independent local
13046         register allocator. Not used by any architectures yet.
13047
13048         * mini.h linear-scan.c: Merge some changes from the 
13049         mini-xp-local-regalloc branch.
13050
13051 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13052
13053         * mini-amd64.c (emit_call): Fix calls to native functions when the
13054         runtime is compiled as a shared library. Fixes #74756.
13055
13056         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
13057         on a literal field. Fixes #74751.
13058
13059 2005-04-25  Raja R Harinath  <rharinath@novell.com>
13060
13061         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
13062
13063 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13064
13065         * objects.cs: Add missing null casting test.
13066
13067 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13068
13069         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
13070         in wrapper methods. Also rename 'address' variable to 'offset'.
13071
13072 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13073
13074         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
13075         warnings.
13076         
13077         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
13078
13079         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
13080         work on windows.
13081
13082 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13083
13084         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
13085
13086 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13087
13088         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
13089         just the last bytes.
13090
13091 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13092
13093         * aot.c (mono_compile_assembly): Fix warning.
13094
13095         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
13096         by the _MSC_VER stuff.
13097
13098 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
13099
13100         * inssel-long.brg: Fix #74588.
13101
13102         * cpu-amd64.md: Fix #74591.
13103
13104         * iltests.il: Add new regression tests.
13105
13106 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
13107
13108         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
13109         valuetype.
13110
13111 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
13112
13113         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
13114
13115         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
13116         from Bill Middleton <flashdict@gmail.com>.
13117
13118 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
13119
13120         * arrays.cs: Add new regression test. Fix warnings.
13121
13122 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
13123
13124         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
13125         and leakage in CKFINITE.
13126
13127         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
13128         this to a null op since it is called on amd64 too.
13129
13130         * exceptions-amd64.c (get_throw_trampoline): Align stack.
13131
13132         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
13133         body since this is not used on amd64.
13134         
13135         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
13136
13137         * mini-amd64.c: Remove obsolete fixmes.
13138
13139         * mini.c (print_method_from_ip): Fix debugging support.
13140
13141 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13142
13143         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
13144         so that expressions that don't give much gain are not reduced.
13145         * ssapre.h: Likewise.
13146
13147 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
13148
13149         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
13150
13151         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
13152
13153         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
13154
13155 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
13156
13157         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
13158
13159         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
13160
13161 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
13162
13163         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
13164         stack touching.
13165
13166         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
13167
13168         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
13169
13170         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
13171
13172         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
13173         MONO_ARCH_USE_SIGACTION. Fixes #74252.
13174
13175         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
13176
13177         * mini-x86.c: Fix up stack overflow handling.   
13178
13179         * exceptions.cs: Add new regression test.
13180
13181 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
13182
13183         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
13184         mono_jit_thread_attach.
13185
13186         * mini.c (mono_method_to_ir): Verify called method is not abstract.
13187
13188 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13189
13190         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
13191         avoid calling constructors using callvirt.
13192
13193         * inssel.brg: Fix #74073.
13194
13195 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
13196
13197         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
13198         compilation with non-GCC compilers.
13199         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
13200         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
13201
13202 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
13203
13204         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
13205         klass->interface_offsets (will likely fix bug#74073).
13206
13207 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13208
13209         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
13210
13211 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
13212
13213         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
13214         to amd64_div_reg_size ().
13215         
13216         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
13217
13218 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
13219
13220         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
13221
13222 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13223
13224         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
13225
13226 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13227
13228         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
13229         
13230         * mini.c (mono_precompile_assembly): Load and precompile referenced
13231         assemblies as well. Fixes #74015.
13232
13233 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
13234
13235         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
13236
13237 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
13238
13239         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
13240         a lot of checks and (anyway) permissions cannot work until corlib is 
13241         loaded.
13242
13243 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
13244
13245         * mini-ppc.c: fixed ABI issue on sysv/ppc.
13246
13247 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
13248
13249         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
13250         calls (fixes bug#72824).
13251
13252 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13253
13254         * mini.c: fix tail recursion elimination (see test in bug#73936).
13255
13256 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
13257
13258         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
13259         some fp functions in sse2 mode.
13260
13261 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
13262
13263         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
13264
13265 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
13266
13267         * mini.h mini.c: Add mono_get_jit_tls_key ().
13268
13269         * mini-x86.c: Enable fast TLS support on windows.
13270
13271 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
13272
13273         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
13274         * mini.c: Check for p/invoke method when generating code. If a
13275         p/invoke method, or it's class, isn't decorated with [Suppress
13276         UnmanagedCodeSecurity] then generate code to call System.Security.
13277         UnmanagedDemand (only if the security manager is active).
13278
13279 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13280
13281         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
13282         last change as it seems to cause strange crashes.
13283         
13284 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
13285
13286         * *.c: handle unsafe function pointers where needed.
13287
13288 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13289
13290         * mini.c (mono_jit_free_method): Remove the fixme too.
13291
13292 2005-03-15  Miguel de Icaza  <miguel@novell.com>
13293
13294         * mini.c: As discussed, make the code actually free the delegate
13295         thunk now, to enable the debugging of delegate problems, use
13296         MONO_DEBUG=1 when running Mono. 
13297
13298         This takes also care of parts of the leaks as seen by Joe.
13299
13300 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
13301
13302         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
13303         thread_tls_offset calculation.
13304
13305 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
13306
13307         * declsec.c: Reworked linkdemand checks for icall. The previous code
13308         was using the declaration code (untrusted) and didn't work as expected
13309         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
13310         specific case.
13311
13312 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
13313
13314         * iltests.il: Add new localloc test.
13315
13316         * mini-amd64.c: Handle large stack allocations the same way as on
13317         windows if stack overflow handling is working.
13318         
13319         * mini-amd64.c: Allocate the signal stack using mmap.
13320
13321         * mini.c (sigsegv_signal_handler): Fix reading of context.
13322
13323         * mini-exceptions.c: Fix up stack overflow handling.
13324
13325         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
13326
13327         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
13328
13329         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
13330
13331         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
13332
13333         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
13334         tramp_init functions as they are no longer needed.
13335
13336 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
13337
13338         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
13339         
13340         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
13341
13342         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
13343         
13344         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
13345         support that now.
13346
13347         * mini-ops.h: Add OP_LMUL_IMM.
13348
13349         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
13350         long mul/div opcodes as intrinsic.
13351
13352         * mini-amd64.c (emit_call): Handle the case when the callee might be
13353         an AOT method.
13354
13355 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
13356
13357         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
13358         extra safe.
13359         
13360         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
13361
13362         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
13363
13364 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
13365
13366         * mini.c (mono_codegen): Don't leak here, to help people running
13367         monogrind.
13368
13369 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
13370
13371         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
13372         conversions in sse2 mode.
13373
13374         * basic-float.cs: Add regression test.
13375         
13376         * mini-amd64.c: Reenable sse2.
13377
13378 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
13379
13380         * mini-amd64.c: Disable sse2 until some regressions are fixed.
13381
13382 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
13383
13384         * driver.c: Copyright text should include 2005.
13385         
13386 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
13387
13388         * cpu-amd64.md (load_membase): Fix more max lengths.
13389
13390 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
13391
13392         * cpu-amd64.md (load_membase): Fix max length.
13393
13394         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
13395
13396         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
13397
13398         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
13399         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
13400
13401         * basic-float.cs: Add rounding regression test.
13402
13403         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
13404
13405 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
13406
13407         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
13408         structures in registers for pinvoke wrappers.
13409
13410 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
13411
13412         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
13413
13414 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
13415
13416         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
13417         wrapper to mono_jit_thread_attach.
13418
13419         * mini.c (mini_jit_thread_attach): New jit icall.
13420
13421         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
13422         native->managed wrappers.
13423
13424         * exceptions.cs: Add new regression test.
13425
13426         * mini.c (optimize_branches): Check regions in the cbranch to throw
13427         block case as well. Fixes #73242.
13428
13429 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13430
13431         * mini.c: thread safety fixes.
13432
13433 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
13434
13435         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
13436         patching stuff, since delegates use jump trampolines so there is
13437         no caller.
13438
13439         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
13440         jump trampolines.
13441         
13442         * tramp-amd64.c: Fix build.
13443
13444         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
13445         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
13446
13447         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
13448         Rename this to mono_arch....
13449         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
13450
13451         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
13452
13453         * mini-amd64.c (emit_call): If both the caller and the callee is
13454         guaranteed to have 32 bit addresses, emit a normal call.
13455
13456         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
13457
13458         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
13459         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
13460         method_ptr inside delegates.
13461
13462 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
13463
13464         * mini.c (mono_jit_free_method): Free the method info even if the native code is
13465         invalidated. Fixes #73001.
13466
13467         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
13468
13469         * mini-x86.c: Only use stdcall for pinvokes on windows.
13470
13471 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13472
13473         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
13474         * mini-x86.c: remove unreliable __thread var offset detection,
13475         use the correct accessors and enable by default.
13476
13477 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13478
13479         * mini.c (mono_jit_free_method): Fix memory leak.
13480
13481 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
13482
13483         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
13484
13485 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
13486
13487         * cpu-amd64.md: Fix lengths of atomic opcodes.
13488
13489 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13490
13491         * driver.c: try to not imply using ICU is any good.
13492
13493 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
13494
13495         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
13496         functions as inline ops.
13497
13498         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
13499         some Interlocked functions as inline ops.
13500
13501         * mini.c (move_basic_block_to_end): Fix bug in last patch.
13502
13503         * mini.h (MonoBasicBlock): Reorganize fields a bit.
13504
13505         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
13506
13507         * mini.c: Add support for OP_NOT_TAKEN.
13508
13509         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
13510         structures in registers for pinvoke wrappers.
13511
13512         * mini-amd64.c: Fix warnings.
13513
13514 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
13515
13516         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
13517
13518         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
13519
13520         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
13521         address instead of loading the address from it.
13522
13523         * mini-x86.c: Add support for returning small structs in registers
13524         on Win32. Fixes part of #70864.
13525         
13526 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
13527
13528         * trace.c (get_token): Improve error checking.
13529
13530 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13531
13532         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
13533
13534 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
13535  
13536         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
13537         it can be reused for MonoClass.
13538         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
13539         _LINKDEMAND.
13540
13541 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
13542
13543         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
13544         instead of a MonoReflectionMethod. The method information wasn't used
13545         when displaying SecurityException details (but will be now).
13546
13547 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
13548
13549         * Makefile.am : windows build fix.
13550
13551 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13552
13553         * iltests.il: Add new regression test.
13554
13555         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
13556         #72522.
13557
13558 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
13559  
13560         * mini.c: Moved linkdemand check into helper function check_linkdemand
13561         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
13562         LDFTN, LDVIRTFTN).
13563
13564 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
13565
13566         * declsec.c: Added statistics counter for different kinds of 
13567         LinkDemands.
13568         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
13569         (and commented) declaration.
13570         * mini.c: Added statistics counter for security Demand code 
13571         generation. Added display of security statistics.
13572
13573 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
13574
13575         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
13576         Fix compilation errors under gcc-2.95.
13577
13578 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
13579
13580         * mini.c, driver.c: Use the new jit trampoline hashtable
13581
13582 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
13583
13584         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
13585
13586 2005-02-11  Martin Baulig  <martin@ximian.com>
13587
13588         * debug-mini.c (mono_debug_close_method): Free the line number array.
13589
13590 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
13591
13592         * aot.c: Break up large methods into smaller ones. Share GOT slots for
13593         icalls.
13594
13595         * mini.h: Bump AOT file format version. 
13596
13597 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
13598
13599         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
13600         APTC and P/Invoke.
13601         * declsec.h: Added macros to get/set lazyly initialized security 
13602         informations about assemblies. Added new enum for different type of
13603         possible LinkDemand violation. Added function to check LinkDemands.
13604         * mini.h: Added a field to MonoCompile to hold any security violation
13605         detected when JITting a method (so it can be thrown later).
13606         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
13607         and CEE_CALLVIRT. Added code to throw exception at the end of
13608         mini_method_compile (note: the exception is unhandled right now).
13609
13610 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13611
13612         * mini.c, jit-icalls.c: use the managed implementation of
13613         memset for initobj and memset, to avoid managed <-> unmanaged
13614         transitions.
13615
13616 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
13617
13618         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
13619         optimization if it would need a GOT var.
13620
13621         * basic.cs: Add tests for constant propagation and switch statements.
13622
13623         * ssa.c: Fix out-of-range constant propagation and switch statements.
13624
13625 2005-02-09    <vargaz@freemail.hu>
13626
13627         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
13628
13629 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
13630
13631         * cpu-amd64.md (load_membase): Fix max length of load_membase.
13632
13633 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
13634
13635         * mini.c: update to new signature of mono_class_get_allocation_ftn().
13636
13637 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
13638
13639         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
13640         arithmetic operations.
13641
13642 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
13643
13644         * mini-ppc.c: add a workaround for broken user code that
13645         DllImports vararg functions with non-vararg signatures.
13646
13647 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13648
13649         * mini.c (mono_jit_compile_method_inner): Add detection and a 
13650         meaningfull error message for assemblies written in Managed C++.
13651
13652         * tramp-amd64.c mini-amd64.h: Add support for 
13653         create_trampoline_from_token ().
13654
13655         * aot.c mini-x86.c abcremoval.c: Applied patch from
13656         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
13657
13658 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13659
13660         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
13661         which takes a MonoImage/token as parameter instead of a MonoMethod.
13662
13663         * aot.c: Use the new trampoline for initializing vtables.
13664
13665         * aot.c: Add support for ldfld/stfld_remote wrappers.
13666
13667         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
13668         rules for compare <MEM>, IMM.
13669
13670         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
13671
13672         * aot.c: Handle inherited finalizers correctly.
13673
13674 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13675
13676         * inssel.brg (stmt): Add a missing _setup_... ().
13677
13678         * aot.c: Save some parts of the class state to the AOT file and use it
13679         to recompute that state when a class is initialized.
13680
13681         * mini.c: Install AOT hooks into the runtime.
13682
13683         * mini.h: Bump AOT file format version.
13684         
13685         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
13686         Fixes #72148.
13687
13688         * iltests.il: Add new test.
13689
13690 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13691
13692         * mini.c: fix typo.
13693
13694 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
13695
13696         * mini.c: setup the statistical profiler in the thread attach
13697         callback to cope with the new single thread code.
13698
13699 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
13700
13701         * mini-ppc.c: ensure we have enough room for the profiler
13702         calls (fixed bug#72084).
13703
13704 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13705
13706         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
13707         it.
13708
13709 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13710
13711         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
13712
13713 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13714
13715         * ssapre.c: Fixed an issue with down safety (this allows IronPython
13716         to succesfully execute parrotbench).
13717         * ssapre.h: Likewise.
13718
13719 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
13720
13721         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
13722         variable for stores to method arguments (fixes a SSAPRE issue).
13723
13724 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13725
13726         * mini.c: handle value types in dup, fixes gen-112.cs.
13727
13728 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
13729
13730         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
13731         sequence for calls in dynamic methods to avoid thunks.
13732
13733 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13734
13735         * mini.c: correctly remove dynamic methods from the hashtable.
13736
13737 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
13738
13739         * driver.c: Disabled SSAPRE until fix the bug that appears
13740         in IronPython's parrotbench.
13741
13742 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13743
13744         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
13745
13746         * mini.c (mono_method_to_ir): Revert the previous change.
13747         
13748         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
13749         when AOT compiling.
13750
13751         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
13752         mono_jit_info_table_find () etc. when running under valgrind.
13753
13754         * inssel.brg: Fix warnings.
13755
13756         * mini-exceptions.c: Fix warnings.
13757
13758 2005-01-31  Martin Baulig  <martin@ximian.com>
13759
13760         * driver.c (compile_all_methods_thread_main): Don't try to compile
13761         generic methods or anything which has type parameters.
13762
13763 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13764
13765         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
13766
13767         * TestDriver.cs: Add --verbose flags.
13768
13769         * graph.c ssa.c: Fix 64 bit warnings.
13770         
13771         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
13772         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
13773         Fix 64 bit warnings.
13774
13775         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
13776         variable not spotted by gcc.
13777         
13778         * mini-amd64.c inssel-amd64.brg: Applied patch from  
13779         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
13780         X86_COMPARE_MEMBASE opcodes.
13781
13782         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
13783
13784 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13785
13786         * *: MonoMethod->signature might be NULL now. You *MUST* use
13787         mono_method_signature.
13788
13789 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13790
13791         * driver.c (compile_all_methods_thread_main): Compile the methods
13792         without invoking cctors.
13793
13794 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13795
13796         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
13797         * basic-calls.cs: test for the above.
13798
13799 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13800
13801         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
13802         MonoJitInfo changes.
13803
13804 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
13805
13806         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
13807         eagerly if it contains dynamic methods.
13808         
13809         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
13810
13811         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
13812         trace, it is now computed by an icall from trace_ips.
13813         
13814         * mini-exceptions.c: Fix a warning.
13815
13816 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
13817
13818         * mini-exceptions.c: don't bother getting stack trace info if
13819         it's not going to be used.
13820
13821 2005-01-27  Raja R Harinath  <rharinath@novell.com>
13822
13823         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
13824         ssapre-mini-ops.h.
13825
13826 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
13827
13828         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
13829
13830         * aot.c: Avoid calling mono_method_get_header () if not needed.
13831
13832         * mini.h: Bump AOT file format version.
13833         
13834         * mini.c (mono_emit_native_call): Allocate a GOT var here.
13835
13836         * mini.c (mono_print_tree): Print more info for calls.
13837
13838 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13839
13840         * declsec.h: Remove warning by adding missing include for marshal.h
13841
13842 2005-01-26  Martin Baulig  <martin@ximian.com>
13843
13844         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
13845         `ip' twice.
13846
13847 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
13848
13849         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
13850         flags.
13851
13852         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
13853
13854         * aot.c (mono_compile_assembly): Fix a warning.
13855
13856 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
13857
13858         * declsec.c: Look for security attributes on the original MonoMethod 
13859         (and not the wrapped one). This fix permissions on icalls.
13860
13861 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
13862
13863         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
13864
13865         * mini.c (mono_allocate_stack_slots): Add a fixme.
13866
13867         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
13868
13869 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13870
13871         * inssel.brg: optimize casts of sealed types (more
13872         optimizations waiting for fixes in remoting).
13873
13874 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
13875
13876         * inssel.brg (stmt): Add another dummy rule.
13877
13878         * driver.c: Fix warnings.
13879
13880         * driver.c (mono_main): If running under valgrind, instruct glib to use
13881         the system allocation functions so valgrind can track the memory
13882         allocated by the g_... functions.
13883
13884         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
13885
13886         * mini-ops.h: Add OP_DUMMY_STORE opcode.
13887
13888         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
13889
13890         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
13891         variables in try regions.
13892
13893         * mini.c (mini_method_compile): Don't disable optimizations on large
13894         methods when AOT compiling.
13895
13896         * mini.c (mono_allocate_stack_slots): New arch independent method to 
13897         allocate stack slots. Not yet used.
13898
13899 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13900
13901         * debug-mini.c (mono_debug_close_method): Plug some leaks.
13902
13903 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
13904
13905         * mini-ppc.c: make the branch info relative as the code
13906         buffer can be reallocated.
13907
13908 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13909
13910         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
13911         * driver.c: Removed the AOT/security restriction. Now initialize the
13912         security manager (in metadata) if --security is used.
13913         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
13914         rather than the pointer to declarative security, when AOT is used.
13915
13916 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
13917
13918         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
13919         basic blocks, reduced intrinsic exception throwing code size.
13920
13921 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
13922
13923         * driver.c (mini_usage): Reorder the usage screen.
13924
13925 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
13926
13927         * mini.c (mono_resolve_patch_target): Fix warning.
13928
13929 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
13930
13931         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
13932         previous patch.
13933
13934         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
13935
13936         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
13937         breaks the amd64 build.
13938
13939         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
13940         register allocation. Fixes #71454.
13941
13942         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
13943
13944         * arrays.cs: Add new regression test.   
13945
13946 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
13947
13948         * ssapre.c: Turned usage of snprintf to GString.
13949         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
13950         (I left it on by mistake in my previous commit).
13951
13952 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
13953
13954         * mini.c, cfold.c, basic-calls.cs: preserve side effects
13955         on cond branch optimization (fixes bug# 71515).
13956
13957 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
13958
13959         * abcremoval.c: Fixed bug 71062.
13960         * abcremoval.h: Likewise.
13961
13962 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
13963
13964         * mini.c: Added a new functionality to optimize_branches, the removal
13965         of useless basic blocks, and fixed some problem in the removal of
13966         critical edges; some utility functions added for both purposes.
13967         * ssapre.c: Added complex expression support, and fixed bug 70637.
13968         * ssapre.h: Likewise.
13969         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
13970         enabled in SSAPRE.
13971         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
13972         * driver.c: Re-enabled SSAPRE.
13973
13974 2005-01-19  Martin Baulig  <martin@ximian.com>
13975
13976         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
13977         the result of mono_get_method_constrained().
13978
13979 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
13980
13981         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
13982         manager.
13983
13984 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
13985
13986         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
13987         be detected.  Fixes #59296.
13988
13989 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13990
13991         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
13992         which can happen. Fixes #71361.
13993
13994 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13995
13996         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
13997         manager.
13998
13999 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14000
14001         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14002         appdomain-unload.exe to fail.
14003         
14004         * mini.c: Fix some memory leaks.
14005
14006 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14007
14008         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14009         Fixed bug and sped up some codepaths.
14010
14011 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14012
14013         * mini.c: Fix some memory leaks.
14014
14015         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14016         conversion.
14017
14018         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14019
14020         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14021         #71320.
14022
14023         * iltests.il: Add regression test for #71320.
14024
14025 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14026
14027         * mini.c (mono_codegen): Fix installation of profiler hooks.
14028
14029         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
14030
14031 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14032
14033         * mini.h, mini.c, cfold.c: optimize access to enum
14034         readonly fields, too. Eval conditional branches if possible
14035         to perform unreachable code removal in more cases.
14036
14037 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
14038
14039         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
14040
14041         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
14042         code manager.
14043
14044         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
14045         WinXP DEP. Fixes #71244.
14046
14047 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
14048
14049         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
14050
14051 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14052
14053         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
14054
14055 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14056
14057         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
14058         changes.
14059
14060         * mini.h: Bump AOT version.
14061
14062         * mini.h (MonoCompile): Change exvar to a hash table.
14063
14064         * mini.c: Allocate a separate exvar for each handler block.
14065
14066         * mini.c: Get rid of the computation of filter_lengths, its not needed.
14067
14068         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
14069         ex var with the pending exception and only throw if the two are equal.
14070         Fixes #68552.
14071         
14072         * exceptions.cs: Add tests for rethrow and nested catch clauses.
14073
14074         * mini-x86.c: Fix warnings.
14075
14076         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
14077         used by all the ports now.
14078
14079         * aot.c: Add write-symbols and save-temps options.
14080
14081 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14082
14083         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
14084
14085 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
14086
14087         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
14088         operations.
14089
14090         * tramp-s390.c: Check vtable slot belongs to the domain.
14091
14092         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
14093         as per other platforms.
14094
14095         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
14096
14097 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
14098
14099         * driver.c: we don't run the Main() code in a subthread anymore.
14100
14101 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
14102
14103         * mini.c: added experimental rtc support in the statistical
14104         profiler: if the user has the permission, more accurate statistics
14105         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
14106         The MONO_RTC value must be restricted to what the linux rtc allows:
14107         power of two from 64 to 8192 Hz.
14108
14109 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14110
14111         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
14112
14113 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
14114
14115         * mini-ppc.c: better icache flush for smp.
14116
14117 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
14118
14119         * mini-amd64.c (emit_move_return_value): Fix memory leak.
14120
14121         * mini-x86.c (get_call_info): Add the get_call_info () code from the
14122         amd64 port, not yet used.
14123
14124 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14125
14126         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
14127         a struct type.
14128
14129 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14130
14131         * driver.c: Added --security option to activate the security manager.
14132         Right now this will allow code generation for declarative demands and
14133         is disabled when AOT is specified.
14134         * mini.c: Add code generation for declarative security demands.
14135         * mini.h: Add mono_use_security_manager as an extern gboolean.
14136
14137 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14138
14139         * aot.c (mono_compile_assembly): Speed up compilation a bit by
14140         emitting more dense assembly code.
14141
14142         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
14143         exception throwing stuff.
14144
14145 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14146
14147         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
14148         dead code.
14149
14150         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
14151         left in by mistake.
14152
14153         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
14154         fixed.
14155
14156         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
14157
14158         * tramp-*.c: Only patch vtable slots if the object is in the current
14159         domain. Fixes appdomain-unload.exe.
14160
14161         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
14162         
14163         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
14164         x86 branch.
14165
14166 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * mini.c (reverse_branch_op): New helper function.
14169
14170         * mini.c (optimize_branches): Run the new optimization only on 
14171         platforms which support it. Also reverse all kinds of branches.
14172
14173         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
14174
14175         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
14176         a throw statement.
14177
14178         * mini.c (optimize_branches): Reverse not-equals branches if the false
14179         bblock is a throw. This happens a lot of time with argument checking in
14180         corlib.
14181
14182         * mini.c (mono_codegen): Add support for placing basic blocks after
14183         the function epilogue.
14184
14185         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
14186         function epilogue.
14187         
14188 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
14189
14190         * mini.c (setup_stat_profiler): Only set this up if the platform
14191         supports ITIMER_PROF.
14192
14193 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14194
14195         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
14196         previous patch.
14197
14198         * inssel.brg: Fix a warning.
14199
14200 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
14201
14202         * mini.c: added support for statistical profiler 
14203         (run with: --profile=default:stat).
14204
14205 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
14206
14207         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
14208
14209         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
14210
14211         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
14212         related to global registers from the amd64 port.
14213
14214 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14215
14216         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
14217
14218         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
14219         with global registers.
14220         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
14221
14222         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
14223
14224 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
14225
14226         * debug-mini.c (encode_value): Fix off-by-one.
14227
14228         * aot.c (encode_value): Likewise.
14229
14230         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
14231
14232 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14233
14234         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
14235         AOT.
14236
14237         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
14238         
14239         * aot.c (emit_method_info): Increase size of temp buffer.
14240
14241         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
14242         the AOT case.
14243
14244 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
14245
14246         * aot.c (emit_method_info): Fix build.
14247         
14248         * aot.c: Further rework of the AOT file format to reduce the size of
14249         the method info data.
14250
14251         * mini.h: Bump AOT file format version.
14252
14253 2004-12-27  Martin Baulig  <martin@ximian.com>
14254
14255         * mini.c (mini_get_method): New static method; call
14256         mono_get_method_full() and mono_get_inflated_method().
14257         (mono_method_to_ir): Use mini_get_method() instead of
14258         mono_get_method_full(). 
14259
14260 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
14261
14262         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
14263
14264 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
14265
14266         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
14267
14268         * inssel-amd64.brg: Add some optimization rules.
14269
14270 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14271
14272         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
14273         standard not GC'd stuff is fine.
14274
14275 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
14276
14277         * aot.c: Rework the AOT file format to get rid of most of the global
14278         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
14279
14280         * mini.h: Bump AOT file format version.
14281         
14282 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * mini.h: Bump AOT file format version.
14285
14286         * aot.c (mono_aot_is_got_entry): New function to determine if an 
14287         address is inside a GOT.
14288
14289         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
14290
14291         * cpu-pentium.md: Increase the maximum size of some instructions which
14292         might involve a got access.
14293         
14294         * mini.c (get_method_from_ip): Another debug helper function.
14295
14296         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
14297         when got var accesses are created during the decompose phase.
14298
14299         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
14300
14301         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
14302         argument mini_compile_method and to MonoCompile, and use this to
14303         determine whenever a given method is compiled for AOT. This allows the
14304         other methods compiled during AOT compilation to be free of AOT stuff,
14305         so the backends does not need to add special support for them by
14306         creating a fake GOT etc.
14307
14308         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
14309         longer needed.
14310
14311 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
14312
14313         * mini.c (mono_method_to_ir): It turns out that some of the
14314         x-appdomain wrappers are lax with types, so just ignore this for
14315         all wrappers.
14316
14317         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
14318         at the vtable->klass. If it is non-shared code we can just use the
14319         vtable.
14320
14321 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
14322
14323         * mini-ppc.c: access MonoDomain from tls, too.
14324
14325 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
14326
14327         * declsec.c: Removed unused variable (and related warning ;-)
14328
14329 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
14330
14331         * iltests.il: New test for LDELEMA on an array of ref types.
14332
14333         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
14334         all ldelema's on reftypes.
14335         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
14336         it was the wrong place to put it.
14337
14338         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
14339         register to pop to make this cleaner, at the request of Paolo.
14340
14341 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14342
14343         * mini-ops.h (OP_GETHASHCODE): New op.
14344
14345         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
14346
14347         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
14348         operation.
14349
14350         For a microbenchmark, this reduces the cost of Hashtable.get_Item
14351         by 25%.
14352         
14353         * mini-x86.c (mono_arch_output_basic_block): Rather than
14354
14355         add ebp, 4
14356
14357         Emit
14358
14359         pop edx
14360
14361         The first is 3 bytes while the second is 1. This saves 36 kb on
14362         mscorlib, quite a big saving. When bootstraping mcs, I was able to
14363         see a small boost because of icache locality.
14364
14365         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
14366
14367 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
14368
14369         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
14370         started code sharing with the generic code.
14371
14372 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
14373
14374         * mini-ppc.c, cpu-g4.md: added code for direct access to
14375         tls data slots.
14376
14377 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
14380          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
14381         to OP_TLS_GET.
14382
14383 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
14384
14385         * declsec.c|h: Added functions to cache the declarative stack modifiers
14386         in MonoJitInfo and to create a security frame from a MonoJitInfo 
14387         structure.
14388         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
14389         created. Register internal calls for System.Security.SecurityFrame::
14390         _GetSecurityFrame and _GetSecurityStack.
14391         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
14392         the definitions for the new stack walk/callback mechanism.
14393         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
14394         first security frame for LinkDemands and InheritanceDemands) and
14395         GetSecurityStack for Demands. Both use the new mono_walk_stack code
14396         from lupus.
14397         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
14398         walk initialization (lupus).
14399
14400 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14401
14402         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
14403         idiom.
14404         (handle_loaded_temps): Do not create a temporary variable for
14405         things that we know are temps. They will never be modified.
14406         (mono_spill_call): Set MONO_INST_IS_TEMP
14407         (mono_emulate_opcode): ditto
14408         (emit_tree): ditto
14409         (mono_method_to_ir.CEE_DUP): ditto
14410
14411 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
14412
14413         * mini.c (type_to_eval_stack_type): Make this handle the void type
14414         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
14415         (emit_tree): use ip_in_bb to special case some common idioms
14416         Update all callers to pass in the IP.
14417         (mono_method_to_ir): Make CEE_CALL* do the above as well.
14418
14419         This gives us a nice 2% speedup in mcs bootstrap.
14420
14421         * mini-x86.c (peephole_pass): Peephole pass to make
14422         mov  [foo], eax
14423         push [foo]
14424
14425         into
14426
14427         mov [foo], eax
14428         push eax
14429
14430         * mini.c (ip_in_bb): new method.
14431         (mono_method_to_ir): use this method rather than doing the hash
14432         lookup ourselves.
14433
14434         * linear-scan.c (mono_linear_scan): When expiring actives, you
14435         don't need to keep around variables that expire on this
14436         instruction. This makes it so that:
14437              a = b + 1
14438         will turn into:
14439              store (ebx add (ebx, 1))
14440         which will become
14441              add ebx, 1
14442
14443 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
14444
14445         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
14446         combination to avoid doing two copies. Fix up problems with previous
14447         patch.
14448
14449         * mini.c: Fix 64 bit warnings.
14450
14451         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
14452
14453 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
14454
14455         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
14456         changes from the x86 code.
14457
14458         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
14459
14460 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
14463         throwing code to reduce its size, unify the AOT and non-aot code and 
14464         get rid of relocations in the AOT case.
14465
14466         * mini-x86.h mini.c exceptions-x86.c 
14467         (mono_arch_get_throw_corlib_exception): New arch specific function to 
14468         raise corlib exceptions which doesn't require relocations in the 
14469         caller.
14470
14471         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
14472
14473 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
14474
14475         * mini.c (mono_emit_method_call): Only allocate the got var when it is
14476         needed.
14477
14478         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
14479         in the AOT case.
14480
14481 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
14482
14483         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
14484         with add function when used from Inc/dec atomic 
14485         functions. Re-enabled optimization on x86.
14486         * mini-ops.h: renamed atomic_add functions to
14487         allow _add to match the Interlocked::Add and
14488         _add_next to match Interlocked::Inc/Dec.
14489
14490 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
14491
14492         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
14493         linking of BBs to the end BB, and enabled SSAPRE also with
14494         consprop and copyprop (which was prevented by that bug).
14495
14496 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
14497
14498         * mini-x86.c: disabling the Interlocked optimizing code. 
14499
14500 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
14501
14502         * aot.c (load_aot_module): Move reading of got_addr after the AOT
14503         file version check.
14504         
14505 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
14506
14507         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
14508         interlocked optimization due lack of support on x86, rewrote 
14509         exchange to take into account that base may be in eax.
14510         
14511         xsp works again; activated Interlocked optimizing code.
14512         
14513 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
14514
14515         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14516
14517 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
14518
14519         * mini-ops.h: Add new opcodes.
14520
14521         * mini.h: Add new patch types. Add got_var to MonoCompile.
14522
14523         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
14524         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
14525         make it work with all kinds of patchable code.
14526
14527         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
14528         address of the GOT, and referencing entries in the GOT.
14529
14530         * mini.c: Add code to load the GOT address if needed by an opcode.
14531
14532         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
14533         independent AOT code on the x86 using an elf-style Global Offset Table.
14534
14535 2004-12-14  Raja R Harinath  <rharinath@novell.com>
14536
14537         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
14538
14539 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14540
14541         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
14542         when running xsp.
14543
14544 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
14545
14546         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
14547         of Interlocked:Increment/Decrement/Add as inline ops.
14548         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
14549
14550 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
14551
14552         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
14553         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
14554
14555 2004-12-12  Duncan Mak  <duncan@ximian.com>
14556
14557         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
14558         again. `patch_info->table_size' is no longer valid after Zoltan's
14559         commit #37636.
14560
14561 2004-12-12  Martin Baulig  <martin@ximian.com>
14562
14563         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
14564         if we are the "real" method, ie. not an inlined method inside it.
14565
14566 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
14567
14568         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
14569         before we look in the special fields table. This fixes
14570         ../tests/thread-static-init.cs.
14571
14572 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14573
14574         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
14575         for Array get_Rank and get_Length. Fixes bug #70465.
14576
14577 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
14578
14579         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
14580         separate structure to reduce the size of MonoJumpInfo.
14581
14582 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14583
14584         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
14585
14586 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
14587
14588         * mini.c (mini_get_inst_for_method): Changed to allow ports
14589         to return a MonoInst instead of opcode 
14590         (renamed mini_get_opcode_for_method to better reflect the new functionality)
14591         
14592         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
14593         Allow ports to return a created MonoInst instead of op-code, will enable
14594         new optimizations.
14595         (renamed mini_get_opcode_for_method to better reflected the functionality)
14596
14597 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
14598
14599         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
14600
14601 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14602
14603         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
14604         Fixes #69985.
14605
14606 2004-12-08  Martin Baulig  <martin@ximian.com>
14607
14608         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
14609         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
14610
14611 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14612
14613         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
14614         correctly.
14615
14616         * exceptions.cs: Disable some tests which depend on properties of x86 fp
14617         arithmetic.
14618
14619 2004-12-08  Raja R Harinath  <rharinath@novell.com>
14620
14621         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
14622
14623 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
14624
14625         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
14626         bug introduced by the previous patch.
14627
14628 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
14629
14630         * mini-ppc.c, objectc.cs: handle large structs passed by value
14631         (fixes bug #69972).
14632
14633 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
14634
14635         * mini-ppc.c: OP_ARGLIST implementation from
14636         Geoff Norton  <gnorton@customerdna.com>.
14637
14638 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
14639
14640         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
14641         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
14642
14643 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
14644
14645         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
14646
14647 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14648
14649         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
14650         support.
14651
14652 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
14653
14654         * mini-sparc.c: Zero out localled-ed memory.
14655
14656         * iltests.il: Add tests for zeroing out localloc-ed memory.
14657
14658 2004-12-04  Martin Baulig  <martin@ximian.com>
14659
14660         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
14661         mono_method_get_signature_full().       
14662
14663 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
14664
14665         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
14666         and some utility functions (always for SSAPRE), integrated SSAPRE.
14667         * mini.h: Likewise.
14668         * driver.c: Added ssapre option.
14669         * ssa.c: Small fix on OP_ARG handling.
14670         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
14671         * Makefile.am: Likewise.
14672
14673 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14674
14675         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
14676         now in the xp code.
14677
14678         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
14679         icall.
14680
14681 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14682
14683         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
14684         
14685         * cpu-s390.md : Increase instruction length of oparglist.
14686
14687         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
14688
14689 2004-11-30  Martin Baulig  <martin@ximian.com>
14690
14691         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
14692         virtual generic methods.  We call a special helper_compile_generic_method()
14693         icall to retrieve the method from the vtable, inflate and compile
14694         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
14695
14696         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
14697
14698 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
14699
14700         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
14701
14702 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
14703
14704         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
14705         Fixes #69929.
14706
14707 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
14708
14709         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
14710         platforms with PIC aot.
14711
14712 2004-11-28  Martin Baulig  <martin@ximian.com>
14713
14714         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
14715         Fixes gen-112.cs.
14716
14717 2004-11-28  Martin Baulig  <martin@ximian.com>
14718
14719         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
14720         the result of mono_type_get_underlying_type() to check whether
14721         we're byref.
14722
14723 2004-11-26  Martin Baulig  <martin@ximian.com>
14724
14725         * mini.c
14726         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
14727         in the g_assert().
14728
14729 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
14730
14731         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
14732         the same way as the other arguments so they won't get clobbered.
14733
14734         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
14735         calls through R11 since it is clobbered by the trampoline code.
14736
14737 2004-11-26  Raja R Harinath  <rharinath@novell.com>
14738
14739         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
14740         pick up in-tree mscorlib.dll.
14741
14742 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14743
14744         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
14745
14746         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
14747         runtime data/code are now stored in a table similar to the GOT in ELF. 
14748         This allows the code itself to be position independent.
14749
14750         * aot.c: Fix loading of referenced assemblies after the lazy assembly
14751         loading changes.
14752
14753         * aot.c: Attach ELF type (object/function) directives to all global
14754         symbols.
14755
14756         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
14757
14758         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
14759
14760         * mini-amd64.h: Turn on PIC AOT code.
14761
14762         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
14763         returning the offset within an OP_AOTCONST instruction where the GOT
14764         offset needs to be added.
14765
14766         * mini.h: Bump AOT file format version.
14767
14768 2004-11-25  Martin Baulig  <martin@ximian.com>
14769
14770         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
14771         uninflated generic methods.
14772
14773 2004-11-25  Martin Baulig  <martin@ximian.com>
14774
14775         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
14776
14777 2004-11-24  Martin Baulig  <martin@ximian.com>
14778
14779         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
14780         original klass (this only applies for generic instances).
14781
14782 2004-11-24  Martin Baulig  <martin@ximian.com>
14783
14784         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
14785         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
14786         that array).
14787
14788 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14789
14790         * mini.c (mono_method_to_ir): Disable inlining for methods containing
14791         localloc. Fixes #69678.
14792
14793         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
14794         
14795 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
14796
14797         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
14798         used SSE registers on pinvoke calls. Fixes #69774.
14799
14800 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
14801
14802         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
14803         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
14804
14805 2004-11-23  Raja R Harinath  <rharinath@novell.com>
14806
14807         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
14808         Refer directly to the mcs/ tree.
14809
14810 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14811
14812         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
14813         Check if a trampoline for a synchronized method is required. 
14814
14815 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
14818         with localloc if needed. Throe arithmetric exception in
14819         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
14820         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
14821
14822 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
14823
14824         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
14825         types before switching on type.  Fixes #69622.
14826
14827 2004-11-19  Raja R Harinath  <rharinath@novell.com>
14828
14829         * Makefile.am (check-local): New.  Integrate into 'make check'.
14830         (MCS,RUNTIME): Define using in-tree mono and mcs.
14831         (ILASM): New.
14832         (%.exe): Use $(ILASM).
14833
14834 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
14835
14836         * mini-ppc.c: adjust initial prolog size (bug #69691).
14837
14838 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
14839
14840         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
14841         #69664.
14842
14843 2004-11-17  Raja R Harinath  <rharinath@novell.com>
14844
14845         * Makefile.am (clean-local): Rename from 'clean'.
14846
14847 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14848
14849         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
14850         to mono_arch_is_int_overflow. 
14851         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
14852         SIGFPE events.
14853
14854 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14855
14856         * declsec.c|h: New files to support declarative security attributes.
14857         Added function to check if a method has (applicable) security.
14858         * mini.c|h: Add check for declarative security attributes in
14859         mono_method_check_inlining.
14860         * Makefile.am: Added declsec.c and declsec.h to the build.
14861
14862 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
14863
14864         * mini.c, mini.h: update to keep dynamic code info per-domain.
14865
14866 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14867
14868         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
14869         (mini_init): Get rid of it from here too.
14870
14871 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
14872
14873         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
14874         implemented OP_RETHROW (patch by Geoff Norton
14875         <gnorton@customerdna.com>).
14876
14877 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
14878
14879         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
14880         between appdomains.  Fixes appdomain-unload on PPC.
14881
14882 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
14883
14884         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14885         mini-exceptions.c: handle the new wrapper types.
14886         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
14887         token value as a MonoClass* when compiling a wrapper.
14888         mono_jit_create_remoting_trampoline now takes an additional
14889         MonoRemotingTarget parameter.
14890         
14891 2004-11-10  Martin Baulig  <martin@localhost>
14892
14893         * mini.c (mono_method_to_ir): Use `generic_container->context'
14894         rather than creating a new one.
14895
14896 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14897
14898         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
14899
14900         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
14901
14902 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14903
14904         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
14905         the experimental aot cache stuff.
14906
14907 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
14908
14909         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14910         mini-exceptions.c: update to exception clause structure changes.
14911
14912 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14913
14914         * exceptions-x86.c (throw_exception): Fix warnings.
14915
14916         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
14917         for OP_RETHROW.
14918
14919 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14920
14921         * exceptions-sparc.c (get_throw_exception): Really fix this.
14922
14923 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
14924
14925         * tramp-*.c: we no longer support icalls without wrappers, so
14926         a bit of code can be removed here
14927
14928 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
14929
14930         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
14931         patch.
14932
14933         * cpu-sparc.md: Add op_rethrow.
14934
14935         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
14936
14937         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
14938
14939         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
14940         * mini-ops.h: Add OP_RETHROW.
14941
14942         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
14943
14944         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
14945
14946 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
14947         
14948         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
14949         Makes the output much easier to read
14950
14951 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
14952
14953         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
14954         prevents another huge leak when compiling with ssa. Secondly, the
14955         performance of doing this rather than freeing the lists is much
14956         better. GList does a lock every time you allocate a list link,
14957         so that it can use a memory pool. So, it is better to just use
14958         a memory pool of our own.
14959         
14960         * ssa.c, linear-scan.c: replace g_list_remove_link with
14961         g_list_delete.  The remove one does not free the GList, so we were
14962         leaking memory. On -O=all --compile-all with corlib, this cut down
14963         3 MB of allocations.
14964
14965 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
14966
14967         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
14968
14969         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
14970
14971         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
14972         into a new function mono_create_jit_trampoline ().
14973
14974 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * trace.c (get_spec): Allow tracing of classes without a namespace.
14977
14978 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
14979
14980         * mini.c: Fix pointer overwrite in mini_method_compile.
14981
14982 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
14983
14984         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
14985         The darwin ABI needs some special handling for 1 and 2 byte structs
14986         Lets use lbz/lhz instead of lwz everywhere.
14987         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
14988         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
14989         Use stb/sth for the former, and put the latter always on stack instead of in
14990         argument registers.
14991
14992 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
14993
14994         * trace.c (is_filenamechar): Add '_'.
14995
14996 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
14997
14998         * mini-s390.c: Fix prolog length to allow for large trace requirements.
14999
15000         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15001
15002 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15003
15004         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15005         depends on libmonogc. Fixes #68805.
15006
15007 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15008
15009         * mini.c (mono_jit_free_method): Provide extra information for
15010         this error.  Currently this leaks, but will be turned into a
15011         developer option in the future.
15012
15013 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15014
15015         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15016
15017 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15020         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15021         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15022
15023 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15024
15025         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15026         trampolines for AOT code.
15027
15028 2004-10-22    <vargaz@freemail.hu>
15029
15030         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
15031         constructed types. Fixes #68136.
15032
15033 2004-10-21  Martin Baulig  <martin@ximian.com>
15034
15035         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
15036         if it returns true, unwind the stack to the call instruction.
15037
15038 2004-10-21    <vargaz@freemail.hu>
15039
15040         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
15041
15042         * mini.h: Bump AOT version number.
15043
15044         * objects.cs: Add another test for unbox trampolines.
15045
15046         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
15047         valuetype methods.
15048
15049 2004-10-20    <vargaz@freemail.hu>
15050
15051         * driver.c: Add SHARED to the set of optimizations tested.
15052
15053         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
15054
15055         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
15056         used by CEE_NEWARR.
15057
15058         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
15059
15060 2004-10-20  Martin Baulig  <martin@ximian.com>
15061
15062         * mini-exceptions.c (mono_handle_exception): Call
15063         mono_debugger_handle_exception() to tell the debugger about
15064         catch/finally clauses.
15065
15066 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15067
15068         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
15069
15070         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
15071         #68447.
15072
15073 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
15074
15075         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
15076         methods as their native size, fixed bug #57543, #57545.
15077         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
15078         This saves a temporary register and mullw call down into 1 (minor perf
15079         increase for cases like sum = sum * 5;  This use to translate into:
15080             li r11,5
15081             mullw r28,r28,r11
15082         It now translates to
15083             mulli r28,r28,5
15084
15085 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
15086
15087         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
15088         #68388.
15089
15090 2004-10-11  Martin Baulig  <martin@ximian.com>
15091
15092         * mini.c (mono_method_to_ir): If we're a generic method, get the
15093         MonoGenericContainer from our MonoMethodNormal and create a
15094         MonoGenericContext from it.
15095
15096 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15097
15098         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
15099
15100         * basic-long.cs: Add test for checked i8->i2 cast.
15101
15102 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15103
15104         * inssel-ppc.brg: added a couple of speedup rules.
15105
15106 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15107
15108         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
15109         to speed up rebuilds.
15110
15111 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15112
15113         * mini-s390.c: Minor fix to OP_OR_IMM.
15114
15115 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
15118         better. Fixes appdomain-unload.exe on sparc.
15119
15120 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15121
15122         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
15123         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
15124         see bug 67324.
15125
15126 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
15127
15128         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
15129
15130 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15131
15132         * mini.c: Always generate a field read/write wrapper for members
15133         of the class MarshalByRefObject since the actual instance could
15134         be a CBO.
15135
15136 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15137
15138         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
15139
15140 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15141
15142         * driver.c mini.h trace.c: Move the setting of the main assembly into
15143         a separate function called mono_trace_set_assembly () and call it after
15144         actually loading the main assembly. Fixes #66872.
15145
15146 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15147
15148         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
15149         using the code manager.
15150
15151 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
15154
15155 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15156
15157         * cpu-amd64.md: Fix bug in previous patch.
15158         
15159         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
15160         #66650.
15161
15162 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
15163
15164         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15165         mini-exceptions.c: updates for changed stack walk interface.
15166
15167 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15168
15169         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
15170
15171 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15172
15173         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
15174
15175 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15176
15177         * driver.c (mini_regression_list): Do not call mono_assembly_close 
15178         since assemblies can't be unloaded.
15179         
15180 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15181
15182         * cpu-amd64.md: Fix more instruction lengths.
15183
15184         * cpu-amd64.md: Fix lengths of some instructions.
15185
15186 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
15187
15188         * inssel.brg: Make the array ldelema check aot friendly.
15189
15190 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15191
15192         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
15193
15194         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
15195
15196 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15197
15198         * mini-x86.c: Fix build.
15199
15200         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
15201         mono_type_get_underlying_type () helper function to simplify code.
15202         
15203 2004-09-09  Martin Baulig  <martin@ximian.com>
15204
15205         * mini-amd64.c: Don't access `type->data.klass' directly, call
15206         mono_class_from_mono_type() instead since the type may be a
15207         generic instance.
15208
15209 2004-09-09  Martin Baulig  <martin@ximian.com>
15210
15211         * mini-amd64.c (get_call_info): Fix support for generic instances.
15212         (add_valuetype): Use mono_class_from_mono_type() to get the class
15213         since we can be a generic instance.
15214
15215 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
15216
15217         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
15218
15219 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15220
15221         * liveness.c: reset spill costs on each scan: bug 62107
15222
15223 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
15224
15225         * exceptions-sparc.c (mono_arch_find_jit_info): remove
15226         unnecessary line that doesn't compile
15227
15228 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15229
15230         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
15231         trampolines, make them call an error function so people can fix their
15232         code.
15233
15234 2004-09-06  Martin Baulig  <martin@ximian.com>
15235
15236         * mini.c (mono_method_to_ir): When initializing locals, handle a
15237         generic instances like a valuetype if it's a valuetype and like a
15238         class if it's a class.
15239
15240 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15241
15242         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
15243         stack. Fixes #64674.
15244
15245         * exceptions.cs: Add test for unwinding of call arguments.
15246
15247 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
15248
15249         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
15250         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
15251         set the carry/borrow flag). The sparc and s390 implementations
15252         can now use optimized versions (and simplify the code). ppc bugfixes.
15253
15254 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15255
15256         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
15257
15258 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
15259
15260         * inssel-amd64.brg: Remove leftover 32 bit rule.
15261
15262         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
15263
15264 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
15265
15266         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
15267         mono_arch_find_jit_info functions into a new function. Fix a memory
15268         leak.
15269
15270         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
15271         refactored code.
15272         
15273 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15274
15275         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
15276         as well.
15277         
15278         * exceptions.cs: Add array size tests.
15279
15280         * mini.c: Allocate a separate icall wrapper for each arity of 
15281         mono_array_new_va. Fixes #59509.
15282
15283         * exceptions.cs: Add testcase for 64578.
15284
15285         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
15286
15287         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
15288         
15289 2004-09-02  Martin Baulig  <martin@ximian.com>
15290
15291         * mini.c (mono_method_to_ir): When initializing the locals, call
15292         handle_initobj() on the generic instance itself, not its
15293         underlying type.
15294
15295 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15296
15297         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
15298         MonoJitInfo for dynamic methods.
15299
15300         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
15301
15302         * mini.c: Add support for freeing JIT data for dynamic methods.
15303         
15304 2004-09-01  Martin Baulig  <martin@ximian.com>
15305
15306         * mini-x86.c (is_regsize_var): Added support for generic
15307         instances.
15308         (mono_arch_emit_prolog): Make this compile again, use
15309         `x86_push_imm_template (code)'.
15310
15311 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
15312
15313         * mini-x86.c: make all push_imm instructions that get
15314         patched always emit the long form
15315
15316 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15317
15318         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
15319         in a per-domain hash.
15320
15321         * mini-amd64.c (merge_argument_class_from_type): Handle generic
15322         types.
15323
15324 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15325
15326         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
15327         work.
15328         
15329         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
15330         work.
15331
15332         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
15333         Beginnings of SSE2 support.
15334
15335         * exceptions.cs: Add more tests for checked int<->uint casts.
15336
15337 2004-08-28  Martin Baulig  <martin@ximian.com>
15338
15339         * mini-x86.c (mono_arch_instrument_epilog): Added support for
15340         generic instances.
15341
15342         * mini.c
15343         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
15344         Handle generic instances recursively.
15345
15346 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15347
15348         * iltests.il: test for conv.u8 on a constant
15349
15350 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15351
15352         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
15353         LCONV_x4 (shrun_32 (membase)).
15354
15355 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
15356
15357         * inssel-x86.brg: c&p rules for push/setret of long
15358
15359 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
15360
15361         * inssel-x86.brg: c&p rules for compare (base, regvar) and
15362         compare (regvar, base)
15363
15364         * inssel-x86.brg: more burg love
15365
15366         * inssel.brg: more cleanup
15367
15368         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
15369
15370 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
15371
15372         * basic-long.cs, basic-calls.cs: new tests for optimization.
15373
15374 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15375
15376         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
15377         patch.
15378
15379 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15380
15381         * mini-amd64.c (read_tls_offset_from_method): Add another case.
15382         
15383 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
15384
15385         * inssel.brg (mini_emit_memcpy): use 
15386         NO_UNALIGNED_ACCESS to disable memcpy optimization
15387
15388 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15389
15390         * mini-amd64.c: Handle generic types in various places.
15391
15392         * mini.c (mono_method_to_ir): Handle generic types in init locals.
15393
15394 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
15395
15396         * mini.c (handle_box): Fix warning.
15397
15398         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
15399
15400         * mini-amd64.h: Enable the emit_state optimization.
15401
15402         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
15403
15404         * mini-amd64.c: Add some new 64 bit peephole opts.
15405
15406         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
15407
15408         * cpu-amd64.md: sreg1 of div instructions must be %rax.
15409
15410         * mini-amd64.c: Register allocator fixes.
15411
15412         * mini.c: Add an optimization to emit_state to avoid allocation of new
15413         registers on some platforms.
15414
15415 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
15416
15417         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
15418
15419         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
15420         allocation. Fixes #63085.
15421
15422         * basic-long.cs: Add new regression test.
15423
15424         * mini-amd64.c: Register allocator improvements.
15425
15426 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
15427
15428         * mini-amd64.c (read_tls_offset_from_method): Add another code
15429         sequence.
15430
15431         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
15432         instruction sequence for nullifying class init trampolines.
15433
15434         * objects.cs: Add new regalloc test.
15435
15436         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
15437
15438 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
15439
15440         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
15441         
15442         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
15443         arguments.
15444
15445         * driver.c: Fix profiling after TLS changes.
15446         
15447         * driver.c (mono_main): Set mono_stats.enabled if needed.
15448
15449         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
15450         CEE_BOX.
15451
15452 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
15453
15454         * mini-x86.c: use a 1 op rather than a 2 op tls access
15455         instruction -> faster.
15456
15457 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
15460         x86 backend.
15461
15462 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
15463
15464         * exceptions-sparc.c (throw_exception): fix typo
15465
15466 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15467
15468         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
15469         set tree->dreg correctly with tls. Allow any
15470         register to be used.
15471
15472         * mini-x86.c (read_tls_offset_from_method): add new code
15473         generation pattern seen with GCC.
15474
15475
15476 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15477
15478         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
15479         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15480         exceptions-sparc.c: fix some performance issues in exception
15481         handling and setting of the stack trace for exceptions that were
15482         already thrown.
15483
15484 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
15487         x86 backend.
15488         
15489         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
15490         registers.
15491
15492 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15493
15494         This patch inlines tls access, when possible.
15495         
15496         * mini.h: new arch functions for TLS intrinsics.
15497         All platforms updated with a stub.
15498
15499         * mini.c: use the new intrinsics
15500
15501         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
15502         arch specific intrinsic for tls variables
15503
15504 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
15505
15506         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
15507         under windows.
15508
15509 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15510
15511         * mini.c: thread local allocation
15512
15513 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
15514
15515         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
15516
15517         * Makefile.am: Link against the static version of libmonogc.
15518         
15519         * Makefile.am: Link the static versions of the convenience libraries
15520         into the mono executable.
15521
15522         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
15523
15524 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
15525
15526         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
15527         on integer overflow.
15528
15529         * mini-amd64.c: Reorganize function call code.
15530
15531         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
15532
15533 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
15534
15535         * inssel-x86.brg: use xor eax,eax.
15536         
15537         * basic.cs: new tests
15538
15539 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15540
15541         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
15542         in exception throwing code.
15543         
15544 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
15545
15546         * inssel-x86.brg: use xor esi,esi.
15547
15548 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15549
15550         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
15551         can trace methods compiled during mini_init () too.
15552
15553         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
15554         CEE_CONV_U4.
15555
15556 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
15557
15558         * Makefile.am: static link on x86 (r=zoltan)
15559
15560 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15561
15562         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
15563         code since it causes some programs to fail.
15564
15565 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
15566
15567         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
15568
15569 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
15570
15571         * mini.c: ovfops_op_map - add STACK_OBJ case for
15572         CONV_I 
15573         * basic.cs: add test_0_pin_string as test
15574         case for above.
15575
15576 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
15577
15578         * Makefile.am: build C# if srcdir != builddir
15579
15580 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15581
15582         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
15583         fall-through blocks.
15584
15585 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15586
15587         * driver.c: enable loop by default again and include abcrem in -O=all.
15588
15589 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
15590
15591         * iltests.il: Add some localloc tests.
15592
15593         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
15594
15595         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
15596         Fixes #62574.
15597
15598         * inssel-amd64.brg: Add some optimizations.
15599
15600         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
15601         for gcc-3.4.
15602
15603         * Makefile.am: Statically link mono against libmono on AMD64.
15604         
15605         * mini-amd64.c inssel-amd64.brg: Optimizations.
15606
15607 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
15608
15609         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
15610
15611         * tramp-amd64.c: Patch calling code in trampolines.
15612
15613 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
15614
15615         * mini-amd64.c: pinvoke struct passing fixes.
15616
15617 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
15618
15619         * mini-sparc.c: redo change, make mono_arch_cpu_init call
15620         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
15621
15622 2004-08-05  Duncan Mak  <duncan@ximian.com>
15623
15624         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
15625         CEE_LDELEM_ANY.
15626
15627 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * mini-amd64.c (emit_move_return_value): Move return value for normal
15630         calls too.
15631
15632 2004-08-05  Martin Baulig  <martin@ximian.com>
15633
15634         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
15635         `type->type'; just modify `type' itself when dealing with enums
15636         and generic instances.
15637         (check_call_signature): Make `simple_type' a `MonoType *'.
15638
15639 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15640
15641         * mini.c: Use OP_PADD to add offsets to addresses.
15642
15643         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
15644
15645 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
15646
15647         * mini-sparc.c (mono_arch_emit_epilog): fix check
15648         for folding last op into restore instruction
15649
15650 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15651
15652         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
15653         helper methods using the code manager.
15654         
15655         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
15656
15657         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
15658
15659 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15660         
15661         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
15662           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
15663
15664         * mini-s390.c: fix tail processing
15665
15666 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
15667
15668         * mini-ppc.c: mul.ovf.un exception name fix.
15669
15670 2004-08-03  Martin Baulig  <martin@ximian.com>
15671
15672         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
15673         instances; before jumping to `handle_enum', also modify `ptype'.
15674
15675 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
15676
15677         * cpu-sparc.md: fcall maximal length too small.
15678
15679 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
15680
15681         * mini-amd64.c mini.h: Add initial support for passing/returning 
15682         structures to/from pinvoked methods.
15683
15684 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
15685
15686         * mini-ppc.c: reg allocator fix.
15687
15688 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
15689
15690         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
15691
15692         * inssel.brg: Optimize memset on 64 bit machines.
15693
15694         * mini-amd64.c: Fix some vararg cases.
15695
15696 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15697
15698         * mini-s390.c: Corrected macro in emit_float_to_int
15699
15700         * s390-abi.cs: Tests to exercise the s390 ABI
15701
15702 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15703
15704         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
15705         caller saved regs.
15706
15707         * basic.cs: Add a test for add.ovf.un.
15708
15709 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
15710
15711         * mini-sparc.c: add case for OP_IDIV_UN
15712
15713 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15714
15715         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
15716         
15717         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
15718
15719 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
15720
15721         * basic.cs: regression tests.
15722
15723         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
15724         regressions.
15725
15726 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15727
15728         * basic.cs: Add a new test.
15729
15730         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
15731         and AOT. Various fixes and optimizations.
15732
15733         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
15734
15735 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15736
15737         * mini-ppc.c: make sure temp regs are not used for global reg
15738         allocation.
15739
15740 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
15741
15742         * cpu-sparc.md: conv_i8 fix for 64bits
15743
15744         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
15745
15746 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
15747         
15748         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
15749         add opcode for cmp BYTE PTR [eax], imm.
15750
15751         * inssel.brg: Make memcpy and memset takes bases.
15752
15753 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
15754
15755         * *-amd64.*: More AMD64 work.
15756         
15757 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
15758
15759         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
15760         add a compare-not-equal opcode.
15761         
15762 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
15763
15764         * mini.c: Use mono_init_from_assembly instead of mono_init.
15765         
15766 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
15767
15768         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
15769
15770         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
15771
15772         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
15773
15774         * inssel.brg: 64 bit fixes.
15775
15776         * mini.h (MonoCallInst): Add some AMD64 specific data.
15777
15778         * mini.h: Add some OP_P opcodes.
15779
15780 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
15781
15782         * basic.cs: tests for 61797 and 61740
15783
15784 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15785
15786         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
15787         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
15788
15789 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
15790
15791         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
15792
15793         * *-amd64*.*: Ongoing AMD64 work.
15794
15795 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
15796
15797         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
15798
15799         * *-amd64*: Ongoing AMD64 work.
15800
15801         * mini-arch.h: Add AMD64 support.
15802
15803         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
15804
15805         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
15806
15807         * mini-ops.h: Add new opcodes.
15808
15809         * Makefile.am: Add AMD64 support.
15810
15811         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
15812         rules into the inssel-long*.brg files.
15813
15814         * *-amd64.*: Add beginnings of AMD64 backend.
15815
15816 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
15817
15818         * mini.c (print_dfn): commenting out the code that prints
15819         the cil. With -O=deadce, this makes -v -v crash.
15820         
15821         * cpu-pentium.md: make checkthis have a length of 2
15822
15823 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
15824
15825         * mini-sparc.h: fix implementations of __builtin
15826         functions for Sun compiler for V9.
15827
15828 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
15829
15830         * mini.c: use the new stelem.ref wrapper
15831         * exceptions.cs, arrays.cs: new stelem.ref tests
15832
15833 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15834
15835         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
15836         new XSP should work with these changes).
15837
15838 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
15839         
15840         * inssel-{long32,x86,}.brg: trivial optimizations.
15841         
15842 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
15843
15844         * mini.c: load value when emitting box operation in
15845         constrained calls.
15846
15847 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
15848
15849         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
15850         is one byte shorter than cmp DWORD PTR [eax], 0.
15851
15852 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15853
15854         * inssel-ppc.brg: arguments on the stack are always
15855         relative to the stack pointer (spotted by Neale Ferguson).
15856
15857 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15858
15859         * exceptions-x86.c: delay appending the method name to the trace until
15860         after mono_jit_info_table_find is called, as this gets the real
15861         MonoMethod.
15862
15863 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
15864
15865         * aot.c: register roots
15866
15867 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
15868
15869         * aot.c : I could just use PLATFORM_WIN32 flag.
15870
15871 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
15872
15873         * aot.c : Reverting the previous fix. This time it broke linux build.
15874
15875 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
15876
15877         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
15878
15879 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
15880
15881         * mini.c (handle_stack_args): Remove some more debugging code.
15882         
15883         * mini.c (handle_stack_args): Remove debug output left in by mistake.
15884
15885         * driver.c mini.h aot.c: Allow additional options to be specified with
15886         --aot and pass them to mono_compile_assembly.
15887
15888         * aot.c: Add experimental code to AOT compile all loaded assemblies
15889         on demand and save the code into a cache in the filesystem.
15890
15891         * aot.c: Add support for more wrapper methods.
15892         
15893         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
15894         58863.
15895
15896         * cpu-*.md: Remove removed opcodes.
15897
15898         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
15899         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
15900         related icalls to marshal.c.
15901
15902 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
15903
15904         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
15905
15906         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
15907
15908         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
15909
15910 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
15911         * liveness.c: If liveness is recomputated we need to reset the information
15912         for each variable. This way, if the liveness range has been narrowed
15913         by optimizations that happened after the last computation, we can return
15914         a smaller range.
15915         
15916         For example, if you have
15917         
15918         {
15919                 int i = 0;
15920                 
15921                 // Tons of code that does not affect i
15922                 
15923                 i = foo ();
15924                 ...
15925         }
15926         
15927         i = 0 is dead code and will be removed by SSA. However, when
15928         linear scan gets to the code, i will still appear to be live
15929         throughout the entire block. This prevents good register allocation.
15930
15931 2004-07-06  Martin Baulig  <martin@ximian.com>
15932
15933         * debug-mini.c (mono_debug_init_method): Allow
15934         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
15935         (mono_debug_add_icall_wrapper): New method.
15936
15937         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
15938
15939 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
15942         optimization.
15943
15944 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * aot.c (mono_aot_load_method): Fix loading of debug info.
15947
15948 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
15949
15950         * aot.c: Add logging support.
15951
15952 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * mini.h: Add prototype for mono_print_method_from_ip.
15955
15956         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
15957
15958         * inssel.brg: 64 bit fixes.
15959
15960         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
15961         inssel-long32.brg.
15962
15963         * Makefile.am: Add SPARC64 support.
15964
15965 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * aot.c: Fix alignment problems on 32 bit platforms.
15968
15969 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
15970
15971         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
15972         SPARC64.
15973
15974         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
15975         problems.
15976
15977         * mini.h: Bump AOT file version. Some 64 bit fixes.
15978
15979 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
15980
15981         * inssel-sparc.brg: Add new rule to avoid register moves.
15982
15983         * inssel.brg: Add ldind_to_load_membase helper function.
15984
15985 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
15986
15987         * mini.c: OffsetToStringData intrinsic.
15988         
15989 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
15992
15993         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
15994         regression tests.
15995
15996         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
15997 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15998
15999         * mini.c: reinstated mono_compile_get_interface_var()
16000         on x86, too, since the change breaks the Gtk# build there as well.
16001
16002 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16003
16004         * driver.c: remove loop from the default optimizations: it seems to
16005         interact badly with some of the other options (see bug #60613).
16006
16007 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16010         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16011
16012 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16013
16014         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16015         vararg-using methods.
16016
16017 2004-06-21  Martin Baulig  <martin@ximian.com>
16018
16019         * mini/mini-exceptions.c
16020         (mono_handle_exception): Added `gpointer original_ip' argument.
16021         After calling mono_unhandled_exception(), call
16022         mono_debugger_unhandled_exception() and if that returns true,
16023         restore the context and return.
16024
16025 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16026
16027         * mini-ppc.c: prefer the use of relative branches so
16028         they won't need to be patched in aot code (patch from Patrick Beard).
16029
16030 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16031
16032         * aot.c: patch from Patrick Beard to make the output assembly
16033         more correct for the MacOSX assembler. Small tweak to
16034         generate sane images on Linux/PPC, too.
16035
16036 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
16039         case until bug #59509 is fixed (shows up in #60332).
16040
16041 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16042
16043         * mini.c: make sure the needed wrappers are compiled, too, with
16044         precomp.
16045
16046 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
16047
16048         * driver.c: remove NPTL reference in --version output.
16049
16050 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16051
16052         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
16053         generate valid assembly for the Mach-O assembler.
16054
16055 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16056
16057         * driver.c: don't include abcrem in the all optimization specifier
16058         since it slows down jit compilation too much for now.
16059
16060 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
16061
16062         * mini.c: use BIGMUL only if both operands have the same signage.
16063         * iltests.il: Test for bug 60056. (errors related to signage in
16064         BIGMUL).
16065
16066         r=lupus.
16067
16068 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
16069
16070         * mini.c, aot.c: memory leak fixes.
16071
16072 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16073
16074         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
16075
16076 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
16077
16078         * Makefile.am: remove the -static hack completely, it links in
16079         statically glib as well.
16080
16081 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
16082
16083         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
16084         * exceptions.cs: make it compile with new mcs/csc.
16085
16086 2004-06-03 Massimiliano Mantione <massi@ximian.com>
16087         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
16088         and added relevant test case.
16089
16090 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16091
16092         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
16093         regressions in gtk-sharp.
16094
16095 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16096
16097         * exceptions.cs: New regression tests.
16098
16099         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
16100
16101 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16102
16103         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
16104
16105 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16106
16107         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
16108
16109         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
16110
16111 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
16112
16113         * mini.c (mono_jit_runtime_invoke): Init class in this
16114         method instead of trusting mono_jit_compile_method to
16115         do the work (because wrappers can be in object class)
16116
16117 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
16118
16119         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
16120
16121         * basic-long.cs: New regression test.
16122
16123 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
16124
16125         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
16126         and div/rem checks.
16127
16128 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16129
16130         * Makefile.am: fix miguel's change to build mono statically against
16131         libmono (track build dependencies).
16132
16133 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16134
16135         * cfold.c: Some glib versions do not have G_MININT32.
16136
16137 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
16138
16139         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
16140         with precision of tan, atan, sin and cos, and implemented related
16141         regressions tests (fixes bug 54467, but one new problem appeared and
16142         is not fixed yet).
16143
16144 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16145
16146         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
16147
16148         * exceptions.cs: Add test for constant folding && division by zero.
16149
16150         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
16151         since driver.c is in libmono too, so the optimization was useless.
16152
16153         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
16154         variable to driver.c so the compiler can emit more efficient code to
16155         access them.
16156
16157 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16158
16159         * Makefile.am: don't distribute generated inssel.[ch] files.
16160
16161 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16162
16163         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
16164         into the default appdomain. Fixes #58707.
16165
16166         * jit-icalls.c: Remove the broken approximation for truncl, doing
16167         no conversion is better.
16168
16169         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
16170         Fixes #58863.
16171
16172 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
16173
16174         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
16175         of the mcrxr instruction which is not available on some processors
16176         even if it's documented to be. Implement add and sub overflow correctly
16177         (still not complete for long unsigned). Speed up icalls a bit.
16178
16179 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
16180
16181         * mini.c (mono_jit_compile_method_with_opt): Make sure that
16182         we run .cctor in the current domain instead of target_domain.
16183         
16184         Fixes bug #58558, .cctor not being called in -O=shared.
16185
16186 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16187
16188         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
16189
16190 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
16191
16192         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
16193         which can be done with an imm8, do it that way.
16194         (mono_arch_output_basic_block): ditto for a jmp
16195         (mono_arch_emit_prolog): Computate maximum offset of a label.
16196
16197 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
16198
16199         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
16200         now tries to allocate prefered physical reg's for virtual
16201         regs. This reduces the number of emited spills/loads with
16202         20-30% on our core assemblies.
16203
16204 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16205
16206         * jit-icalls.c: truncl() is not needed and trunc() is
16207         the correct thing to do anyway (bug #58287).
16208
16209 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
16210
16211         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
16212         if available.
16213
16214 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16215
16216         * driver.c: enable loop optimizations by default.
16217
16218 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16219
16220         * mini-x86.c: fix calc of max loop size when aligning loops start.
16221
16222 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
16223
16224         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
16225         the stack.
16226
16227 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16228
16229         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
16230         should set carry.
16231
16232         * basic-long.cs: Add tests for add/subtract of immediates with carry.
16233
16234         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
16235         
16236         * mini.c (inline_method): Allways inline some wrappers even if the cost
16237         is too large. Fixes #58785.
16238
16239         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
16240         
16241 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16242
16243         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
16244         (crichton@gimp.org). Beginning of support for sparc/linux.
16245
16246         * mini-sparc.c: Optimize retrieval of LMF address.
16247
16248 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
16249
16250         * exceptions-ppc.c:  handle alloca in methods with clauses.
16251
16252 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
16253
16254         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
16255
16256 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16257
16258         * mini.c: Delegate most of the abort signal work to 
16259           mono_thread_request_interruption, which also handles Stop and Suspend
16260           states.
16261
16262 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16263
16264         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
16265         supports the save/restore lmf opcodes.
16266
16267 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
16268
16269         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
16270         by gcc-3.4 as well.
16271
16272         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
16273
16274 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16275
16276         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
16277         methods which contain array accesses.
16278
16279         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
16280         boundaries. Fixes #58537.
16281
16282         * iltests.il: Add regression test for #58537.
16283
16284 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16285
16286         * mini-x86.c (mono_arch_local_regalloc): Last part of
16287         fix for bug #58633 (releasing register to early).
16288
16289 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
16290
16291         * basic-long.cs: Add new regression test.
16292
16293 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
16294
16295         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
16296         register too early on the chain.
16297
16298 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16299
16300         * mini.c (create_helper_signature): Use a helper function to reduce
16301         the code which needs to be written. Also set the calling convention of
16302         icalls on windows. Fixes #57840.
16303
16304 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16305
16306         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
16307         exceptions-ppc.c: added helper function to get the instruction address
16308         from a signal handler context.
16309
16310 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16311
16312         * helpers.c: use g_get_tmp_dir. Invokes happyness 
16313         from gonzalo.
16314
16315 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16316
16317         * helpers.c: Add new env variable to pass args to objdump.
16318         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
16319
16320 2004-05-17  Radek Doulik  <rodo@ximian.com>
16321
16322         * Makefile.am (common_sources): added abcremoval.h so it get
16323         disted and daily mono packages on go-mono.com will build again
16324
16325 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
16326
16327         * abcremoval.c: Fixed coding style, added copyright header.
16328
16329         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
16330
16331         * mini.h: Added prototype for abc removal main function.
16332
16333         * build_relations_propagation_table.pl: Added copyright header.
16334
16335 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
16336
16337         * basic-long.cs: reg test for complex ceq_long bug.
16338
16339 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
16340
16341         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
16342         reg in long and clob case (bug #58343). Fixed/added comments.
16343
16344 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
16345
16346         * mini.c (mono_jit_runtime_invoke): Follow new convention
16347         of calling the invoke method with an function pointer.
16348
16349 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * ChangeLog: Fix author of memory leak patch.
16352
16353 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
16354
16355         * Makefile.am: fix make dist as well...
16356
16357
16358 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
16359
16360         * cfold.c: Made so that conversions from pointer to int4 are no-ops
16361         on archs where pointers are 4 bytes long.
16362
16363         * Makefile.am: Added abcremoval.c source file.
16364
16365         * abcremoval.c: Added abcremoval.c.
16366
16367         * abcremoval.h: Added abcremoval.h.
16368
16369         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
16370
16371         * inssel.brg: Enabled bounds check removal.
16372
16373         * mini.c: Added support for abcrem optimization.
16374
16375         * mini.h: Added abcrem optimization label.
16376
16377         * driver.c: Added support for abcrem optimization.
16378
16379         * propagated_relations_table.def: Added propagated_relations_table.def.
16380
16381 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
16382
16383         * mini.c, cfold.c: fix style.
16384
16385 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.c: handle issue with the low-level implementation of
16388         some long opcodes (bug #54209).
16389
16390 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
16391
16392         * basic.cs: test for my new cmov stuff.
16393
16394 2004-05-13      Patrik Torstensson
16395
16396         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
16397         opt and added peephole documentation.
16398
16399 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
16400
16401         * tramp-ppc.c: rewrote the generic trampoline code.
16402
16403 2004-05-11      Patrik Torstensson
16404
16405         * mini-x86.c: optimize long shl/shr asm code (one less branch)
16406
16407 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
16408
16409         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
16410
16411         * mini.h mini.c dominators.c: Applied patch from Derek Woo
16412         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
16413
16414         * mini.c: Add new icalls for AsAny marshalling.
16415
16416 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16417
16418         * tramp-ppc.c, mini-ppc.c: more cleanups.
16419
16420 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16421
16422         * mini.c: no warnings.
16423
16424 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16425
16426         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
16427
16428 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
16429
16430         * mini.c: In the thread abort signal handler, if the thread is in the
16431         process of being stoped, don't throw the Abort exception, just stop the
16432         thread.
16433
16434 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
16435
16436         * tramp-ppc.c: removed old code.
16437
16438 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16439
16440         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
16441         do some simple speed optimizations on ppc.
16442
16443 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16444
16445         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
16446         and large offsets in load/store.
16447
16448 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
16449
16450         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
16451         it causes regressions.
16452
16453 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
16454
16455         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
16456         support.
16457
16458 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16459
16460         * jit-icalls.c: remove warnings.
16461         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
16462         speedups for unsafe code.
16463
16464 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16465
16466         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
16467
16468 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
16469
16470         * basic-calls.cs: Add new regression test.
16471
16472         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
16473         more portable.
16474
16475         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
16476
16477         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
16478         is no longer used.
16479
16480 2004-05-06      Patrik Torstensson
16481
16482         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
16483         long reg allocation in any reg (not only eax:edx) and implemented 
16484         long shl/shr ops in asm instead of helpers.
16485
16486 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
16487
16488         * mini-sparc.h: Fix warnings.
16489
16490         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
16491         stack.
16492
16493         * mini-exceptions.c (mono_handle_exception): Call the filter in a
16494         separate statement for clarity.
16495
16496         * mini-sparc.c: Update status.
16497
16498 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
16499
16500         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
16501         here.
16502
16503 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16504
16505         * inssel-ppc.brg: another small pre-release workaround:
16506         we don't do overflow detection for long_sub_un.
16507
16508 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16509
16510         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
16511         (also works around a weird ppc bug: 57957).
16512
16513 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
16514
16515         * tramp-ppc.c: trampoline fixes.
16516
16517 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
16518
16519         * mini-ppc.c: fixed typos.
16520
16521 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini-ppc.c, exceptions-ppc.c: more code saves registers
16524         at the top of the stack. Fixed typos. Use a frame registers
16525         for all the methods with exception clauses.
16526
16527 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16528
16529         * exceptions-ppc.c: restore fp registers.
16530
16531 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
16532
16533         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
16534         order from the stack top (moved the stack room to save the
16535         return value for trace after the param area). Fixed corruption
16536         in restoring registers on unwind.
16537
16538 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16539
16540         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
16541
16542 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16543
16544         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
16545         and prolog/epilog for methods that use it. Allow
16546         enough param area room for varargs methods. Fix miguel's
16547         breakage in exception handling.
16548
16549 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16550
16551         * Makefile.am: run genmdesc only on current arch.
16552
16553 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16554
16555         * exceptions-x86.c:
16556         * mini-x86.h: fix the build on windows.
16557
16558 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
16559
16560         * 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.
16561
16562         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
16563
16564         * mini-exceptions.c: New file.
16565         
16566         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
16567         Move some parts of the x86 exception handling code to an 
16568         arch-independent file so it can be shared with other ports.
16569
16570 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16571
16572         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
16573
16574 2004-04-26  David Waite  <mass@akuma.org>
16575
16576         * driver.c: remove comma from end of enumeration declaration
16577
16578 2004-04-26  Jackson Harper  <jackson@ximian.com>
16579
16580         * driver.c: parse config file before loading first assembly. This
16581         allows the user gac to be enabled/disabled. 
16582         
16583 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
16584
16585         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
16586         simpler mechanism: we do not care what is encoded initially
16587         (branch absolute or relative), we care about the code and its
16588         target.  I kept the old code for reference for now.
16589
16590         The new code tries first to determine if the jump is anywhere in
16591         the -/+32 absolute meg range, if it succeeds, it encodes using the
16592         absolute branch;  If not, it tried to find something in the
16593         relative range, if not, it uses the handle_thunk code. 
16594
16595 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
16596
16597         * exceptions-ppc.c: use the correct ip register on macosx.
16598
16599 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
16600
16601         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
16602
16603 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
16606         Raise exception on integer divide by zero by hand since the hw
16607         doesn't support it. Handle NaNs in FP compares.
16608
16609 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
16610
16611         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
16612         code reducing duplication between the platforms and enabled
16613         signal exception handling (on linux for now).
16614
16615 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
16616
16617         * exceptions-ppc.c: more macosx support.
16618
16619 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16620
16621         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
16622
16623 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
16624
16625         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
16626
16627 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16628
16629         * iltests.il: more tests.
16630
16631 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
16634         vars as well.
16635
16636 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16637
16638         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
16639
16640 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * liveness.c: Mark variables as volatile in all basic blocks reachable
16643         from exception clauses.
16644
16645 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
16646
16647         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
16648         inlining.
16649
16650 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16651
16652         * iltests.il, basic.cs: more tests for regalloc.
16653
16654 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16655
16656         * iltests.il: Some tests for register allocation modifications
16657         I have locally.
16658
16659 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
16660
16661         * exceptions.cs: Add regression test for bug #56782.
16662
16663         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
16664         original stack trace if an exception is rethrown. Fixes #56782. Oh,
16665         the beauty of fixing the same thing in 5 different files...
16666
16667 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
16670         methods.
16671
16672 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * mini.c: Add support for STRWLPARRAY marshalling convention.
16675
16676 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16677
16678         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
16679         to init the context to setup the regs pointer).
16680
16681 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16682
16683         * exceptions-ppc.c: more exceptions work.
16684
16685 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16686
16687         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
16688         not allowed.
16689
16690 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
16691
16692         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
16693         can use the memory directly.
16694
16695         * cpu-pentium.md: Update documentation from a post from Zoltan. 
16696
16697         add x86_add_membase, x86_sub_membase, x86_mul_membase
16698
16699 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
16700
16701         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
16702         GENERAL_REGS they were also hardcoded for all PPC ports.
16703
16704         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
16705
16706         Remove hard-coded limit for floating point registers, use
16707         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
16708
16709         Notice that in MacOS X calling conventions you can fit a lot more
16710         floating point values in registers, so I should update the PInvoke
16711         test to excercise the passing of floating point values on the
16712         stack (currently broken).
16713         
16714 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
16715
16716         * tramp-ppc.c (create_trampoline_code): Added
16717         JUMP_TRAMPOLINE_SIZE. 
16718         (ppc_magic_trampoline): Follow the pattern from
16719         x86_magic_trampoline: if code is set to zero, return. 
16720         (create_trampoline_code): Always pass MonoMethod to the jump
16721         trampoline, before it was passing a null.
16722         (mono_arch_create_jump_trampoline): Implement the jump stub, could
16723         share the code with mono_arch_create_jit_trampoline. 
16724
16725         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
16726         implemented.
16727         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
16728         implemented.  
16729
16730         * cpu-g4.md: Added length for jmp instruction, the worst case
16731         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
16732         for save_lmf).
16733
16734 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
16737
16738 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
16739
16740         * mini.c: Only set bblock->real_offset when adding a new bblock, and
16741         before each IL instruction.
16742
16743         * mini.c (CEE_BOX): Fix warnings.
16744
16745 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16746
16747         * mini.c: removed a few unused vars and extra whitespace.
16748
16749 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
16750
16751         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
16752         checks.
16753         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
16754         index.
16755         (OP_GETCHR): use the above
16756         (CEE_LDELEMA): use the above.
16757
16758         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
16759         version of the generic impl.
16760         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
16761         (CEE_LDELEMA): use the above.
16762
16763 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
16764
16765         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
16766         Fixes #56317.
16767
16768         * iltests.il: Added new regression test for #56317.
16769
16770 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
16773         under NetBSD. Fixes #56450.
16774
16775         * liveness.c (update_gen_kill_set): Fix previous patch.
16776
16777 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16778
16779         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
16780
16781 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
16782
16783         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
16784         ldsfld and ldsflda.
16785
16786         * inssel-sparc.brg: Add more optimizations.
16787
16788         * mini-sparc.c: Replace multiply/divide with shifts if possible.
16789
16790 2004-04-01  Martin Baulig  <martin@ximian.com>
16791
16792         * mini.c (handle_box): New static function; moved the
16793         implementation of CEE_BOX here.
16794         (mono_method_to_ir): Added `constrained_call' variable.
16795         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
16796         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
16797         mono_method_get_constrained() to get the method.
16798
16799 2004-04-01  Martin Baulig  <martin@ximian.com>
16800
16801         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
16802         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
16803         (mono_method_to_ir): We don't need these macros anymore since
16804         mono_class_get_full() already takes care of it. 
16805
16806 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16807
16808         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
16809         use @function (as doesn't accept #function here) and check the return
16810         value of system and stop if fails.
16811
16812 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16813
16814         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
16815
16816 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
16817
16818         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
16819
16820         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
16821
16822         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
16823         #56223.
16824
16825         * basic-long.cs: Add test for negation of Int64.MinValue.
16826
16827 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
16828
16829         * mini-sparc.c: Update status.
16830
16831         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
16832
16833         * exceptions-sparc.c: Fix return value in filters.
16834
16835         * inssel-sparc.brg: Fix register allocation in some rules.
16836
16837 2004-03-28  Martin Baulig  <martin@ximian.com>
16838
16839         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
16840         if neccessary.  
16841
16842 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
16843
16844         * mini-x86.c (mono_arch_patch_code): Fix warnings.
16845         
16846         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
16847         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
16848         remove unused conv_u4 opcode.
16849
16850         * mini-x86.c: Remove valgrind workaround since it slows down things
16851         even when mono is not run under valgrind.
16852
16853 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
16854
16855         * mini-sparc.c: Update status.
16856
16857         * inssel-sparc.brg: Add some optimizations.
16858
16859         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
16860         future delay slot filling. Add support for varargs, tail calls and JMP.
16861
16862         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
16863         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
16864
16865         * inssel.brg: Fix register allocation in OP_ARGLIST.
16866
16867         * inssel.brg: Fix warnings.
16868
16869 2004-03-25  Martin Baulig  <martin@ximian.com>
16870
16871         * mini.c (inflate_generic_field): Removed.
16872         (mini_get_method): Removed, use mono_get_method_full(),
16873         (mini_get_class): Removed, use mono_class_get_full().
16874         (mono_method_to_ir): Pass our generic context to
16875         mono_field_from_token().        
16876
16877 2004-03-25  Martin Baulig  <martin@ximian.com>
16878
16879         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
16880         of a `MonoMethod *'.
16881         (mini_get_method): Take a `MonoGenericContext *' instead
16882         of a `MonoMethod *'.
16883         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
16884         a new local variable called `generic_context' which holds the
16885         current `MonoGenericContext *'; use it to lookup things.
16886
16887 2004-03-24  Martin Baulig  <martin@ximian.com>
16888
16889         * mini.c (mini_get_class): New static method; if we're inside a
16890         generic instance, inflate the class if neccessary.
16891         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
16892
16893 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
16894
16895         * iltests.il: New regression test for #55976.
16896
16897         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
16898         #55976.
16899
16900 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
16901
16902         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
16903         output.
16904
16905 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
16906
16907         * liveness.c: Consider SSA stores as well as loads when making vars
16908         volatile.
16909
16910         * exceptions.cs: New regression tests for register allocation.
16911         
16912 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
16913
16914         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
16915         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
16916           domain lock only to protect puntual access to data structures.
16917           Added access lock for sighash, jit_icall_hash_name, 
16918           jit_icall_hash_addr and domain->code_mp.
16919
16920 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
16921
16922         * driver.c: Print SIGSEGV handling method.
16923
16924         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
16925
16926         * mini.c (setup_jit_tls_data): Handle case when this is called
16927         multiple times for a thread.
16928
16929         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
16930         is different from fbxx_un. Fixes #54303. Also use constants instead of
16931         magic numbers in a lot of places.
16932
16933 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
16934
16935         * exceptions.cs: Fix cctor test when --regression is used.
16936
16937 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
16938
16939         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
16940         for Linux/ppc.
16941
16942 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
16943
16944         * inssel-ppc.brg: fixed register assignments for some rules.
16945
16946 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16947
16948         * exceptions.cs: Add test for exceptions in static constructors.
16949
16950         * mini.c (mono_jit_compile_method_with_out): Move the calling of
16951         static constructors outside the domain lock. Fixes #55720.
16952
16953 2004-03-17  Martin Baulig  <martin@ximian.com>
16954
16955         * mini.c (get_generic_field_inst): Removed, this'll never happen.
16956         (inflate_generic_field): Take the `MonoMethod *' instead of the
16957         `MonoClass *' and added support for generic method.
16958         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
16959         have a `field->parent->gen_params', only inflate the field if it's
16960         an open constructed type.
16961
16962 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16963
16964         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
16965         exception object instead of the preconstructed ones.
16966
16967 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16968
16969         * mini.c: reverted changed to sigsegv_signal_handler commited
16970         accidentally in the previous patch.
16971
16972 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16973
16974         * mini.c:
16975         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
16976         running --aot with an old assembly.
16977
16978 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
16979
16980         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
16981         point values.
16982
16983         * mini-sparc.c: Add support for v9 branches with prediction.
16984
16985 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
16986
16987         * mini.c (mini_init): #warning is GNUC only
16988
16989         * mini-sparc.h: implement __builtin_frame_address
16990         and __builtin_return_address for Sun C compiler
16991
16992 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
16993
16994         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
16995
16996 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
16997
16998         * basic-calls.cs: Add test for unaligned byref long argument passing.
16999
17000         * mini-ops.h: Add sparcv9 compare and branch instructions.
17001
17002         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17003         v9 instructions if we have a v9 cpu.
17004
17005         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17006         registers for global allocation.
17007
17008         * exceptions-sparc.c: Fixes.
17009         
17010 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17011
17012         * liveness.c (mono_analyze_liveness): Optimized version.
17013
17014         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17015
17016         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17017         sparc work.
17018
17019         * basic-float.cs basic-calls.cs: New regression tests.
17020
17021 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17024         sigaltstack implementation.
17025
17026         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17027         
17028         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17029         stuff if SIGSEGV_ON_ALTSTACK is not defined.
17030
17031 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17032
17033         * mini.c: Fix warnings.
17034         
17035         * mini.c (mono_resolve_patch_target): New function which contains the
17036         arch independent part of the patching process.
17037
17038         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
17039         patching code to a separate function.
17040
17041 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
17042
17043         * mini.c (add_signal_handler): ifdef out on Windows
17044
17045 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
17046
17047         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
17048         cpu-sparc.md: Add exception handling support + other fixes.
17049
17050         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
17051         typed GC detection in --version.
17052
17053         * basic.cs exceptions.cs: New regression tests.
17054
17055         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
17056         the arch specific code can store data during a compilation.
17057
17058         * mini-ops.h: Add OP_SETFRET.
17059
17060         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
17061         function, register a separate icall for each arity, so the icalls can
17062         get a wrapper.
17063         
17064         * mini.c (mono_print_tree): Print negative offsets in a more readable
17065         form.
17066         
17067         * mini.c: Make signal handling work on sparc.
17068         
17069         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
17070
17071         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
17072
17073         * jit-icalls.c: Emulate truncl by aintl on solaris.
17074
17075         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
17076
17077 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
17078
17079         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
17080
17081 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17082
17083         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
17084         a MarshalByRef type, inline a method that performs the check, taking into
17085         account that the object can be a proxy. Also implemented tow new opcodes:
17086         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17087         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
17088         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17089
17090 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17091
17092         * mini-ppc.c: if a relative branch displacement is too big
17093         but it points to and area reachable with an absolute branch, 
17094         avoid the thunks.
17095
17096 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
17097
17098         * mini.c: optimize small copies in cpblk.
17099
17100 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
17101
17102         * basic-calls.cs basic-float.cs: New regression tests.
17103
17104         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
17105         negative offsets from %fp. Implement localloc. Fix local register 
17106         allocation. Fix the case when the this argument needs to be saved to
17107         the stack. Implement some missing opcodes.
17108
17109 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * mini.c (mini_method_compile): Reenable global regalloc in methods
17112         with exception handlers.
17113
17114         * linear-scan.c (mono_varlist_sort): Fix warning.
17115
17116         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
17117
17118         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
17119         regalloc costs.
17120
17121         * liveness.c: Make all variables uses in exception clauses volatile, to
17122         prevent them from being allocated to registers. Fixes #42136.
17123
17124 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
17125
17126         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
17127         causes regressions.
17128
17129         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
17130         argument to mono_arch_regalloc_cost.
17131
17132         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
17133         precisely.
17134
17135 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
17136
17137         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
17138         Make the cost of allocating a variable to a register arch dependent.
17139
17140         * basic-calls.cs: Fix compilation of tests.
17141         
17142         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
17143         helper function to cut back on the number of #ifdefs needed.
17144
17145         * mini-ppc.c: Fix compilation.
17146
17147         * basic-calls.cs: New regression tests.
17148
17149         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
17150
17151         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
17152         of l0 since that is callee saved.
17153
17154         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
17155         to virtual calls.
17156
17157         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
17158         of delay instruction.
17159
17160         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
17161
17162         * mini.h (MonoCallInst): Add 'virtual' flag.
17163
17164         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
17165
17166 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
17167
17168         * *.cs: New regression tests.
17169
17170         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
17171         work.
17172
17173         * mini.c (mono_runtime_install_handlers): Fix build.
17174
17175         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
17176         'signal_stack_size' members.
17177
17178         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
17179         alternate signal stack.
17180
17181         * exceptions-x86.c: Add stack overflow handling.
17182
17183         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
17184         functions to arch independent code.
17185
17186         * mini.c (mono_print_tree): Print more detailed info for load_membase
17187         opcodes.
17188         
17189 2004-02-23  Martin Baulig  <martin@ximian.com>
17190
17191         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
17192
17193 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17194
17195         * mini-x86.c: fixed reg allocation for div/rem.
17196
17197 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
17198
17199         * driver.c (mono_main): Report some configuratio options on --version.
17200
17201 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
17202
17203         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
17204         low in the address space. Correctly flush memory in thunks where we
17205         output native code.
17206
17207 2004-02-20  Martin Baulig  <martin@ximian.com>
17208
17209         * mini.c (mini_get_method): New static method; inflate all generic
17210         methods and methods in open generic instances.
17211         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
17212         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
17213
17214 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17215
17216         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
17217
17218         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
17219
17220 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
17221
17222         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
17223
17224         * mini-sparc.c (flushi mono_arch_output_basic_block): make
17225         it compile using Sun's compiler.
17226
17227 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
17228
17229         * 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.
17230
17231         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
17232
17233 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17234
17235         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
17236         code.
17237         * mini-ppc.c: handle calls outside of the allowed range with thunks
17238         allocated using the code manager.
17239         * tramp-ppc.c: use the code manager to hold generated native code.
17240         Fixed the magic trampoline to just patch vtable entries.
17241
17242 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
17243
17244         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
17245         independent file.
17246
17247 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
17248
17249         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
17250         PPC.
17251
17252         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
17253         if we have a working __thread implementation.
17254
17255         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
17256         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
17257
17258 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
17259
17260         * mini-x86.c: Fix compilation under gcc 2.
17261         
17262 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
17263
17264         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
17265         contains a call to the wrapped function.
17266
17267         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
17268         OP_<CALL>_IMM opcodes, and use them under X86.
17269         
17270         * mini.c (mono_jit_find_compiled_method): Fix warning.
17271
17272         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
17273
17274         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
17275
17276         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
17277         functionality to mini.c.
17278
17279         * mini.c (mono_create_jump_trampoline): New function to create a jump
17280         trampoline. Return a compiled method instead of a trampoline if it
17281         exists. Add a cache for jump trampolines.
17282
17283         * mini.c (mono_jit_find_compiled_method): New function to return a
17284         compiled method if it exists.
17285
17286         * mini-x86.c: Call mono_create_jump_trampoline instead of 
17287         mono_arch_create_jit_trampoline.
17288
17289         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
17290         a jump trampoline. Fixes #52092.
17291         
17292 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
17293
17294         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
17295         which is not up-to-date. Add check_corlib_version () instead.
17296
17297         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
17298         have to call it.
17299         
17300         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
17301         since newer valgrind versions do not need it.
17302
17303         * mini.c (mono_jit_compile_method_with_opt): New helper function to
17304         compile a method with a given set of optimizations.
17305
17306         * mini.c: Compile icall wrappers on-demand instead of at startup.
17307
17308         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
17309         wrapper for an icall.
17310
17311 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
17314         #54063.
17315
17316         * iltests.il: Add test for non-empty stack before switch instruction.
17317
17318 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
17319
17320         * mini.c: Add support for new stringbuilder marshalling conventions.
17321
17322         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
17323
17324 2004-02-01  Martin Baulig  <martin@ximian.com>
17325
17326         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
17327         in `ginst->mtype_argv'.
17328
17329 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
17330
17331         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
17332         facilitate grepping.
17333
17334 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
17335
17336         * mini.c: fixed buglet in initobj generic implementation for references.
17337
17338 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
17339
17340         * Makefile.am: make the version script conditional.
17341         * jit-icalls.c: handle missing truncl().
17342
17343 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * exceptions.cs: Add more tests for double->int conversion.
17346
17347         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
17348         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
17349
17350 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
17351
17352         * driver.c: make --verbose --version emit an error
17353         if the loaded corlib doesn't match the runtime version.
17354
17355 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
17356
17357         * mini-ppc.h: export ppc_patch().
17358         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
17359         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
17360         on par or better than on MacOSX.
17361
17362 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
17363
17364         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
17365         mono_lookup_pinvoke_call.
17366
17367         * mini-x86.c: Under windows, the default pinvoke calling convention is
17368         stdcall. Fixes #52834.
17369
17370         * mini.c (optimize_branches): Add an upper bound to the number of
17371         iterations to prevent infinite loops on strange loops. Fixes #53003.
17372
17373 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
17376         and ISINST. Fixes #52093.
17377
17378         * objects.cs (test_0_vector_array_cast): New tests.
17379         
17380 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
17383         checking in Array.Set ().
17384
17385         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
17386         #52590.
17387
17388         * object.cs (test_0_multi_array_cast): New regression test.
17389
17390 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
17391
17392         * exceptions-ppc.c: fix build on Linux/PPC.
17393
17394 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
17397         running under valgrind.
17398         (x86_magic_trampoline): Fix build bustage.
17399
17400         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
17401         negative values as well. This is needed for the encoding of the line number
17402         info, since sometimes the line numbers are not in increasing order.
17403
17404 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
17405
17406         * cpu-pentium.md (localloc): Increase the size of the localloc 
17407         instruction since it is a loop under Win32.
17408
17409         * debug-mini.c (record_line_number): Get rid of unneccesary memory
17410         allocation.
17411
17412 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
17413
17414         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
17415         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
17416         Max Horn (max@quendi.de). Fix file names in comments.
17417
17418 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
17421         avoid stack overflow.
17422         (replace_usage): Avoid uninitialized variable warnings.
17423
17424         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
17425         and taking the address of valuetype variables.
17426
17427 2004-01-03  Patrik Torstensson
17428
17429         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
17430         for other purposes than FP later on.
17431
17432 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
17433
17434         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
17435         of tail calls.
17436
17437 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
17438
17439         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
17440
17441 2003-12-30  Patrik Torstensson <p@rxc.se>
17442
17443         * mini-x86.h: Decreased number of availiable fp regs.
17444         Solves corner cases with FP spilling.
17445
17446 2003-12-23  Patrik Torstensson <p@rxc.se>
17447
17448         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
17449         for floating point stack tracking / spilling on x86. 
17450         Fixes bug #49012.
17451         
17452         * basic-float.cs: added float mul overflow test.
17453
17454 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
17455
17456         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
17457
17458 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
17459
17460         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
17461         supports for cond branches that overflow the immediate
17462         overflow offset. mcs can compile simple programs.
17463
17464 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
17465
17466         * exceptions-ppc.c: exception handling support wip:
17467         finally handlers get run on exception.
17468
17469 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
17470
17471         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
17472         profiling.
17473
17474 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
17475
17476         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
17477         initial support for stack walking and unwinding.
17478
17479 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
17480
17481         * driver.c (mono_main): Make corlib-out-of-sync message more 
17482         descriptive. Also remove verify_corlib call.
17483
17484 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
17485
17486         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
17487         not overlap with other call's arguments, too.
17488
17489 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
17490
17491         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
17492         move to arch-specific code the choice of arch-specific
17493         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
17494         * mini.c: ensure emulation calls will not interleave
17495         with other calls.
17496
17497 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
17498
17499         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
17500         the magic trampoline stack frame is dropped before executing
17501         the new method.
17502
17503 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
17504
17505         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
17506         and integer to fp conversions. Added support for overflowing
17507         arguments on the stack. Reserve a couple more registers as temps.
17508         Added support for aot compilation (as output still needs to be
17509         tweaked, though).
17510
17511 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
17512
17513         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
17514         Don't overwrite return register in some corner cases.
17515
17516 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
17519         static constructors when AOT compiling.
17520
17521         * driver.c (mono_main): Call mono_check_corlib_version.
17522
17523 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
17524
17525         * cpu-g4.md, basic.cs: fixed div target register.
17526
17527 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
17528
17529         * mini-ppc.c, basic.cs: shl_imm fix with test.
17530
17531 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
17532
17533         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
17534         structures by value. Misc fixes.
17535         * objects.cs: more tests.
17536
17537 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
17538
17539         * mini-ppc.c: lconv.ovf.i implemented.
17540
17541 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17542
17543         * mini.c:
17544         (mini_init): don't error out if someone already called g_thread_init.
17545
17546 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
17547
17548         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
17549         to be any type per the spec. Fix abnormal memory usage when
17550         the same object is repeatedly thrown.
17551
17552 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
17553
17554         * mini.c: check for overruns in IL code.
17555
17556 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
17557
17558         * TODO: Add/remove some todo entries.
17559
17560 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * driver.c (mono_main): Call mono_verify_corlib.
17563
17564 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
17565
17566         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
17567         This has been moved to mini.c
17568         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
17569         type being casted is marshalbyref it could be a proxy, so instead of
17570         emitting the type check code, emit a call to a runtime method that will
17571         perform the check by calling CanCastTo if needed.
17572
17573 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
17576         methods with large stack frames under Win32.
17577
17578 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
17579
17580         * Makefile.am: Distribute regression tests.
17581
17582         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
17583         at the end instead of inserting each variable into the sorted list.
17584
17585         * linear-scan.c (mono_varlist_sort): New helper function.
17586         
17587 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
17588
17589         * mini.c: ensure arguments and locals are within bounds.
17590
17591 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
17592
17593         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
17594         related fixes.
17595
17596 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
17597
17598         * mini.c (mono_cprop_copy_values): Fix crash.
17599
17600         * aot.c: Set verbosity back to 0.
17601         
17602 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
17603
17604         * regalloc.c: complete memory leak fix by Laurent Morichetti
17605         (l_m@pacbell.net).
17606
17607 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
17608
17609         * driver.c (main_thread_handler): Revert the previous patch.
17610
17611         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
17612         under valgrind.
17613
17614         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
17615         memory from the memory pool.
17616
17617         * driver.c (main_thread_handler): Turn on all optimizations when
17618         --aot is used.
17619
17620         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
17621         an array for better performance.
17622
17623         * regalloc.c (mono_regstate_assign): Fix memory leak.
17624
17625         * debug-mini.c (mono_debug_serialize_debug_info): New function to
17626         serialize the debug info.
17627
17628         * debug-mini.c (mono_debug_add_aot_method): New function to load the
17629         debug info from the serialized representation.
17630
17631         * aot.c: Save debug info into the generated file and load it when 
17632         loading a method.
17633
17634         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
17635
17636 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
17637
17638         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
17639         More FP-related fixes.
17640
17641 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
17642
17643         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
17644         and register allocation buglet. Hello world now runs.
17645
17646 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
17647
17648         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
17649         * tramp-ppc.c: fixed class init trampoline.
17650         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
17651
17652 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
17653
17654         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
17655         mini.c: more ppc changes/fixes.
17656
17657 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
17658
17659         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
17660         Also optimize the case when the arguments are the same in the caller 
17661         and in the callee.
17662
17663         * iltests.il: Add tests for tail calls with valuetype arguments.
17664
17665 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
17666
17667         * mini-ppc.c: fixes for struct return type.
17668
17669 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
17670
17671         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
17672         mono_spillvar_offset() to arch-specific code.
17673
17674 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
17675
17676         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
17677
17678 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
17679
17680         * exceptions-x86.c: Fix stack space leaks.
17681         
17682         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
17683         registers from the lmf if the method has save_lmf set.
17684
17685 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
17688         of icall wrappers into InvokeInDomain, since these are now per-domain.
17689
17690 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
17691
17692         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
17693         make some opcode emulation and intrinsic ops enabled/disabled 
17694         according to the architecture. More fixes.
17695
17696 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
17697
17698         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
17699
17700 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
17701
17702         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
17703         arch-specific handling for 'this' and struct return type to
17704         arch-specific code.
17705
17706 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17707
17708         * aot.c: prevent divide by zero error when reporting (it happened with
17709         Accessibility.dll).
17710
17711 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
17712
17713         * mini.h (inst_switch): Remove unused macro.
17714
17715 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17716
17717         * aot.c:
17718         (load_aot_module): free 'info->methods' and 'info' properly. No more
17719         "free(): invalid pointer blah" messages when you have an old aot
17720         compiled assembly.
17721
17722 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
17723
17724         * jit-icalls.c, mini.c: Added support for context static fields.
17725
17726 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
17727
17728         * mini.c (mono_method_blittable): Methods which set LastError are not 
17729         blittable either. Fixes #51108.
17730         
17731 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
17732
17733         * mini.c: flush icache.
17734         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
17735
17736 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
17737
17738         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
17739
17740 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
17743         safe on IA32.
17744
17745         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
17746         vararg calls.
17747
17748         * inssel.brg (CEE_MKREFANY): Fix AOT case.
17749
17750 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
17753         instruction when the result is discarded.
17754
17755         * iltests.il (test_0_div_regalloc): New regression test.
17756
17757         * arrays.cs: Fix compilation error.
17758
17759 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
17760
17761         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
17762         float rules to inssel-x86.brg: sane architectures with FP registers
17763         don't need to implement these rules.
17764
17765 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
17766
17767         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
17768
17769 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
17770
17771         * mini.h, inssel-long32.brg: fixed endianess issues in int64
17772         implementation of 32 bit systems.
17773
17774 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
17775
17776         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
17777         (Jeroen Zwartepoorte).
17778
17779 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
17780
17781         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
17782         the caller and the callee matches.
17783         
17784         * mini.c (mono_method_to_ir): Add comment.
17785
17786         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
17787         signbit is missing on some platforms.
17788
17789 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
17790
17791         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
17792
17793         * mini.c (setup_jit_tls_data): Call the new function.
17794         
17795         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
17796
17797         * mini-x86.c: Add experimental support for fast access to the lmf
17798         structure under NPTL/Linux 2.6.x.
17799
17800 2003-11-06  Martin Baulig  <martin@ximian.com>
17801
17802         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
17803         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
17804         the debugger.
17805
17806 2003-11-02  Martin Baulig  <martin@ximian.com>
17807
17808         * mini.c (inflate_generic_field): New static method.
17809         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
17810         generic instance and the field is declared in a generic type, call
17811         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
17812
17813 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
17814
17815         * mini.h mini.c (mono_method_same_domain): New function to return
17816         whenever the caller and the callee are in the same domain.
17817
17818         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
17819
17820 2003-10-30  Martin Baulig  <martin@ximian.com>
17821
17822         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
17823         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
17824         method parameters.
17825         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
17826         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
17827
17828 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
17829
17830         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
17831         propagation.
17832
17833         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
17834         object here, so it is in the correct appdomain etc.
17835
17836 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
17837
17838         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
17839         already done.
17840         (mono_method_to_ir): Avoid freeing the type created returned from
17841         mono_type_create_from_typespec, since it is put into an internal cache
17842         by the function. Fixes pointer.exe.
17843
17844         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
17845         trampolines for icalls and pinvokes as well. Fixes #33569.
17846
17847 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
17848
17849         * mini.c: Update after appdomain changes.
17850
17851         * mini.c (mono_jit_compile_method_inner): Allways compile native
17852         method wrappers in the root domain, since there can only be one
17853         instance of them, whose address is stored in method->info.
17854
17855 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
17856
17857         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
17858         environment variable. Instead detect automatically whenever running
17859         under valgrind using the magic macro RUNNING_ON_VALGRIND from
17860         valgrind.h.
17861
17862 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
17863
17864         * trace.c, trace.h: New files that implement the new trace option
17865         parsing. 
17866
17867         * driver.c: Document new --trace options.
17868
17869         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
17870         mini-x86.c: Apply:
17871
17872         -       if (mono_jit_trace_calls)
17873         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
17874
17875         * mini.h: prototypes.
17876         
17877 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
17878
17879         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
17880
17881         * mini.c inssel.brg: Implement typedefbyref opcodes.
17882
17883         * mini.c (mono_jit_compile_method): Remove unused local variable.
17884
17885         * mini.c (mono_jit_compile_method_inner): Ditto.
17886         
17887 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
17888
17889         * tramp-x86.c (x86_class_init_trampoline): Fix build.
17890         
17891         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
17892
17893 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
17894
17895         * mini.c (mono_no_aot): Remove unused global variable.
17896
17897         * mini.c: Thread safety fixes.
17898
17899 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
17900
17901         * mini.c (mono_create_class_init_trampoline): Add a lock around
17902         class_init_hash_addr.
17903
17904         * arrays.cs (test_0_newarr_emulation): Add new regression test for
17905         #30073.
17906
17907         * mini.c: Decompose the NEWARR instruction before decomposing its
17908         arguments. Fixes #30073.
17909
17910 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
17911
17912         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
17913         convention.
17914
17915 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
17918
17919         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
17920
17921         * driver.c: Add support for compiling icall wrappers to --compile.
17922
17923 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
17924
17925         * inssel.brg: The empty value in class->interface_offsets is -1, not
17926         0. Fixes #49287.
17927
17928 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
17929
17930         * objects.cs: New test for 'is' operator on an array of interfaces.
17931
17932 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17933
17934         * tramp-ppc.c: update trampoline code to support jumps
17935         and class initialization.
17936
17937 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
17938
17939         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
17940
17941         * inssel.brg (OP_UNBOXCAST): Fix #46027.
17942
17943         * inssel.brg (OP_UNBOX): Remove unused rule.
17944
17945         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
17946         region instead of one for each method. Fixes #47813.
17947
17948 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
17949
17950         * exceptions.cs (test_0_nested_finally): New regression test for
17951         nested exception handlers.
17952
17953         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
17954
17955         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
17956
17957         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
17958         inlining.
17959
17960         * mini.c (mono_method_check_inlining): Make the inlining limit 
17961         configurable by an environment variable.
17962         
17963         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
17964
17965         * mini.h: Bump AOT file version.
17966
17967         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
17968         token, store the image along with the token, since the token might not 
17969         refer to the same image as the method containing the relocation, 
17970         because of inlining.
17971
17972 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
17973
17974         * mini.c (mono_precompile_assemblies): New function to compile
17975         all methods in all loaded assemblies.
17976
17977         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
17978
17979         * regalloc.h regalloc.c (MonoRegState): Change the type of 
17980         iassign and fassign to int*, since they can contain large negative
17981         values if the register is spilled. Also added some comments. Fixes
17982         #45817.
17983
17984         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
17985         under Win32. Fixes #42964.
17986
17987 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
17988
17989         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
17990
17991         * aot.c: Added support for AOT compiling methods which contain calls
17992         to wrappers. Currently, only remoting-invoke-with-check wrappers are
17993         handled.
17994         
17995         * driver.c (compile_all_methods): Run the compilation in a thread
17996         managed by mono. Fixes #44023.
17997
17998         * mini.c (mono_codegen): Print full method name in verbose output.
17999
18000         * mini-x86.c (mono_arch_patch_code): Fix warning.
18001         
18002         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18003         jumps, since the method we are jumping to might be domain-specific.
18004
18005         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18006
18007 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18008
18009         * inssel.brg: string chars are unsigned.
18010
18011 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18012
18013         * TODO: New todo item.
18014
18015         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18016         which calls mono_runtime_class_init and patches the call site to
18017         avoid further calls.
18018         (mono_arch_create_class_init_trampoline): New arch specific function 
18019         to create a class init trampoline.
18020         (create_trampoline_code): Generalized so it can create
18021         class init trampolines as well.
18022
18023         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18024         (mono_create_class_init_trampoline): New function to create and cache
18025         class init trampolines.
18026         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18027         vtable given the address of a class init trampoline. Used by the
18028         patching process.
18029         (mono_codegen): Generate a call to a trampoline instead of
18030         mono_runtime_class_init in LDSFLD[A].
18031         (mono_codegen): Add relocations for the new trampoline.
18032         
18033         * mini.h mini-x86.c aot.c: Added a new relocation type: 
18034         MONO_PATCH_INFO_CLASS_INIT.
18035
18036         * mini.h: Bump AOT version number.
18037
18038         * aot.c: Create a copy of the loaded code instead of using the original
18039         so methods which call each other will be close in memory, improving
18040         cache behaviour.
18041         
18042         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
18043         patch since it breaks the regression tests.
18044         
18045         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
18046         for the register saving instruction sequence since the 
18047         frame_state_for function in glibc 2.3.2 don't seem to detect it.
18048
18049 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
18050
18051         * TODO: Fix todo item && remove another.
18052
18053 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
18054
18055         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
18056         previous checkin.
18057
18058         * aot.c: Moved the check for MONO_LASTAOT into the initialization
18059         function of the module.
18060
18061         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
18062         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
18063         --no-aot command line option.
18064
18065 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18066
18067         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
18068         by Bernie Solomon (bernard@ugsolutions.com).
18069
18070         * inssel.brg: Refactor the interface offset table related code into
18071         its separate functions and add support for the AOT case.
18072
18073 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18074
18075         * aot.c (mono_aot_get_method_inner): Fix memory leak.
18076         
18077         * aot.c: Added mono_aot_verbose variable and made all debugging
18078         output depend on the value of this variable.
18079
18080         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
18081         method_label and info_label.
18082
18083         * mini.h mini-x86.c aot.c: Added a new relocation type 
18084         MONO_PATCH_INFO_IID for klass->interface_id.
18085
18086         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
18087         the MonoJitInfo structure.
18088
18089         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
18090         a non-root appdomain in shared mode.
18091
18092 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
18093
18094         * aot.c: make aot loader less verbose. Remove free of unused variable.
18095
18096 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
18097
18098         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
18099
18100         * .cvsignore: Added *.dll.
18101
18102         * mini.c (mono_print_tree_nl): New function callable while debugging.
18103
18104         * mini.c (mono_print_code): Export this.
18105
18106         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
18107         patched code.
18108
18109 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
18110
18111         * mini.h (MonoCompile): Added 'jit_info' field.
18112
18113         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
18114         the cfg structure, since it is needed by the AOT compiler.
18115
18116         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18117
18118         * aot.c: A major rewrite. Changes include:
18119         - save exception tables for methods which have them.
18120         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
18121         to g_module_symbol.
18122         - reworked the file format so it is now much smaller and needs
18123         fewer relocation entries.
18124         
18125 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18126
18127         * aot.c (load_aot_module): Fix build bustage on platforms without
18128         Boehm GC.
18129
18130 2003-09-04  Martin Baulig  <martin@ximian.com>
18131
18132         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
18133
18134 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18135
18136         * TODO: Some new optimization ideas.
18137
18138         * aot.c: Move AOT module loading logic here from mono_assembly_open.
18139
18140         * aot.c: Save the optimization flags used to compile the code into
18141         the AOT module.
18142
18143         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
18144         support emitting domain specific code.
18145         
18146         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
18147         no longer domain neutral. It can be made domain neutral by compiling 
18148         with --optimize=shared.
18149
18150         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
18151         between appdomains.
18152
18153         * driver.c mini.h mini.c: New --no-aot debugging option which disables
18154         loading of AOT code.
18155
18156         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
18157         
18158         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
18159         if there is no domain neutrality information.
18160
18161 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
18162
18163         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
18164         format version into the generated library.
18165
18166         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
18167         callee method into the caller since one of them could be shared.
18168
18169         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
18170         system exceptions from AOT code now works.
18171
18172         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
18173         method if it is domain neutral and the callee is not.
18174
18175         * graph.c (cfg_emit_one_loop_level): Fix warning.
18176
18177 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
18178
18179         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
18180         last checkin.
18181
18182 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
18183
18184         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
18185         is needed  by code which is executed before mono_runtime_init ().
18186         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
18187         
18188         * mini.c (mono_thread_abort): Fix warning.
18189         (mono_jit_compile_method): Call static constructor in the AOT case too.
18190
18191         * aot.c (mono_compile_assembly): Fix warning.
18192
18193 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18194
18195         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
18196
18197 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
18198
18199         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
18200
18201         * cpu-pentium.md: Fix the length of call opcodes so they include the
18202         ESP restoring instruction. Fixes #47968.
18203
18204 2003-08-28  Martin Baulig  <martin@ximian.com>
18205
18206         * mini-x86.c (mono_arch_call_opcode): Added support for
18207         MONO_TYPE_GENERICINST.
18208
18209         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
18210
18211 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
18212
18213         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
18214         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
18215
18216         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
18217         metadata_section.
18218
18219 2003-08-26  Martin Baulig  <martin@ximian.com>
18220
18221         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
18222         when reporting an error, set this to the actual error location.
18223         (mono_method_to_ir): Report the correct error location if
18224         get_basic_blocks() returned an error.
18225
18226 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * mini.c (mono_type_blittable): OBJECT is not blittable.
18229         (mono_method_blittable): Methods which have marshalling descriptors
18230         are not blittable either. Fixes #47842.
18231
18232 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * driver.c mini.c: Use an environment variable instead of a global 
18235         variable. Also fix the build.
18236
18237         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
18238         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
18239         reporting this. 
18240
18241         * driver.c mini.c: Added --with-valgrind option to turn off some
18242         code which prevents mono from running under valgrind.
18243
18244         * mini.c (mono_emit_call_args): Fixed warning.
18245
18246         * mini.c (mono_emulate_opcode): Fixed warning.
18247
18248 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18249
18250         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
18251         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
18252         regalloc.c, regalloc.h: specify available registers in arch-specific
18253         code and support floats in the regallocator (patch by Laurent Morichetti 
18254         <l_m@pacbell.net>)
18255
18256 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
18257
18258         * mini.c: mono_thread_current() can be called only after
18259         mono_runtime_init(): rearrange code to not call it early on.
18260
18261 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
18262
18263         * mini.c: allocate jump tables in the code mempools.
18264
18265 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18266
18267         * mini.c, mini.h: make sure per-thread data allocated by the jit is
18268         freed.
18269
18270 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
18271
18272         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
18273         12 to 16.  This fixes bug #47453.
18274
18275
18276 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
18277
18278         * mini-ppc.c: fixed indexed load and unsigned compares.
18279
18280 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
18281
18282         * mini.c: reenabled installation of handler for
18283           thread abort signal.
18284
18285 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18286
18287         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
18288         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
18289         until it's fixed and actually useful.
18290
18291 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
18292
18293         * inssel-long32.brg: couple more opcodes implemented.
18294
18295 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
18296         
18297         * mini-sparc.c: Even more opcodes implemeted.
18298
18299 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
18300
18301         * mini-sparc.c: More opcodes implemented.
18302
18303 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
18304
18305         * mini-sparc.c: More opcodes implemented.
18306
18307 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
18308
18309         * inssel-sparc.brg: Add some needed rules.  Direct
18310         copy from PPC.
18311         * Makefile.am: Use inssel-sparc.brg
18312         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
18313         an assert happy for now.
18314
18315 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
18316
18317         * mini-sparc.c: Fixed compile errors.
18318         * exceptions-sparc.c: Same.  We now produce a mono binary 
18319         on sparc-linux.  Yea.
18320
18321 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
18322
18323         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
18324         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
18325         They compile, but do not work.
18326
18327 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18328
18329         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
18330         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
18331         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
18332         (ct@gentoo.org).
18333
18334 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18335
18336         * mini.c: more opcodes implemented and better support for generics.
18337
18338 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
18339
18340         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
18341         * mini.c, mini.h: first cut at generics support: some new instructions 
18342         added and changed the behaviour of some of the existing ones.
18343
18344 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
18345
18346         * mini.c: Removed definition of metadata_shared mutex here.
18347
18348 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
18349
18350         * mini-x86.c: make vararg calls work for instance methods.
18351
18352 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
18353
18354         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
18355         returns the arguments in a separte list, now.
18356
18357 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
18358
18359         * aot.c, mini.c: updates for array type representation changes.
18360
18361 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
18362
18363         * mini.c: register function to perform jit shutdown.
18364
18365 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18366
18367         * mini.c: use a faster allocator if possible.
18368
18369 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
18370
18371         * aot.c: some cleanups and portability changes.
18372
18373 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
18374
18375         * mini.c: use faster allocation for CEE_BOX if possible.
18376
18377 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
18378
18379         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
18380         Moved inlined mempcy code to its own function so that is can be
18381         reused. Added an inline memset function as well (optimized initobj).
18382         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
18383
18384 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
18385
18386         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
18387
18388 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
18389
18390         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
18391         arch code can setup the cpu for CLR execution, if needed.
18392         We use it on x86 to set the precision of FP operations.
18393
18394 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
18395
18396         * mini.c: disable some optimizations if we can guess they'll cost too
18397         much for a given method.
18398
18399 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
18402         
18403 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
18404         * mini.h mini.c mini-x86.c: Added instruction level coverage 
18405         info collection support.
18406
18407 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
18408
18409         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
18410         is now implemented in the profiling API. Get rid of a couple of
18411         unnecessary global variables.
18412
18413 2003-06-15  Nick Drochak <ndrochak@gol.com>
18414
18415         * basic-long.cs: tests for negative values for bigmul, and unsigned.
18416         * cpu-g4.md: add op_bigmul and op_bigmul_un
18417         * cpu_pentium.md: add op_bigmul_un
18418         * inssel-long32.brg: add rule for unsigned bigmul
18419         * mini-ops.h: define OP_BIGMUL_UN
18420         * mini-x86.c: THE BUG: handle (un)signed properly
18421         * mini.c: choose unsigned opcode if needed.
18422         This set of patches fixes bug #44291
18423
18424 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
18425
18426         * mini.c (optimize_branches): improved to handle all kinds of
18427         conditional branches.
18428
18429 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
18430
18431         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
18432         don't raise exceptions.
18433
18434 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
18435
18436         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
18437         to arch-specific files.
18438
18439 2003-06-09  Martin Baulig  <martin@ximian.com>
18440
18441         * Makefile.am (libs): Added $(LIBGC_LIBS).
18442
18443 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
18444
18445         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
18446         and OP_ATAN (fixes bug#44293).
18447
18448 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
18449
18450         * Makefile.am, mini-x86.c: rename cpu description array to
18451         pentium_desc, since some compilers define the 'pentium' preprocessor
18452         symbol.
18453
18454 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
18455
18456         * mini.c (mini_select_instructions): add explicit branch if the
18457         following block is not the false target of a conditional branch -
18458         we need this with any optimization that reorder or remove bblocks
18459
18460         * mini.c (optimize_branches): bug fixes
18461
18462 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
18463
18464         * mini.c (mono_method_to_ir): inline static readonly fields
18465
18466         * ssa.c (fold_tree): start cfold support for long (very simple
18467         cases only)
18468
18469         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
18470
18471 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
18472
18473         * inssel.brg: fixed memcpy (bug #44219).
18474
18475 2003-06-05  Dick Porter  <dick@ximian.com>
18476
18477         * driver.c: Set the glib log levels to not abort if g_message
18478         recurses.
18479
18480         g_set_prgname() has to happen before mini_init() so that the
18481         process handle gets the info.
18482         
18483 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
18484
18485         * driver.c: add intrins to the default optimizations to get wider
18486         exposure.
18487
18488 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
18489
18490         * mini.h: some large basic blocks will overflow a 16-bit
18491         integers for symbolic registers.
18492
18493 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
18494
18495         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
18496         (mono_arch_output_basic_block): fix bug 43499 
18497
18498 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
18499
18500         * mini.c: kill duplicated definition of mono_debug_format.
18501
18502 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
18503
18504         * mini-x86.c, arrays.cs: fixed register allocation bug.
18505
18506 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
18507
18508         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
18509
18510         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
18511
18512 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18513
18514         * mini.c:
18515         (print_method_from_ip): also print source location information if
18516         available.
18517
18518 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
18519
18520         * mini.c (mono_find_block_region): bug fix in region code
18521         (mini_method_compile): enable removing unreachable code again, but
18522         only in methods without exception clauses.
18523
18524 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
18525
18526         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
18527         Implemented arglist opcode and handling of TypedReference type.
18528         Fixed x86 call convention when a structure is returned.
18529         Minimal support for calling static vararg methods.
18530
18531 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
18532
18533         * mini.c (mini_method_compile):  always remove unreachable code,
18534         because the code in them may be inconsistent  (access to dead
18535         variables for example).
18536
18537 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
18538
18539         * driver.c, debug-mini.c: warning fixes.
18540
18541 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
18542
18543         * Makefile.am, jit.h, mini.h: install header for embedding mono.
18544
18545 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
18546
18547         * mini.c: thread-static fields are registered in mono_class_vtable(),
18548         so ensure the function is called before checking for them.
18549
18550 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
18551
18552         * mini.c (optimize_branches): fix for bug 43586
18553
18554         * jit-icalls.c (mono_llmult_ovf): added an additional check for
18555         overflow (fixes Bug #43639)
18556
18557 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18558
18559         * mini.c, objects.cs: allow the use of stobj for primitive types.
18560
18561 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18562
18563         * mini.c: be less strict about argument checking until we support
18564         running the verifier.
18565
18566 2003-05-27  Nick Drochak <ndrochak@gol.com>
18567
18568         * basic-long.cs: tests for (ulong)int * (ulong)int also
18569         * mini.c: use the same trick for (ulong)int * (ulong)int
18570
18571 2003-05-27  Nick Drochak <ndrochak@gol.com>
18572
18573         * basic-long.cs: add regression test for (long)int * (long)int
18574         * cpu-pentium.md: add op_bigmul specification
18575         * inssel-long32.brg: add OP_BIGMUL rule
18576         * mini-ops.h: add OP_BIGMUL
18577         * mini-x86.c: register allocator: handle case where src1 needs to be
18578         in EAX.
18579         * mini.c: substitute special BIGMUL opcode in the tree for 
18580         (long)int * (long)int
18581
18582 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
18583
18584         * jit-icalls.c: call the type ctor on field access if needed.
18585
18586 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
18587
18588         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
18589         to a method (including results of ldelema, bug#43207).
18590
18591 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
18592
18593         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
18594         colors to show exception handler blocks.
18595
18596         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
18597         (fix for pinvoke7.cs).
18598
18599 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18600
18601         * mini.h, mini.c: ensure correct initialization order for types that
18602         require it. Prepare for lazy compilation of jit icall wrappers.
18603         Provide a name for opcode emulation to reduce unneeded mallocing.
18604
18605 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
18606
18607         * mini-x86.c: better register restoring code and profiling
18608         support for tail calls.
18609
18610 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
18611
18612         * mini.h, driver.c: prepare for leaf methods optimization.
18613
18614 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
18615
18616         * mini.c: get targets of branches before converting a method.
18617
18618 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
18619
18620         * mini.c (optimize_branches): added some experimental code (disbaled) 
18621
18622 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
18623
18624         * mini.c (optimize_branches): fix branch to branch optimization 
18625
18626         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
18627
18628         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
18629
18630         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
18631
18632         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
18633         if needed.
18634
18635 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
18636
18637         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
18638         enable use of interface variables again.
18639
18640         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
18641         I1 to registers because there is no simply way to sign extend 8bit
18642         quantities in caller saved registers on x86.
18643
18644         * inssel-float.brg: set costs of some rules to 2 so
18645         that monobure always select the arch. specific ones if supplied,
18646         regardless of the order we pass the files to monoburg.
18647
18648 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
18649
18650         * mini.c, mini-x86.c: since the magic trampoline for jumps
18651         can't patch the code directly, we do it as soon as the
18652         method gets compiled.
18653
18654 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
18655
18656         * mini-x86.c, mini.h: introduce a new patching method
18657         to support CEE_JMP and tail calls.
18658         * mini.c: obey tail.call. Don't precompile methods target
18659         of CEE_JMP.
18660         * tramp-x86.c: new trampoline code to handle methods
18661         reached through a jump.
18662
18663 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
18664
18665         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
18666         bit values to registers
18667
18668 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
18669
18670         * mini.c (mono_compile_get_interface_var): share interface
18671         variables if possible.
18672
18673 2003-05-16  Martin Baulig  <martin@ximian.com>
18674
18675         * debug-mini.c (mono_init_debugger): New function to initialize
18676         the debugger.  This is not in the debugger since it needs to
18677         access some of mini's internals.
18678
18679 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
18680
18681         * mini.c (mono_method_to_ir): inlining fixes/cleanups
18682
18683 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
18684
18685         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
18686         for value type handling.
18687
18688 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
18689
18690         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
18691         (mono_method_check_inlining): enable inlining of all kinds of wrappers
18692
18693 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
18694
18695         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
18696           the constructor through a proxy.
18697
18698 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18699
18700         * jit-icalls.c, inssel.brg: fixes to array element address
18701         calculations.
18702
18703 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
18704
18705         * mini-x86.c (is_regsize_var): allocate pointer to registers
18706
18707 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18708
18709         * driver.c: fixed typo, added intrins to the set of optimizations
18710         tested with regressions.
18711
18712 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
18713
18714         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
18715         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
18716         test case.
18717
18718 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
18719
18720         * inssel.brg: remove some common pop instructions without side effects
18721
18722 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
18723
18724         * inssel-x86.brg: fixed thinko in int to double conversions.
18725
18726 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
18727
18728         * mini.c, jit-icalls.c: added runtime thread-static variable support.
18729
18730 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
18731
18732         * inssel-long32.brg: two more missing instructions.
18733
18734 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
18735
18736         * mini.c (mono_emit_call_args): set the cil_code for all arguments
18737         if not already set.
18738
18739 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
18742         correctly.
18743
18744         * basic-float.cs: Added tests for negative zero.
18745
18746 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18747
18748         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
18749         a couple of missing operations for long casts, with test cases.
18750
18751 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18752
18753         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
18754
18755 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
18756
18757         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
18758         code size estimation.
18759
18760 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
18761
18762         * mini.c (mono_jit_create_remoting_trampoline): make it work with
18763         abstract methods (fix bug 42542)
18764
18765         * aot.c: add ability to handle array types
18766         
18767 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * mini.c: Call the _specific versions of the object allocation
18770         functions if possible.
18771
18772 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
18773
18774         * driver.c: call setlocale ().
18775
18776 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
18777
18778         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
18779         windows build.
18780
18781 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
18782
18783         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
18784
18785         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
18786         wrappers (fix bug 42122)
18787
18788 2003-05-04  Martin Baulig  <martin@ximian.com>
18789
18790         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
18791
18792         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
18793         s/mini_set_defaults/mono_set_defaults/g.
18794
18795 2003-05-04  Martin Baulig  <martin@ximian.com>
18796
18797         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
18798
18799 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18800
18801         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
18802         (reported by Don Roberts).
18803
18804 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
18805
18806         * mini.c: temporarily work around two bugs for this release.
18807
18808 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
18809
18810         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
18811         that contains -export-dynamic and it makes using the ld script
18812         useless.
18813         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
18814
18815 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
18816
18817         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
18818         specific cpu.
18819
18820 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
18821
18822         * mini.c: make sure leave calls all the needed finally blocks,
18823         even when the target jumps out of multiple exception clauses.
18824
18825 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
18826
18827         * ldscript, Makefile.am: add linker script to reduce the number of
18828         exported symbols (should also fix the issues with libwine defining
18829         some of the same symbols in io-layer).
18830
18831 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * driver.c (mini_main): Avoid assertion when no file name is given on 
18834         the command line.
18835
18836 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
18837
18838         * driver.c: added --version/-V command line option.
18839         Added the inline optimization in the regression tests.
18840
18841 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18842
18843         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
18844         to the type in the method signature (fixes bug#42134).
18845
18846 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
18847
18848         * mini.c: when inlining, check this is not null only when needed (bug #42135).
18849
18850 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
18851
18852         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
18853
18854 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18855
18856         * driver.c: fixed bug #42100.
18857
18858 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
18859
18860         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
18861
18862 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
18863
18864         * mini.c: moved most of the code required to do inlining to its own
18865         function so it can be reused. Inline also ctors if appropriate.
18866
18867 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
18868
18869         * Makefile.am: Link with -export-dynamic so shared libs loaded by
18870         the runtime can call mono API functions.
18871
18872 2003-04-27  Martin Baulig  <martin@ximian.com>
18873
18874         * debug-mini.c (mono_debug_init_method): Added
18875         `guint32 breakpoint_id' argument; if the method has a breakpoint,
18876         send a notification to the debugger.
18877
18878         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
18879         running in the Mono Debugger, just pass the breakpoint number to
18880         mono_debug_init_method().
18881
18882         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
18883
18884 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
18885
18886         * mini.c: allow some more unsafe compares.
18887
18888 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18889
18890         * mini-x86.c, Makefile.am: make distcheck works (partially from
18891         a patch by Richard Lee <r.h.lee@attbi.com>).
18892         * regset.c, regset.h: removed, they are unused.
18893
18894 2003-04-25  Dick Porter  <dick@ximian.com>
18895
18896         * driver.c: Usage reports the name as 'mono' not 'mini'
18897         * exceptions-x86.c: Build and run on freebsd
18898
18899 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
18900
18901         * Makefile.am: install the program with the 'mono' name and
18902         the library as libmono instead of mini and libmini.
18903
18904 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
18905
18906         * driver.c: provide the APIs for the embedding interface of the old jit.
18907
18908 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
18909
18910         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
18911
18912 2003-04-23  Martin Baulig  <martin@ximian.com>
18913
18914         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
18915
18916         * driver.c: Added `--debug' command line argument to enable
18917         debugging support.
18918
18919 2003-04-23  Martin Baulig  <martin@ximian.com>
18920
18921         * debug.[ch]: Removed.  The code is now in
18922         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
18923
18924         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
18925         last six months.
18926
18927 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
18928
18929         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
18930
18931 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18932
18933         * mini.c:
18934         (mini_cleanup): moved mono_runtime_cleanup call after the call to
18935         mono_domain_finalize.
18936         (mini_method_compile): use mono_method_profile* if the the option is
18937         enabled.
18938
18939 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
18942         methods with their wrapper.
18943
18944         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
18945         methods with their wrapper.
18946
18947         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
18948         their wrapper.
18949
18950         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
18951         wrapper.
18952
18953         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
18954         methods.
18955
18956 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
18957
18958         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
18959
18960 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
18961
18962         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
18963         of the mempool. This is slightly faster and uses less memory
18964
18965 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
18966
18967         * mini.c: avoid O(n) allocation for variables.
18968
18969 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
18970
18971         * mini.c: handle items on the stack after inlining methods.
18972
18973 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
18974
18975         * mini.c: make the method->opcode optimization dependent
18976         on MONO_OPT_INSTRINS and do it lazily.
18977
18978 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
18979
18980         * driver.c: print overall results at the end of regression run.
18981
18982 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
18983
18984         * inssel.brg: don't overwrite symbolic registers.
18985
18986 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
18987
18988         * inssel-x86.brg: fix conversion from long to float.
18989
18990 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
18991
18992         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
18993
18994 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
18997
18998         * driver.c: Added --print-vtable option as in the old JIT.
18999
19000 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19001
19002         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19003
19004 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19005
19006         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19007
19008 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19009
19010         * mini.c regalloc.c regalloc.h: Fix memory leak.
19011
19012 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19013
19014         * aot.c (mono_aot_get_method): register all used strings
19015
19016 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19017
19018         * mini.c: always intern strings references with ldstr at compile time.
19019
19020 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19021
19022         * Makefile.am: add BUILT_SOURCES.
19023
19024 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19025
19026         * driver.c: give a better error message when the assembly to execute
19027         doesn't have an entry point.
19028
19029 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
19030
19031         * Makefile.am: added hack for automake
19032
19033         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
19034         correct sematics.
19035
19036         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
19037
19038 22003-04-07  Martin Baulig  <martin@ximian.com>
19039
19040         * Makefile.am: Added Makefile.am.
19041
19042         * debugger-main.c: Removed, this is now in the debugger where it
19043         belongs.
19044
19045         * mini.pc.in: Call this package `mini' for the moment.
19046
19047
19048
19049
19050
19051
19052
19053
19054
19055
19056
19057
19058
19059
19060