Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / mini / ChangeLog
1
2 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
3
4         * jit-icalls.c: adjusted for the array API changes.
5
6 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
7
8         * iltests.il.in: Disable the fconv_to_i test on sparc too.
9
10 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
11
12         * debugger-agent.c: Simplify the way breakpoints are processed by removing
13         the 'pending' flag. This fixes support for appdomains too.
14
15
16 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
17
18         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
19
20 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
21
22         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
23         when using LLVM, LLVM generates it itself when needed.
24
25         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
26
27         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
28         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
29         OP_ANDNPS/OP_ANDNPD.
30
31 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
32
33         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
34         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
35         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
36
37 2010-03-11  Martin Baulig  <martin@ximian.com>
38
39         * debugger-agent.c (type_commands): Add NULL check to
40         `CMD_TYPE_GET_SOURCE_FILES'.
41
42 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
43
44         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
45
46 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
47
48         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
49         #586664.
50
51         * iltests.il.in: Add a test.
52
53 2010-03-05  Martin Baulig  <martin@ximian.com>
54
55         Add support for aborting invocations.
56
57         * debugger-agent.c
58         (InvokeData): Added `InvokeData *last_invoke'.
59         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
60         added a new `invoke' field to keep the `InvokeData *' throughout
61         the invocation.
62         (ErrorCode): Added `ERR_NO_INVOCATION'.
63         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
64         (mono_debugger_agent_handle_exception): Don't report any exception
65         if an abort was requested.
66         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
67         a thread abort if necessary.
68         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
69
70 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
71
72         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
73         so we can release the whole list and not just the first one. Free
74         it in more places as well.
75
76 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
77
78         * method-to-ir.c: Revert r153222 as it doesn't belong here.
79
80 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
81
82         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
83
84 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
85
86         * driver.c: report also other misc build options.
87
88 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * method-to-ir.c: Generate better code for the NewObject
91         intrinsic.
92         
93 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
94
95         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
96         is disabled. Fixes #582322.
97
98         * iltests.il.in: Add a test.
99
100 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
101
102         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
103         the handling of obj->synchronization == null and owner != current thread to
104         mono_monitor_exit ().
105
106         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
107
108
109 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
110
111         * mini.c: change the way emulated opcode info is stored and save about
112         4 KB of runtime memory.
113
114 2010-03-04  David S. Miller  <davem@davemloft.net>
115
116        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
117        that don't provide the siginfo in the second signal handler argument
118        are buggy, and this has been fixed for years.
119        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
120        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
121
122 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
123
124         * aot-runtime.c (find_symbol): Fix a leak.
125         (decode_patch): Ditto.
126
127 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
128
129         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
130
131 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
132
133         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
134
135 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
136
137         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
138
139 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
142         to check for errors, it's enough to create the metadata open.
143
144         Fixes #562150
145
146 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
147
148         * trace.c|h:
149         * mini-exceptions.c: Add support for printing stack traces when handling
150         exceptions, and when printing exceptions thrown while tracing also print
151         the exception message.
152
153 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
154
155         * trace.c: We need to parse exclude tokens ('-') before string tokens,
156         since the exclude token is a valid string character.
157
158 2010-03-02  Levi Bard  <levi@unity3d.com>
159
160         * debugger-agent.c: Invalidate thread stacks on domain unload.
161
162 2010-03-02  Mark Probst  <mark.probst@gmail.com>
163
164         * method-to-ir.c: Emit dummy_use for stored reference after write
165         barriers to make sure the object is pinned if the GC interrupts
166         before the write barrier is done.
167
168 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
169
170         * cpu-<ARCH>.md: dummy_use was missing src1:i.
171
172 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
173
174         * debugger-agent.c: Add a log message printing the protocol version.
175
176 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
177
178         * debugger-agent.c: Add a new command to communicate the protocol version used
179         by the client. This could be used to allow newer runtimes to communicate with
180         older clients.
181
182 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
183
184         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
185
186 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
187
188         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
189         type.
190
191 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
192
193         * mini-arm.c: make the arm cpu arch configurable with the
194         MONO_CPU_ARCH env var (for example: "armv4 thumb").
195         Bug #584198.
196
197 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
198
199         * mini.c, mini.h, driver.c: added the --jitmap option to enable
200         support for the perf tool on Linux.
201
202 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
203
204         * method-to-ir.c: make string.InsertenalSetChar() specialization
205         effective.
206
207 2010-03-01  Robert Jordan  <robertj@gmx.net>
208
209         * Makefile.am: fix the non-static build.
210
211 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
212
213         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
214         here.
215
216 2010-02-26  Robert Jordan  <robertj@gmx.net>
217
218         * tasklets.c (continuation_store): Return from an error condition
219         immediately.
220
221 2010-02-26  Martin Baulig  <martin@ximian.com>
222
223         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
224
225         * debug-mini.c
226         (MonoDebuggerThreadInfo): Added `internal_flags'.
227         (MonoDebuggerInternalThreadFlags): New enum.
228         (_mono_debugger_throw_exception): Don't signal the debugger if a
229         type abort was requested.
230         (_mono_debugger_unhandled_exception): Likewise.
231         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
232         (mono_debugger_runtime_invoke): If the debugger requested a thread
233         abort during the invocation, reset it here.
234
235 2010-02-26  Martin Baulig  <martin@ximian.com>
236
237         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
238         instead of `MonoThread *'.
239
240 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
241
242         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
243         code offsets table, as it is mostly sorted.
244
245 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
246
247         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
248         Fixes #582991.
249
250 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
251
252         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
253
254 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
255
256         * Makefile.am: build the new ABI version of the libmono library.
257         * debugger-agent.c, mini.c: fix warnings with the new API.
258         * jit.h: don't depend on glib.h being included.
259
260 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
261
262         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
263
264 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
265
266         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
267         ThreadStatic variables.
268
269 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
270
271         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
272         data is not freed yet. Fixes #582460.
273
274 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
275
276         * debugger-agent.c: Add support for the caught/uncaught flags on exception
277         event requests. Bump protocol minor version.
278
279 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
280
281         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
282
283 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
284
285         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
286         #581950.
287
288         * iltests.il.in: Add a test.
289
290 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
291
292         * mini.c (inline_method): Check for loader errors.
293
294 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
295
296         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
297         instead of mono_method_get_header as it doesn't decode locals
298         so the called method can have unresolved dependencies that will only
299         be satisfied after the current method is JIT'd.
300
301         Fixes #550968.
302
303 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
304
305         * basic.cs (test_0_div_opt): Speed this up a bit.
306
307 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
308
309         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
310
311         * mini.c (mono_jit_create_remoting_trampoline): Call
312         mono_create_specific_trampoline () instead of
313         mono_arch_create_specific_trampoline ().
314
315         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
316
317 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
318
319         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
320         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
321
322         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
323
324         * mini-amd64.c: Fix DISABLE_JIT support.
325
326 2010-02-20  Geoff Norton  <gnorton@novell.com>
327
328         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
329
330 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
331
332         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
333         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
334         CATCH_TXT. Send normal exception events for unhandled exceptions too.
335         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
336         handle_exception.
337
338 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
339
340         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
341         edx/ecx too. This is needed to support OP_SEQ_POINT.
342
343 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
344
345         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
346
347         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
348
349 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
350
351         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
352         LLVM+AOT+exceptions, not enabled yet.
353
354 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
355
356         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
357
358 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
359
360         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
361         xdebug info for these.
362
363         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
364         in a few places.
365
366         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
367         not used yet.
368
369 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
370
371         * aot-compiler.c (load_profile_files): Update after the profiler changes.
372
373 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
374
375         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
376         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
377
378         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
379         for mtouch.
380
381 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
382
383         * debugger-agent.c: handle incomplete reads and EINTR in
384         recv()/send(). This could have been causing random
385         disconnections.
386
387 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
388
389         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
390         points.
391
392         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
393         so they have small offsets. Fixes #566311.
394
395 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
398
399 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
400
401         * mini-amd64.c: Remove the special casing of byref in a few places now that
402         mini_type_get_underlying_type () handles it.
403
404         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
405         by returning native int. Fixes #577984.
406
407 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
408
409         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
410         a macro.
411
412         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
413         of putting the clause itself.
414
415         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
416
417 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
418
419         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
420         might be unaligned.
421
422 2010-02-10  Geoff Norton  <gnorton@novell.com>
423
424         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
425
426 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
427
428         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
429         llvm methods too.
430
431         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
432         it is not an LLVM generated symbol.
433
434         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
435
436         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
437         implementation in gshared mode because it causes regressions.
438
439         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
440
441         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
442         should be done by the caller.
443
444         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
445
446         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
447
448         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
449         since mono_jit_info_table_find () doesn't do it anymore.
450
451         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
452         instead of mono_jit_info_table_find ().
453
454 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
455
456         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
457
458         * aot-compiler.c (encode_method_ref): Update after the removal of
459         mono_gc_get_managed_allocator_type ().
460
461         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
462         Fixes #564538.
463
464 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
465
466         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
467         generic params as well.
468         (handle_isinst): Ditto.
469
470         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
471         instead of always calling an icall.
472
473         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
474         computing the size of the got.
475
476         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
477         when using LLVM. Instead of emitting it as an LLVM method, emit it using
478         the assembly directive '.set' so it points to the first LLVM emitted method.
479
480 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
481
482         * mini.c (mini_method_verify): Report the method which failed to verify.
483
484 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
485
486         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
487         to avoid JIT'ng dead basic blocks. This is the same behavior as the
488         runtime MS verifier.
489
490 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
491
492         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
493         #561962.
494
495 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
496
497         * mini-llvm.c: Init the jit module only when first JITting.
498
499         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
500
501         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
502
503         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
504         replaced with the real got.
505
506         * debugger-agent.c (type_commands): Return the enumness if the type as well.
507
508         * image-writer.c: Reduce the amount of #ifdefs a bit.
509
510         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
511         llvm on darwin/arm.
512
513         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
514
515         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
516         global.
517
518 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
519
520         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
521         (mono_llvm_emit_method): Fix unaligned stores too.
522
523         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
524         so async stack walks don't crash.
525
526 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
527
528         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
529         was not patched if the callee needed an rgctx trampoline.
530
531 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
532
533         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
534         vtable address in AOT code.
535
536 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
537
538         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
539         MonoInst's.
540
541 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
542
543         * genmdesc.pl: remove dependency on external cpp.
544
545 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
546
547         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
548         using LLVM, its not needed, and abcrem can't handle it.
549
550 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
551
552         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
553         it easier to group instructions and reduce duplication.
554
555 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
556
557         * decompose.c: Move the array/soft float decompose routines here from
558         method-to-ir.c.
559
560         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
561
562 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
563
564         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
565         to tell LLVM that the got is constant, not used yet.
566
567         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
568
569 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
570
571         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
572         managed wrappers.
573
574 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
575
576         * aot-compiler.c (add_wrappers): Commit the hack which generates
577         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
578         custom attribute.
579
580 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
581
582         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
583         a fault, only used by the LLVM backend.
584
585         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
586         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
587
588         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
589         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
590
591         * mini-llvm.c: Only generate volatile loads from load instructions which have
592         the MONO_INST_FAULT flag set.
593
594 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
595
596         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
597         64 bit platforms.
598
599 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
600
601         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
602         sequence points. Fixes #571236.
603
604 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
605
606         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
607         end of the appdomain unload process, after assemblies have been unloaded.
608         Fixes #574842.
609
610 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
611
612         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
613         works.
614
615         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
616         Fixes #573988.
617
618 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
619
620         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
621
622 2010-01-26  Geoff Norton  <gnorton@novell.com>
623
624         * aot-compiler.c: Fix a logic error introduced when guarding against enums
625         with struct marshalability.
626
627 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
630         it supports class names as well.
631
632         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
633         needed by the GC map code.
634
635         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
636         flags if needed.
637
638         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
639         if cfg->init_ref_vars is set.
640
641         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
642         cfg->disable_initlocals_op_refs is set.
643
644         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
645         using liveness info if cfg->compute_precise_live_ranges is set.
646
647         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
648         volatile variables correctly. Add comments about the live ranges. Not enabled
649         yet.
650
651 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
652
653         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
654         0x2a into them in method prologs.
655
656         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
657
658 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
659
660         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
661         classes, since llvm is compiled with -fno-rtti.
662
663         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
664
665         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
666         llvm does not require it.
667
668         * aot-runtime.c (load_method): Print the full name of the last aot method.
669
670 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
671
672         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
673         thread has not fully started yet.
674
675 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
676
677         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
678
679 2010-01-21  Miguel de Icaza  <miguel@novell.com>
680
681         * driver.c: Do not abort if LLVM is not supported, print a
682         warning and add the information to the Mono JIT information.
683
684 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
685
686         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
687         using explicit null checks.
688
689 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
690
691         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
692         related code.
693
694         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
695         () in one place.
696         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
697         its no longer needed.
698
699         * method-to-ir.c (mono_method_to_ir): Fix a warning.
700
701         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
702         define for platforms still using it (s390). Get rid of the
703         mono_arch_get_throw_exception_by_name () routines on all other platforms.
704
705         * exceptions-x86.c: Rework the throw trampolines so there is only one function
706         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
707
708         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
709         the caller pushed the arguments.
710
711         * mini-llvm.c: Enable throwing exceptions on x86.
712
713         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
714         "Thread (nil) may have been prematurely finalized" messages if this is called
715         on a thread not registered with the runtime.
716
717         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
718
719 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
720
721         * jit-icalls.c (mono_array_new_3): New jit icall.
722
723         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
724
725         * arrays.cs: Add a test for 3 dimensional arrays.
726
727 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
728
729         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
730         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
731         used.
732
733         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
734         thrown on x86.
735
736         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
737
738         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
739
740         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
741
742 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
743
744         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
745           HOST_WIN32.  Also including winsock2. to define struct in_addr.
746
747         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
748
749         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
750
751         Code is contributed under MIT/X11 license.
752
753 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
754
755         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
756
757         * branch-opts.c (mono_optimize_branches): Honor the new flag.
758
759         * mini.c (mini_method_compile): Set the new flag when running under the
760         debugger.
761
762 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
763
764         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
765         a ref/noref value + a global pin flag, so parts of stack frames can still be
766         precisely marked even if they include stuff which needs pinning. Improve logging.
767         Fix many bugs. Not enabled yet.
768
769         * gc-test.cs: Add a few tests.
770
771         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
772         the normal -v options. Avoid propagating liveness information through bblocks
773         which end with a NOT_REACHED opcode.
774
775         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
776         after cfg has been freed.
777
778 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
779
780         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
781         if a clause is skipped because it uses the exception object, since it could
782         have caught the exception.
783
784         * exceptions.cs: Add a test.
785
786 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
787
788        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
789
790         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
791         ICollection<T> wrappers.
792
793 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
794
795         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
796
797 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
798
799         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
800         NOMAP32BIT or optimize_for_xen is set.
801
802 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
803
804         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
805         mono_metadata_str_hash () instead.
806
807 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
808
809         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
810         sizeof (void*).
811
812         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
813
814 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
815
816         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
817         flag is set.
818
819         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
820         throwing code correctly.
821
822         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
823
824 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
825
826         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
827         ftnptrs created by us, handle RGCTX_FETCH correctly.
828         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
829
830         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
831         ftnptr added by mono_aot_get_named_code ().
832
833 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
834
835         * mini-arm.c: Fix a few LLVM problems.
836
837         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
838
839 2010-01-13  Mark Probst  <mark.probst@gmail.com>
840
841         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
842         AOT compiling.
843
844 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
845
846         * jit.h, method-to-ir.c: added ability to set the policy for
847         inserting breakpoints from the break IL instruction or the
848         Debugger.Break () API call.
849
850 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
851
852         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
853         assemblies need to be eagerly loaded.
854
855 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
856
857         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
858
859 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
860
861         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
862         an argument which matches any exception.
863
864 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
865
866         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
867         optimization if the called method is gshared and marshalbyref, since gshared
868         methods can' have wrappers. Fixes #569390.
869
870         * generics.cs: Add a test.
871
872 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
873
874         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
875         callable from gdb.
876
877 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
878
879         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
880
881 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
882
883         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
884         since it is not supported in win2000.
885
886 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
887
888         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
889         error if loading an assembly fails.
890         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
891
892         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
893         if exists.
894
895         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
896         compiled methods.
897
898         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
899
900         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
901         is not supported yet.
902
903         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
904
905 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * method-to-ir.c: All types with variant arguments must fallback to the
908         slow path. This makes cast of variant delegates work.
909
910         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
911         argument that is set to TRUE is the returned vtable slot is for a variant
912         interface. Changed a g_print + g_assert_not_reached to a g_error.
913
914         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
915         a similar fashion of generic virtual methods.
916
917 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
918
919         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
920         when cfg is null.
921
922         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
923         method using a variance aware function.
924
925         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
926
927 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
928
929         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
930         do an icall for now.
931
932 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
935         If LLVM decides to set the code model to Large, reset it to Default.
936
937 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
938
939         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
940         stripped binaries as well.
941
942 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
943
944         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
945         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
946
947         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
948         reg.
949
950 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
951
952         * mini.c (mini_method_compile): Extract the JIT info creation code into a
953         separate function.
954
955         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
956         as the type info to llvm.eh.selector.
957         (exception_cb): Use the type info for filling out some fields of
958         MonoJitExceptionInfo like the flags and the exception class. This is needed
959         because the LLVM produced exception handling clauses might not match the original
960         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
961
962         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
963         separate function. Add an extra argument which returns the type infos
964         corresponding to the exception clauses.
965
966         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
967         exception handling clauses.
968
969 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
970
971         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
972         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
973         to fix an AOT case.
974
975 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
976
977         * mini.c (mono_compile_is_broken): Skip methods from serialization's
978         internal assembly.
979
980 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
981
982         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
983         llvm code.
984
985 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
986
987         * mini.c (mini_method_compile): Verify the method before calling
988         mono_compile_create_vars as this might crash since it uses method
989         information.
990
991         Fixes #560196.
992
993 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
994
995         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
996         one case if AOTing, since the class might not be a concrete class.
997
998 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
999
1000         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1001         functions which are now defined in mempool-internals.h.
1002
1003         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1004
1005         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1006
1007 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1008
1009         * mini.c:
1010         * method-to.ir.c:
1011         * mini-*.c: Properly handle generic enums.
1012
1013         Fixes #566294
1014
1015 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1016
1017         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1018         in a few more places.
1019
1020 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1023         nullable parameters. Fixes #567351.
1024
1025 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1028
1029 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1032         mono_get_generic_context_from_code () call.
1033
1034         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1035
1036 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1039         needed.
1040
1041 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1042
1043         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1044         mono_method_get_signature returns NULL. Fix #567084
1045
1046 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1049         instead of once for each module.
1050
1051 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * debugger-agent.c (ss_start): Implement step over for the last sequence
1054         point in methods.
1055
1056         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1057         have the STEP_LOC flag set.
1058
1059         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1060         fails. Fixes #566689.
1061
1062 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * mini.c (mono_add_seq_point): New helper function.
1065         (mono_save_seq_point_info): New function to save sequence point info, extracted
1066         from mini_method_compile ().
1067
1068         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1069
1070         * mini.h (MonoSeqPointInfo): New structure containing information about
1071         the sequence points of a JITted method.
1072         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1073         'bucket' field.
1074
1075         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1076         point information is stored, use a MonoSeqPointInfo structure instead of a
1077         GPtrArray. For each seq point, compute a list of successor seq points.
1078
1079         * debugger-agent.c: Use the successor list to implement step-over more
1080         efficiently: instead of single stepping until a different line/IL offset is
1081         reached, place breakpoints into all successor seq points.
1082
1083         * mini.h: Bump AOT file format version.
1084
1085 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1088
1089         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1090
1091 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1094         build.
1095
1096 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1099         alloca as g_malloc is not signal safe.
1100
1101 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1102
1103         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1104         VALGRIND_DISCARD_TRANSLATIONS.
1105
1106         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1107         checks, they are no longer needed.
1108
1109         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1110         a function into a sigctx which can handle function pointers.
1111
1112         * mini-ppc.c: Implement soft debugger support on ppc64.
1113
1114         * mini-ppc.c: Implement soft debugger support.
1115
1116 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1117
1118         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1119
1120 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1121
1122         * mini.c (mono_get_runtime_build_info): include Mono version in
1123         the returned value.
1124
1125         * driver.c (mono_main): VERSION is now included in the string
1126         returned from mono_get_runtime_build_info()
1127
1128 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1131         signatures. Fixes #565143.
1132
1133         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1134
1135 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1138
1139 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1142         making max stack 10x smaller.
1143
1144 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1145
1146         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1147
1148 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1149
1150         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1151
1152 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1153
1154         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1155         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1156
1157         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1158
1159         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1160
1161         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1162
1163         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1164         the compilation.
1165
1166 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1167
1168         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1169         raise an invalid program exception.   
1170
1171         For other opcodes that we might not handle use a g_warning and
1172         raise the exception.   Beats termination.
1173
1174         Fixes #561724
1175
1176 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1179
1180         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1181         by merging the LLVM and !MAP_32BIT cases.
1182
1183 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1184
1185         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1186         sigctx being passed in, as we have no CONTEXT available in the APC.
1187
1188         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1189         for now.
1190
1191         Code contributed under MIT/X11 license.
1192
1193 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1194
1195         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1196         in the LLVM backend on AMD64.
1197
1198         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1199         FDE.
1200
1201         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1202
1203         * mini-llvm.c: Export mono_personality for AOT.
1204
1205         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1206
1207         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1208         implicit exception can occur.
1209
1210         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1211         OP_IMPLICIT_EXCEPTION instruction.
1212
1213         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1214
1215         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1216
1217         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1218         inside a protected block.
1219
1220         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1221         trampolines doesn't include the argument.
1222
1223         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1224         trampolines on amd64.
1225
1226         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1227         of RDI.
1228
1229         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1230         disabled for methods with clauses.
1231
1232         * mini-llvm.c: Enable support for catch clauses.
1233
1234         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1235         end of an LLVM compiled finally clause.
1236         (mono_handle_exception_internal): Save the exception handling state in TLS
1237         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1238         resume unwinding from that point.
1239
1240         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1241         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1242         to obtain the addresses of the exception handling regions.
1243
1244         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1245         finally clauses are supported.
1246
1247         * mini.c (mini_method_compile): Add support for LLVM code with exception
1248         handlers.
1249
1250 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1251
1252         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1253         proper size.
1254
1255 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1258         as a primitive type.
1259
1260 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1263         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1264         #564000.
1265
1266 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1267
1268         * method-to-ir.c (mini_redirect_call): do not redirect the
1269         InternalAllocateStr internal call if string profiling is enabled.
1270
1271 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1272
1273         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1274         generic methods.
1275
1276         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1277         unwind.h header file.
1278
1279         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1280         newer valgrind versions seems to handle this fine.
1281
1282 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1283
1284         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1285         on the debugger thread.
1286
1287 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1290
1291         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1292
1293         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1294
1295         * cpu-<ARCH>.md: Make call_handler clob:c.
1296
1297         * mini.c: Reenable SSA for methods with clauses.
1298
1299         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1300         as it causes failures on x86.
1301
1302 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1303
1304         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1305         returns NULL (e.g. a bad assembly).
1306
1307 2009-12-08  Geoff Norton  <gnorton@novell.com>
1308
1309         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1310         stepping out into native code.  There were issues with nested invokes
1311         like .cctors.
1312
1313 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * mini.c (mini_method_compile): Do the disable_llvm checks early
1316         and avoid the LLVM compile pass if the checks fail.
1317
1318         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1319
1320         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1321         LLVM optimizations don't try to remove them.
1322
1323         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1324         different file so the original remains.
1325
1326 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1329
1330         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1331
1332         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1333         support for non-inline unwind descriptors.
1334
1335 2009-12-07  Geoff Norton  <gnorton@novell.com>
1336
1337         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1338         the interrupt_count slightly differently.  Native threads were never
1339         marked as resumed.
1340
1341 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1344         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1345         yet generate this info.
1346
1347         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1348
1349         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1350         client can distinguish between intptrs and longs.
1351
1352 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1355         blob.
1356
1357         * aot-runtime.c (load_function): Update after the change above.
1358
1359         * mini.h: Bump AOT file format version.
1360
1361         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1362         if the delegate class is dynamic.
1363
1364         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1365         in gshared code too using the new rgctx info type
1366         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1367
1368 2009-12-04  Geoff Norton  <gnorton@novell.com>
1369
1370         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1371         we need to track the original suspend count so the thread properly
1372         wakes up in resume_thread.
1373
1374 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1377         code.
1378
1379         * generics.cs: Add a test.
1380
1381         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1382         is 0. Simplify a lot of code using this.
1383
1384         * mini-trampolines.c (mono_delegate_trampoline): Call
1385         mono_create_static_rgctx_trampoline () before saving the final address in
1386         delegate->method_code, to avoid calling it each time a delegate is first called.
1387
1388         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1389         which need static rgctx trampolines.
1390
1391         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1392         keyed on the method+addr pair, since addr could be either the method addr or
1393         an unbox trampoline in the AOT case. Fixes #560246.
1394
1395 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1398         place it was called before too.
1399
1400 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1403         if no security manager is present, to speed up the AOT case. Call
1404         mono_class_vtable () full with raise_on_error == TRUE instead.
1405
1406 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1409         the local optimization passes can take its result into account. Fixes
1410         #559876.
1411
1412         * exceptions.cs: Add a test.
1413
1414 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1415
1416         This patch is contributed under the terms of the MIT/X11 license
1417
1418         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1419
1420 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1423
1424         * debugger-agent.c: Rework the handling of stack traces of running threads to
1425         avoid crashes if compute_frames () tries to walk the stack of running thread.
1426
1427         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1428
1429         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1430
1431         * mini.h (StackFrameInfo): Add an 'lmf' field.
1432
1433 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * debugger-agent.c (suspend_current): Always set really_suspended.
1436
1437         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1438
1439         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1440
1441 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1444         really suspended.
1445
1446 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1449
1450 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1451
1452         * mini-trampolines.c: Fix MSVC build.
1453
1454 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1455
1456         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1457
1458 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1461         the instruction following an OP_FCOMPARE is optimized away.
1462
1463 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1466         emit_autoreg () into this arch-specific function.
1467
1468         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1469         code, it is no longer needed.
1470
1471         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1472
1473         * mini.h: Bump AOT file format version.
1474
1475         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1476         using the sorted_code_offsets array, instead of reading it from the
1477         exception debug info.
1478         (load_method): Call mono_aot_find_jit_info instead of
1479         decode_exception_debug_info ().
1480
1481         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1482         LLVM compiled as a flag.
1483
1484 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * debugger-agent.c (resume_thread): Fix a warning.
1487
1488         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1489         generated.
1490
1491 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1494         contents to MonoAotFileInfo.
1495
1496 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1499         Put all binary data into a giant blob, similarly to the way .net assemblies
1500         store binary data. Emit offset tables in a compact form to reduce their size.
1501
1502         * mini.h: Bump AOT file format version.
1503
1504         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1505         places.
1506
1507         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1508         avoid linear searches at runtime.
1509
1510         * aot-runtime.c (find_symbol): Update this to use the hash.
1511
1512         * mini.h: Bump AOT file format version.
1513
1514 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1517         container.
1518
1519         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1520         too.
1521
1522         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1523         the distribution of got slot types.
1524
1525         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1526
1527         * method-to-ir.c: Add support for generating explicit null checks.
1528
1529 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1532         on a random thread if possible.
1533
1534         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1535         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1536         correctly.
1537
1538         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1539         regs. Pass the real size of the regs array to mono_unwind_frame ().
1540
1541         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1542         ones instead.
1543
1544 2009-11-24  Geoff Norton  <gnorton@novell.com>
1545
1546         * mini-darwin.c: Work around apple bug rdar://7209349  See
1547         http://openradar.appspot.com/7209349 for details.  Synopsis,
1548         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1549         never been initialized before.
1550
1551 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1554
1555         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1556
1557 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1560         OP_SHL_IMM is not 32 bit.
1561
1562 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1565
1566 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1569         encountered.
1570
1571         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1572         > 0 since some threads can resume if their resume_count is > 0.
1573         (invoke_method): Avoid reading freed memory.
1574
1575         * debugger-agent.c (process_suspend): Extract the suspend code from
1576         process_single_step_inner () to a separate function. Rework the code to prevent
1577         races between this function and thread interrupts.
1578
1579         * debugger-agent.c (suspend_current): Check the resume_count field instead
1580         of resume_one so suspends+resumes during single threaded invokes work
1581         correctly.
1582
1583 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
1586         to make the generated code smaller.
1587
1588         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
1589         sequence generated by recent LLVM versions.
1590
1591         * mini-llvm.c: Add support for a few simple cases which weren't supported
1592         before.
1593
1594         * mini-trampolines.c (mono_magic_trampoline): Don't call
1595         mono_arch_get_vcall_slot () when llvm is enabled.
1596
1597         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
1598
1599         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
1600         into a new function called common_call_trampoline () which is used by the
1601         llvm vcall trampoline as well.
1602
1603         * debugger-agent.c: Implement single threaded invokes.
1604
1605         * debugger-agent.c: Revert change which broke the agent on linux.
1606
1607         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
1608         #557606.
1609
1610         * generics.cs: Add a test.
1611
1612 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * debugger-agent.c: Fix the cygwin build.
1615
1616 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * cprop.c: Remove this unused file.
1619
1620 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1623         #557262.
1624
1625         * basic.cs: Add a test.
1626
1627 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1630         in one more place.
1631
1632 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1633
1634         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1635         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1636         it. Use this flag to control llvm related code paths instead of #ifdef
1637         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1638         AOT code.
1639
1640         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1641
1642         * mini.h: Bump AOT file format version.
1643
1644         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1645         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1646
1647         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1648         was used as an assembly filter.
1649
1650 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * unwind.c: Fix support for ppc.
1653
1654         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1655         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1656
1657 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1660         port.
1661         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1662         added by the ps3 changes.
1663
1664 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1665
1666         * mini-gc.c: Resurrect this, so at least it compiles.
1667
1668         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1669
1670 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1671
1672         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1673         create_event_list () so assembly filters can be used.
1674
1675         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1676         from the LMF.
1677
1678 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1681         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1682         is disabled.
1683
1684         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1685         classes for char/bool too.
1686
1687         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1688
1689         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1690         used.
1691
1692         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1693         Fix warnings.
1694
1695 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1696
1697         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1698         
1699         Code contributed under MIT/X11 license.
1700
1701 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1702
1703         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1704         threads in native code work.
1705
1706         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1707         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1708         version.
1709
1710 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1711
1712         * debugger-agent.c: Implementation for Windows platform.
1713
1714         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1715         primitives. Use SEH to implement breakpoints and single stepping.
1716
1717         * mini-x86.h: Enable soft debugger on Windows.
1718
1719         Code contributed under MIT/X11 license.
1720
1721 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1722
1723         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1724         under XEN. Fixes #522894.
1725
1726         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1727
1728         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1729         interface calls in LLVM AOT code.
1730
1731         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1732         is found.
1733
1734         * mini-llvm.c: Add support for OP_VPHI.
1735
1736         * objects.cs: Add a test.
1737
1738 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1741         this is called on the debugger thread.
1742
1743 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * mini-llvm.c: Add soft-float support.
1746
1747         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1748         FCALL which returns an R4.
1749
1750         * driver.c (mono_main): Add a missing '\n'.
1751
1752         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1753         platforms which doesn't support the LLVM IMT trampoline.
1754
1755 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1758
1759         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1760
1761         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1762         virtual calls.
1763
1764         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1765
1766 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1769         Instead of emitting a method_order table, sort the contents of the code_offsets
1770         table and do a binary search in the sorted table. The previous approach doesn't
1771         work with LLVM which emits methods in a arbitrary order.
1772
1773         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1774         in the .eh_frame section in ELF files.
1775
1776         * mini.h: Bump corlib file format version.
1777
1778         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1779
1780         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1781         LDMIA->LDM macro name change.
1782
1783 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1786         x86.
1787
1788         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1789         SVN.
1790
1791         * aot-compiler.c: Ditto.
1792
1793         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1794         &align to mini_type_stack_size_full ().
1795
1796         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1797
1798         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1799
1800 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * mini-arm.c: Compute the stack space used by arguments using
1803         mini_type_stack_size_full ().
1804
1805 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * optflags-def.h: Remove dead TREEPROP optimization.
1808
1809 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1810
1811         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1812
1813         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1814
1815 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * driver.c (mono_jit_parse_options): New public API function to parse options
1818         as done by the runtime executable.
1819
1820         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1821         when handling named arguments.
1822
1823 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1826         for passing small vtypes in registers, make the CallInfo structures more
1827         similar to the code on the other platforms.
1828
1829         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1830         the code in the prolog requires it.
1831
1832 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1835         (koush@koushikdutta.com).
1836
1837         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1838         where the thunk memory should be allocated from. Fixes appdomain unloading
1839         on arm.
1840
1841 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1844         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1845
1846 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1849         AOT, as it is not implemented yet.
1850
1851         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1852
1853 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1854
1855         * debugger-agent.c: Fix windows build.
1856
1857 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1860         after the client connects/disconnects.
1861
1862         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1863         when an exception of a given type is thrown.
1864
1865         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1866         only on an uncaught exception.
1867
1868         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1869
1870         * debugger-agent.c: Add a 'launch' option.
1871
1872 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * debugger-agent.c: Add a 'timeout' option.
1875
1876 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1879         the JDWP agent.
1880
1881 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * debugger-agent.c (set_breakpoint): Emit a log message.
1884
1885 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * mini-arm.c: Fix the arm build.
1888
1889 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1890
1891         * aot-compiler.c: don't leak the value returned from
1892         mono_type_full_name().
1893
1894 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1895
1896         * debugger-agent.c: defer including mono-mutex.h until we know the
1897         agent is supported.
1898
1899 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1900
1901         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1902         of pthreads directly.
1903
1904         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1905         exception handlers. Pass info argument.
1906
1907         * mini.h: Adjust signatures of soft debugger functions to pass void*
1908         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1909
1910         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1911         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1912         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1913         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1914
1915         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1916
1917         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1918         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1919         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1920         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1921
1922         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1923
1924         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1925
1926         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1927
1928         * mono-semaphore.h: Skeleton implementation for Windows.
1929
1930         Code contributed under MIT/X11 license.
1931
1932 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1933
1934         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1935
1936         Code contributed under MIT/X11 license.
1937
1938 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1939
1940         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1941
1942         Code contributed under MIT/X11 license.
1943
1944 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1945
1946         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1947         debug info to 100 because 10 still slows down gdb too much.
1948
1949         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1950         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1951         them in the wrappers.
1952
1953 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1956
1957         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1958
1959         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1960         function mono_aot_get_array_helper_from_wrapper ().
1961
1962         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1963         array helper methods.
1964
1965 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1966
1967         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1968         the value was loaded from memory.
1969
1970         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1971         the value was loader from there.
1972
1973         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1974         without constant swizzle.
1975
1976 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1977
1978         * mini-amd64.c: Put soft debugger functions behind a
1979         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1980
1981         * mini-amd64.h: disable the soft debugger in windows.
1982
1983         Code contributed under MIT/X11 license.
1984
1985 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1986
1987         * mini-x86.c: Put soft debugger functions behind a
1988         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1989
1990         Code contributed under MIT/X11 license.
1991
1992 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1993
1994         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1995         to mono_arch_find_jit_info_ext.
1996
1997         Code contributed under MIT/X11 license.
1998
1999 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2002
2003         * debugger-agent.c: Add support for filtering events by assemblies.
2004
2005         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2006         the agent is not enabled.
2007
2008 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2009
2010         * exceptions-x86.c: hopefully last change to fix the windows build.
2011         This one courtesy of Jonathan Chambers.
2012
2013 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2014
2015         * debugger-agent.c: remove unused function.
2016
2017 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2018
2019         * debugger-agent.c: add #ifdefs for a few header files.
2020         * mini-x86.h: disable the soft debugger in windows.
2021         Step 1 of 2 to make this compile on windows with gcc.
2022
2023 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2026         as it breaks the build.
2027
2028 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2029
2030         Merge the soft debugger branch.
2031
2032         * debugger-agent.h debugger-agent.c: New files containing the soft
2033         mode debugger module.
2034
2035         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2036         at the appropriate locations.
2037
2038         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2039         opcode.
2040
2041         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2042         enable/disable single stepping.
2043
2044         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2045         which returns all information in a StackFrameInfo structure, and can handle the
2046         LMF frames added by the debugger.
2047
2048         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2049         about an LMF frame.
2050
2051         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2052         walker function which works on a specific thread and passes a StackFrameInfo
2053         structure to its callback.
2054
2055         * mini.c (mini_init): Initialize the debugger agent.
2056
2057         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2058
2059         * mini-ops.h: Add OP_SEQ_POINT opcode.
2060
2061         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2062         arguments to the debugger agent.
2063
2064 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2067         speed things up.
2068
2069         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2070
2071         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2072
2073         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2074
2075         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2076         if needed.
2077         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2078         sets the IMT argument and makes a virtual call.
2079
2080         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2081
2082 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2085         the windows build.
2086
2087 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2090         runtime. Fixes #551228.
2091
2092 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2095
2096         * basic.cs: Add a test.
2097
2098         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2099         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2100         CONSTRAINED. Fixes #550964.
2101
2102         * generics.cs: Add a test.
2103
2104 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2105
2106         * mini-posix.c (add_signal_handler): Use
2107         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2108
2109 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2110
2111         Contributed under the terms of the MIT/X11 license by
2112         Jerry Maine <crashfourit@gail.com>.
2113
2114         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2115         sse4a for simd intrinsics.
2116
2117         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2118         sse4a for simd intrinsics.
2119
2120 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2123         instead of inst_p1 which is not the same on ILP32 platforms.
2124
2125 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2128         not the mscorlib one before calling mono_get_lmf_addr.
2129
2130         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2131         of the ip to the LMF.
2132
2133         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2134         immediate in the op->op_imm optimization.
2135
2136         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2137         understand. VTypes now work, but are not abi compliant, as they are
2138         split into 4 byte parts instead of 8.
2139         (emit_memcpy): Fix the unrolled case to work on the PS3.
2140
2141         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2142
2143         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2144         the default when static linking.
2145
2146         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2147
2148         * aot-compiler.c: Add an autoreg option to automatically register
2149         statically linked aot modules using ELF .ctors.
2150
2151         * genmdesc.pl: Add __ppc64__ to allowed defines.
2152
2153 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2156         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2157
2158 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2159
2160         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2161
2162 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2165         which will contain the domain where the method was found.
2166
2167         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2168         mini_jit_info_table_find ().
2169
2170         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2171
2172         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2173
2174 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2177         set, its not supported yet.
2178
2179 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2182         iface wrapper is not found.
2183         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2184
2185 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2188         which have a different name.
2189
2190         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2191         wrappers and Array.GetGenericValueImpl ().
2192
2193         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2194         because of the change above.
2195
2196         * generics.cs: Add a test for full aot + generic array ifaces.
2197
2198 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2199
2200         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2201         that hides the previous one.
2202
2203 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2206         marshalled. Fixes #541623.
2207
2208 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2211
2212 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2215
2216 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2217
2218         * mini-posix.c (sigprof_signal_handler):
2219         Implemented support for building stat call chans in different ways.
2220
2221 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2222
2223         * mini-exceptions.c (mono_find_jit_info):
2224         Also check that a jit info has been found (fixes a profiler crash).
2225
2226 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2227
2228         * mini.c (mono_codegen):
2229         Call mono_profiler_code_buffer_new with correct code address.
2230
2231 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2232
2233         * driver.c (mono_main): Change the date in the copyright.
2234
2235 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2236
2237         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2238         allocator in shared generic code for open classes, because we
2239         can't get those classes' vtables.  We need to make managed
2240         allocators not depend on the vtable at compile-time to solve this.
2241
2242 2009-10-13  Martin Baulig  <martin@ximian.com>
2243
2244         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2245         `const guint8 *trampoline' argument; send both the old and the new
2246         notification.
2247
2248 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2251         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2252         (can_marshal_struct): Skip structures with auto layout.
2253
2254         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2255
2256 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2259         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2260         a variable to hold the stack slot used by the int<->float conversion opcodes.
2261
2262         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2263
2264 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2267         when using full-aot.
2268
2269 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2272         each instance of Comparer<T>.
2273
2274         * generics.cs: Add a new test.
2275
2276 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * driver.c (parse_debug_options): Add a 'gdb' option.
2279
2280         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2281
2282         * image-writer.c: Add support for emitting the image into a memory buffer.
2283
2284         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2285
2286         * aot-compiler.c: Add support for registering debug info with GDB using the
2287         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2288         MONO_XDEBUG to 'gdb'.
2289
2290 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2293         gdb mode.
2294
2295 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2296
2297         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2298         can be used to set breakpoints in gdb.
2299
2300         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2301         segment to an absolute address.
2302
2303 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2304
2305         * method-to-ir.c: Use the managed array allocator method if
2306         available.
2307
2308 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2309
2310         * aot-compiler.c : Fix the MSVC builds
2311
2312         Code is contributed under MIT/X11 license.
2313
2314 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2315
2316         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2317         avoid registering 1 symbol file per method with gdb.
2318
2319 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * mini-sparc.c: Fix the handling of enums with base type long.
2322
2323         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2324
2325         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2326         instead of using type->data.klass as the later doesn't work with generics.
2327
2328 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2329
2330         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2331         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2332         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2333         works differently now and we don't handle it in the JIT anymore.
2334
2335         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2336         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2337         the Thread class split.
2338
2339 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * driver.c: Don't run tests with the obsolete treeprop optimization.
2342
2343         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2344         variable volatile. Fixes #541577.
2345
2346         * basic-calls.cs: Add a new test.
2347
2348         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2349
2350 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2353         work/required with recent iphone sdk versions.
2354
2355         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2356         structures.
2357
2358         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2359         in the VCALL decomposition code.
2360
2361 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2364
2365         * basic.cs: Add a test.
2366
2367         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2368         generic invokes.
2369
2370         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2371         searches all the domains of the current thread.
2372
2373         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2374
2375 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2378         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2379
2380         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2381         for non-jit trampolines.
2382
2383         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2384
2385         * aot-compiler.c (add_wrappers): Ditto.
2386
2387         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2388         the size of the param area used by dyn_call to 6 which covers the majority of
2389         methods.
2390
2391         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2392
2393         * mini-arm.c: Implement support for passing/receiving
2394         longs and receiving floats in the dyn_call code.
2395
2396         * mini-amd64.c: Implement support for receiving vtypes in registers in
2397         the dyn_call code.
2398
2399         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2400         the dyn_call code.
2401
2402 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * mini-arm.c (get_call_info): Return more precise information in
2405         ArgInfo->regtype.
2406         (dyn_call_supported): Use the information in CallInfo.
2407
2408         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2409
2410         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2411         code.
2412
2413         * mini-arm.c: Update after the dyn_call api changes.
2414
2415         * mini.c (mini_create_jit_domain_info): Register a destructor function
2416         for the runtime_invoke_hash.
2417
2418         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2419         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2420         this function.
2421         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2422         (dyn_call_supported): Simplify this by using get_call_info ().
2423         (mono_arch_dyn_call_free): New destructor function.
2424
2425         * generics.cs: Remove a printf.
2426
2427         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2428
2429         * mini-arm.c: Add support for enum return values and passing a few arguments
2430         on the stack.
2431         
2432         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2433         dyn invoke.
2434
2435         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2436
2437         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2438         the dynamic invoke wrappers.
2439
2440         * mini-arm.c: Implement OP_DYN_CALL for arm.
2441
2442         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2443         supported by the dynamic runtime invoke wrapper.
2444
2445         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2446         runtime invoke wrapper.
2447
2448         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2449         if possible when running with full-aot.
2450
2451         * mini-ops.h: Add OP_DYN_CALL opcode.
2452
2453         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2454         with dynamic arguments lists similar to libffi.
2455
2456 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2459         
2460         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2461         to NEWARR.
2462
2463         * iltests.il.in: Add a new test.
2464         
2465 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * aot-compiler.c (add_generic_instances): Add more instances of
2468         GenericEqualityComparer.
2469
2470 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2471
2472         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2473
2474 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2475
2476         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2477         comments on some functions that now can fail.
2478
2479 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2480
2481         * Makefile.am: Add Info.plist to EXTRA_DIST
2482
2483 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2486         static synchronized wrappers. Fixes #539500.
2487
2488 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2489
2490         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2491         properly.
2492
2493 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2496         lmf before calling filter clauses as well. Fixes #539550.
2497
2498         * exceptions.cs: Add a test.
2499         
2500 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2501
2502         * aot-compiler.c (add_generic_class): Add instances of
2503         Array.GetGenericValueImpl as well.
2504
2505         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2506         can be tested too.
2507
2508         * generics.cs: Add a fullaot linq test.
2509
2510 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2513         reg r1 on arm.
2514
2515 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2516
2517         * mini-trampolines.c (mono_delegate_trampoline) : Call
2518           mono_cominterop_get_invoke if the delegate target object
2519           is a COM object.
2520
2521         Code is contributed under MIT/X11 license.
2522
2523 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2524
2525         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2526         internal call is defined outside platform code. Reduce code 
2527         duplication with existing [Method|Field]AccessException
2528
2529 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2530
2531         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2532         if the return value is a small struct passed on regs.
2533
2534 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2537
2538         * mini-codegen.c: Enable the cpu description validation for arm.
2539
2540 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2541
2542         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2543         test which depends on structs to objects.cs.
2544         
2545         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2546         require object model related stuff working.
2547
2548         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2549
2550         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2551
2552         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2553         against the instruction metadata in mini-ops.h. amd64 only for now.
2554
2555         * mini-ops.h: Fix some instruction descriptions.
2556
2557         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2558         unused instructions.
2559
2560 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2561
2562         * exceptions.cs: Add a new test.
2563
2564 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2565
2566         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2567
2568 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2571         skip empty phi opcodes.
2572         
2573         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2574         correctly by zero extending after loads. Skip methods containing calls
2575         to the monitor enter/exit trampolines.
2576
2577         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
2578         when calling mono_thread_force_interruption_checkpoint ().
2579
2580         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
2581
2582         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
2583         64 bit thunks.
2584         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
2585
2586         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
2587         bootstrap could run.
2588
2589 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
2592
2593 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2594
2595         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
2596         of the method to
2597         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2598         LLVM might be very short.
2599
2600         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
2601         in OP_THROW/RETHROW.
2602
2603         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
2604         alignment on osx.
2605
2606 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
2609         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
2610         LLVM might be very short.
2611
2612 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2613
2614         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2615         the alignment for the value of sp.
2616
2617 2009-09-01  Geoff Norton  <gnorton@novell.com>
2618
2619         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2620         managed wrappers in full aot.
2621
2622 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2625
2626 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2629
2630 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2633
2634         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2635         saved info.
2636
2637         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2638
2639         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2640         depend on the info MonoMethodHeader which could be missing in IL stripped
2641         assemblies.
2642
2643 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2646         they are only 4 byte aligned.
2647
2648 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2651         was done previously, since using SP causes too many problems.
2652
2653         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2654         frames without a frame pointer works.
2655
2656         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2657         global register in methods with calls, since the calls can go through
2658         a static rgctx trampoline which doesn't save it.
2659
2660 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2663
2664 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2667
2668 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2669
2670         * method-to-ir.c: Fix warnings for uninitialized variables.
2671
2672 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2673
2674         * mini-exceptions.c:
2675         * aot-compiler.c: Fix printf warnings.
2676
2677 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2678
2679         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2680         Add GetGenericValueImpl<string>.
2681         
2682         * aot-compiler.c (add_generic_instances): Add instances of
2683         GenericEqualityComparer<T> for primitive types. Only emit the array
2684         wrappers into the mscorlib image.
2685
2686 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2689         the methods_loaded array using amodule->info->nmethods.
2690
2691         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2692         (MONO_AOT_FILE_VERSION): Bump this.
2693
2694         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2695         to work.
2696
2697         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2698         MonoJitInfo doesn't belong to its methods aot image.
2699
2700 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2701
2702         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2703
2704         * mini-arm.c: Fix warnings.
2705         
2706         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2707
2708         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2709         supports it.
2710
2711 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2714         avoid clobbering IP.
2715
2716         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2717         hold the trampoline argument, so its initial value is available during
2718         debugging.
2719
2720 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2721
2722         * exceptions-arm.c:
2723         * exceptions-hppa.c:
2724         * mini.c:
2725         * exceptions-s390x.c:
2726         * exceptions-mips.c:
2727         * exceptions-ppc.c:
2728         * exceptions-sparc.c:
2729         * exceptions-alpha.c:
2730         * aot-runtime.c:
2731         * mini-trampolines.c:
2732         * exceptions-x86.c:
2733         * exceptions-s390.c: add and use #define's instead of sizeof()
2734         for MonoJitInfo and MonoJitInfoTable.
2735
2736 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2737
2738         * tramp-arm.c:
2739         * tramp-amd64.c:
2740         * tramp-ppc.c:
2741         * tramp-x86.c: use a #define instead of sizeof() for a few
2742         structures that use a zero-length array.
2743
2744 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2745
2746         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2747         case when the method is dynamic. Fixes #529238.
2748
2749 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2752         of asserting when a method is JIT compiled in full-aot mode.
2753
2754 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2755         
2756         Contributed under the terms of the MIT/X11 license by
2757         Jerry Maine <crashfourit@gail.com>.
2758         
2759         * fixed wrong dates in changelog.
2760
2761 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2762         
2763         Contributed under the terms of the MIT/X11 license by
2764         Jerry Maine <crashfourit@gail.com>.
2765
2766         * basic-simd.cs: added test for packed double square root.
2767         * cpu-amd64.md: added opcode info for packed double square root.
2768         * cpu-x86.md: added opcode info for packed double square root.
2769         * mini-ops.h: added IR opcode for packed double square root.
2770         * mini-x86.c: added IR to native translation code for packed double square root.
2771         * mini-amd64.c: removed todo for packed double square root.
2772         * simd-intrinsics.c: added method to IR opcode converstion for
2773         packed double square root.
2774
2775 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2776
2777         Contributed under the terms of the MIT/X11 license by
2778         Jerry Maine <crashfourit@gail.com>.
2779
2780         * mini-amd64.c: Added a change to help tell the difference as 
2781         to what perpose the xmm register is being used--mainly to help
2782         with debuging.
2783         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2784         (one used for special cases) xmm registers for both fp
2785         and simd ops. Added define to turn on new feature in the regalloc
2786         that allows fp and simd ops to share the xmm regs happily.
2787         * codegen.c: Added code to detect for which perpose an xmm reg is
2788         being used (fp or simd) and to translate back and forth to the
2789         correct logical reg bank (fp or simd) for 'spill load's.
2790
2791 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2792
2793         Contributed under the terms of the MIT/X11 license by
2794         Jerry Maine <crashfourit@gail.com>.
2795
2796         * basic-simd.cs: Added tests for stressing the regalloc when running with
2797         16 simd regs and when simd and fp ops share the same reg bank.
2798
2799 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2800
2801         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2802         in shared generic code, we might have to look up the class in the
2803         RGCTX.  If we use the class directly, compute its GC descriptor.
2804
2805 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2808
2809 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2810
2811         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2812         check for errors. Fixed the case when the class with the Main
2813         method is broken.
2814
2815 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2816
2817         Contributed under the terms of the MIT/X11 license by
2818         Jerry Maine <crashfourit@gail.com>.
2819
2820         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2821
2822 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2825
2826 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2827
2828         * method-to-ir.c: Fix naming of stelem and ldelem.
2829
2830 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * driver.c (main_thread_handler): Check that the assembly loaded
2833         matches the filename when doing AOT.
2834
2835 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2836
2837         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2838         call it anymore.
2839
2840         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2841         utils/mono-sigcontext.h).
2842
2843         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2844         #ifdef.
2845
2846 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2847
2848         * mini.c (mono_codegen):
2849         Call profiler hook to keep track of method code buffers.
2850
2851 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2852
2853         * method-to-ir.c: Invoke write barriers for the
2854         Interlocked.(Compare)Exchange JIT intrinsics.
2855
2856 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2857
2858         * Makefile.am (version.h): Fix issues when built out of tree.
2859         Remove some redundant 'grep's piped through 'sed's.
2860
2861 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2862
2863         This patch is contributed under the terms of the MIT/X11 license
2864
2865         * mini-ppc.c (mono_arch_output_basic_block):
2866         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2867         for bits 32-47 with signed load/store diplacements for bits
2868         48-63.  Use prefered base/offset order for indexed form.
2869         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2870         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2871         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2872         OP_LOADI2_MEMBASE): Same.
2873         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2874         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2875         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2876         indexed form.
2877         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2878         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2879         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2880         OP_LOADI1_MEMINDEX): Same
2881         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2882         OP_STORER8_MEMINDEX): Same
2883         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2884         computations.
2885         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2886         for bits 32-47 with signed load/store diplacements for bits
2887         48-63.  Use prefered base/offset order for indexed form.
2888
2889 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2890
2891 This patch is contributed under the terms of the MIT/X11 license
2892
2893         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2894         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2895         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2896         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2897         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2898         cfg->stack_usage to avoid size warnings.
2899         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2900         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2901         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2902         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2903         to convert.
2904         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2905         after code varible is initialized.
2906         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2907         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2908         (mono_arch_emit_epilog): 
2909         Move Use ppc_load32 for cfg->stack_usage to avoid size
2910         warnings.
2911
2912 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2913
2914         * method-to-ir.c: The write barrier doesn't do the store anymore,
2915         so we have always to emit it.  Also, emit the wbarrier after the
2916         store.
2917
2918 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2921         for argument count 3 too.
2922
2923 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2926         the caller handle the exceptions.
2927         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2928         method. Fixes #524498.
2929
2930 2009-07-22  Geoff Norton  <gnorton@novell.com>
2931
2932         * mini-exceptions.c: Fix build on ia64.
2933
2934 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2935
2936         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2937         barriers.
2938
2939 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2942         code.
2943
2944 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * basic-simd.cs (Main): Pass args to the test driver.
2947
2948 2009-07-20  Geoff Norton  <gnorton@novell.com>
2949
2950         * mini-x86.h: Fix the x86 version guards to use Apple's
2951         properly defined macros.
2952
2953 2009-07-20  Geoff Norton  <gnorton@novell.com>
2954
2955         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2956         aligned access.
2957
2958 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2959
2960         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2961         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2962         the information which is needed for invokes, so only one locking+hash table
2963         lookup is needed.
2964
2965         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2966         
2967         * aot-compiler.c (add_generic_instances): Emit instances of 
2968         GenericComparer<T> for primitive types.
2969
2970 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2971
2972         * mini-posix.c: Fix linux build.
2973
2974 2009-07-19  Geoff Norton  <gnorton@novell.com>
2975
2976         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2977         mono_gdb_render_native_backtraces
2978         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2979         so we implement the sane semantics to the runtime here
2980         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2981         so we need to call it differently (mono_gdb_render_native_backtraces)
2982         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2983         here for default implementations.
2984         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2985         support Apple's weird syscall (SYS_fork) implementation and not busy
2986         loop in abort() on native crashes on OSX anymore.
2987
2988 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * aot-runtime.c (load_method): Change the handling of the
2991         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2992         are used.
2993
2994         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2995
2996 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2999         seems to break the aot tests.
3000         
3001         * mini.c (mono_patch_info_equal): Fix the handling of 
3002         MONO_PATCH_INFO_RGCTX_FETCH.
3003
3004 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3005
3006         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3007
3008         * mini.c (mono_patch_info_hash): Fix the handling of 
3009         MONO_PATCH_INFO_INTERNAL_METHOD.
3010         (mono_patch_info_equal): Ditto.
3011
3012 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3015         in a few places.
3016         
3017         * mini-llvm.c: Add some infrastructure for AOT support.
3018
3019 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * mini-llvm-cpp.c: Update to the latest llvm api.
3022         
3023         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3024         option to false to prevent llvm from installing signal handlers which
3025         trip up the gc.
3026         
3027 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3028
3029         * cpu-x86.md:
3030         * cpu-amd64.md: Revert previous change as those instructions
3031         take 2 separate arguments. Remember to read the arch docs more
3032         carefully next time.
3033
3034 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3037
3038 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3039
3040         * mini-ppc.c: exploit multiple load/store units if available (rest of
3041         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3042         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3043
3044 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3045
3046         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3047         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3048
3049 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3050
3051         * cpu-x86.md: Fix missing clobbering from trancendental simd
3052         ops.
3053
3054         * cpu-amd64.md: Same.
3055
3056 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3057
3058         Contributed under the terms of the MIT/X11 license by
3059         Jerry Maine <crashfourit@gail.com>.
3060
3061         * basic-simd.cs: Added tests for single and doulble indexers.
3062
3063         * cpu-amd64.md: Added simd opcode information.
3064
3065         * mini-amd64.c: Added IR to native simd generation code.
3066         Added simd register names and function that returns them.
3067
3068         * mini-amd64.h: Added marcos to turn on simd code compilation in
3069         amd64. Added max simd register count marco. Added caller/callee
3070         register mask marcos. Added marcos to use simd register bank.
3071
3072         * mini.h: Added helper marco for shufling dwords and simple
3073         floats.
3074
3075 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3078
3079         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3080
3081         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3082         the length of the native code as well.
3083
3084         * basic-simd.cs: Add a test for #521662.
3085
3086 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3087
3088         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3089
3090 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3091
3092         * mini.c: Register function for getting the IP from a signal
3093         context with metadata.
3094
3095 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3098         call a generic class init trampoline if needed. Fixes #519336.
3099
3100         * generics.cs: Add a test.
3101         
3102 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3103
3104         * method-to-ir.c: When doing a call which might be remote from
3105         shared generic code to other shared code with open type arguments,
3106         get the remoting invoke wrapper from the RGCTX and do an indirect
3107         call to it.
3108
3109 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3112         after the unbox trampoline in the full-aot case.
3113
3114 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3115         
3116         * mini.c: Move initialization of jit_mutex before debugger initialization
3117         
3118         to avoid crashes.
3119         
3120         
3121         * Info.plist: added Info.plist and link flag to enable the mono executable
3122         to access other processes. Requires codesigning of the executable to work.
3123         
3124         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3125         
3126         compile on OS X.
3127         
3128
3129 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3130
3131         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3132
3133 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3136         when the generic instance is an instantiation of a subclass of the
3137         methods class. Fixes #517166.
3138
3139 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3142         code.
3143
3144         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3145         AOTed code.
3146
3147         * CMakeLists.txt: Add minimal support for installation.
3148
3149 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3150
3151         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3152         determine whenever a method is directly callable to a separate function.
3153
3154         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3155         needed ones as a result of the previous change.
3156
3157         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3158         type of register arrays.
3159
3160         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3161         type of register arrays.
3162
3163 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3164         
3165         Contributed under the terms of the MIT/X11 license by
3166         Jerry Maine <crashfourit@gail.com>.
3167
3168         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3169
3170 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3171
3172         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3173
3174 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3175
3176         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3177         dump of structure return value. Fix some formatting.
3178         * cpu-s390x.md: Fix lengths of instruction sequences.
3179         * mini-s390.c: Minor formatting changes.
3180
3181 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3184         Use sigaction on freebsd as well.
3185
3186 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3187
3188         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3189         uses #ifdef on it.
3190         
3191         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3192
3193 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3194
3195         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3196
3197 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3198
3199         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3200
3201 2009-06-20  Martin Baulig  <martin@ximian.com>
3202
3203         * debug-mini.c
3204         (MonoDebuggerThreadFlags): New enum typedef.
3205         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3206         (mono_debugger_thread_created): Added `gpointer func' argument;
3207         initialize the new `thread_flags' field.
3208
3209 2009-06-18  Martin Baulig  <martin@ximian.com>
3210
3211         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3212         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3213
3214         * debug-debugger.c
3215         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3216         flag in `MONO_DEBUGGER__info.runtime_info'.
3217
3218         * driver.c
3219         (mono_main): Call mini_debugger_set_attach_ok() if generics
3220         sharing is disabled.
3221
3222 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * aot-compiler.c (add_wrappers): Fix a warning.
3225
3226         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3227         the ppc load/store macro changes.
3228
3229 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3232
3233         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3234         not just the got symbol.
3235
3236         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3237         on ppc.
3238
3239         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3240         ppc.
3241         
3242         * aot-compiler.c: Remove some fixmes.
3243
3244         * driver.c (mono_main): Print a helpful message when cross-compiling.
3245
3246         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3247
3248         * method-to-ir.c (initialize_array_data): Do the optimization if the
3249         target byte order is little endian, instead of the host byte order.
3250
3251         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3252         wrappers into the mscorlib image, Emit a unique plt symbol for each
3253         image, emit symbols for plt entries.
3254
3255         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3256         a .size directive.
3257         
3258 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * aot-compiler.c (add_wrappers): Avoid calling 
3261         mono_marshal_get_type_info () since it can assert for some types.
3262
3263         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3264         ldtoken are used inside wrappers.
3265
3266         * helpers.c: Add support for prefixing tools with the arch name.
3267
3268         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3269         quantities when using ilp32.
3270
3271         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3272         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3273
3274         * image-writer.c: Use .long on ilp32.
3275
3276         * aot-compiler.c: Use 32 bit loads on ilp32.
3277         
3278 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3281
3282         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3283
3284         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3285
3286         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3287         second got slot of every aot image.
3288         
3289         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3290         aot on platforms with function pointers.
3291
3292         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3293         support for aot/full aot on ppc/ppc64.
3294         
3295         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3296         arguments which are needed on ppc.
3297
3298         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3299         argument.
3300
3301         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3302         
3303         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3304
3305         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3306
3307         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3308
3309         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3310
3311 2009-06-17  Geoff Norton  <gnorton@novell.com>
3312
3313         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3314
3315 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3318         to control whenever the dwarf writer is in xdebug or aot mode.
3319         (emit_class_dwarf_info): Use a separate abbrev for structures without
3320         children.
3321
3322         * aot-compiler.c: Pass the appending parameter to 
3323         mono_dwarf_writer_create ().
3324
3325         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3326         falls through to its next bblock. Fixes #513931.
3327
3328         * iltests.il: Add a test.
3329
3330         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3331         infor even if emit_line is FALSE, as the apple linker seems to require it.
3332
3333         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3334
3335         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3336         gcc does.
3337         (emit_fde): Ditto.
3338
3339 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3340
3341         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3342         mips build.
3343
3344 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3345
3346         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3347         'has_call_handler' fields.
3348
3349         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3350
3351         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3352         first bblock if not needed. Fixes #512790.
3353         
3354 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3355
3356         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3357         
3358         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3359         wrappers.
3360
3361         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3362         remoting-invoke-with-check wrappers, which are not needed when running with
3363         full-aot, since it doesn't support remoting.
3364         
3365 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3368
3369         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3370         method info, it is not used anymore.
3371
3372         * mini.h: Bump AOT file format version.
3373         
3374         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3375         word smaller.
3376
3377         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3378         change above.
3379         
3380         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3381
3382         * mini.h: Bump AOT file format version.
3383         
3384 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3387         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3388         iphone.
3389
3390         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3391         of CKFINITE and FBGE for VFP.
3392
3393 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * aot-compiler.c: Don't align code to 16 bytes on arm.
3396         
3397         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3398         before the methods they belong to.
3399
3400         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3401         the full-aot case if possible, since the trampoline will be called right 
3402         away.
3403
3404         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3405         trampolines to 1024 after the change above.
3406
3407         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3408         trampoline to save 8 bytes per trampoline.
3409
3410         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3411         change above.
3412
3413 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3416
3417 2009-06-08  Martin Baulig  <martin@ximian.com>
3418
3419         * debug-mini.c
3420         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3421         (_mono_debugger_throw_exception): Don't make this static.
3422         (_mono_debugger_unhandled_exception): Likewise.
3423         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3424
3425         * debug-mini.c
3426         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3427         (_mono_debugger_throw_exception): Add function prototype.
3428         (_mono_debugger_unhandled_exception): Likewise.
3429
3430         * mini-exceptions.c
3431         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3432         arg; return the first exception handler if the exception is caught
3433         and we're running inside the debugger.
3434         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3435         improve exception handle inside runtime-invoke, check whether the
3436         exception is actually caught in the method being invoked and not
3437         by the runtime-invoke-wrapper.
3438
3439 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * image-writer.c: Improve support for the osx assembler.
3442
3443         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3444         support them.
3445
3446 2009-06-08  Martin Baulig  <martin@ximian.com>
3447
3448         * debug-mini.c
3449         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3450         (_mono_debugger_throw_exception): Don't make this static.
3451         (_mono_debugger_unhandled_exception): Likewise.
3452         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3453
3454         * debug-mini.c
3455         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3456         (_mono_debugger_throw_exception): Add function prototype.
3457         (_mono_debugger_unhandled_exception): Likewise.
3458
3459         * mini-exceptions.c
3460         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3461         arg; return the first exception handler if the exception is caught
3462         and we're running inside the debugger.
3463         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3464         improve exception handle inside runtime-invoke, check whether the
3465         exception is actually caught in the method being invoked and not
3466         by the runtime-invoke-wrapper.
3467
3468 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * image-writer.c (append_subsection): Don't align subsections of the
3471         debug_line section as a workaround.
3472
3473         * dwarfwriter.c: Emit line number info in the AOT case as well.
3474
3475 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3476
3477         This patch is contributed under the terms of the MIT/X11 license
3478
3479        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3480        code_len <= code_size
3481
3482 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3483
3484         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3485
3486 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3489         invoke wrappers, we now use trampolines instead.
3490
3491 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3492
3493         * mini-darwin.c: The exception thread must not be registered with
3494         the GC.
3495
3496 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3497
3498         * mini-gc.c: Disable the code because it makes SGen crash.
3499
3500 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3503         instead of asserting.
3504
3505 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3506
3507         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3508         output file after the code has been compiled.
3509
3510 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3511
3512         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3513
3514 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3517         entries distinction to simplify the code.
3518
3519         * mini.h: Bump AOT file format version.
3520         
3521 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * objects.cs: Fix the signature of one of the tests.
3524
3525         * mini.c (mini_create_ftnptr): New helper function, moved here from
3526         object.c.
3527         (mini_get_addr_from_ftnptr): Ditto.
3528         (mini_init): Install the new helpers.
3529
3530 2009-05-28  Martin Baulig  <martin@ximian.com>
3531
3532         Correctly initialize the debugger when embedding Mono.
3533
3534         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3535         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3536         see documentation in mini_debug_running_inside_mdb().
3537
3538         * debug-debugger.c
3539         (mini_debug_running_inside_mdb): New function to check whether
3540         we're running inside mdb.
3541
3542         * mini.c (mini_init): Call mini_debugger_init() if we're running
3543         inside the debugger.
3544
3545         * driver.c (mono_main): Moved the call to mini_debugger_init()
3546         into mini_init() to make this work when embedding Mono.
3547
3548         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3549         calls to mini_debugger_init().
3550
3551         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3552         mono_debugger_main() -> mini_debugger_main() and put them inside a
3553         `MONO_DEBUGGER_SUPPORTED' conditional.
3554
3555 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3556
3557         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3558         this is no longer in use.
3559         * mini.h: Same.
3560
3561 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3564
3565         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3566         methods.
3567
3568 2009-05-27  Martin Baulig  <martin@ximian.com>
3569
3570 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3573         long_conv_to_r_un to 64 bits.
3574
3575         * cpu-x86.md: Increase the instruction size due to the changes.
3576
3577         * iltests.il.in: Add regression test.
3578
3579         Fixes #467201.
3580
3581 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3582
3583         * objects.cs: Move the previous test from basic.cs to here.
3584
3585 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3586
3587         * basic.cs: Add regression test for #506915.
3588
3589 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3590
3591         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
3592         optimization we must check the bb of the first byte of stobj as
3593         it's the only one set in cil_offset_to_bb.
3594
3595         Fixes #506915.  
3596
3597 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * image-writer.c: Fix pointer directive on ppc64.
3600
3601 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * image-writer.c (asm_writer_emit_section_change): Avoid using
3604         .bss subsections on ppc too.
3605
3606 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * image-writer.c: Fix the definition of TARGET_ASM_....
3609         
3610         * image-writer.c: Fix the emission of assembler directives in the last
3611         change.
3612
3613         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3614         exception throwing code to accomodate ppc64.
3615
3616         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3617         size to work on ppc64 too.
3618
3619         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3620         too.
3621
3622         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3623         the assembler dialect instead of using platform specific defines.
3624
3625 2009-05-22  Geoff Norton  <gnorton@novell.com>
3626
3627         * mini-arm.c (get_call_info): If a structure is split between the stack
3628         and argument registers, we should not advance the stack pointer by the entire
3629         native size, but just by the amount that spilled.
3630
3631 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3632
3633         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3634         correctly.
3635
3636 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3639         wrappers normally.
3640         
3641         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3642         methods so wrapper don't get added twice.
3643         (add_generic_instances): Don't add methods of arrays.
3644
3645         * generics.cs: Mark one test as !FULLAOT.
3646
3647 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3648
3649         * mini-x86.c (emit_move_return_value): Remove unused vars.
3650
3651 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3652
3653         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3654         decomposing 8 bytes structs into a LCALL.
3655
3656         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3657         pointer for where to store the returned regs.
3658
3659         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3660         state the concern.
3661
3662         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3663
3664 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3665
3666         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3667         without getenv.
3668
3669 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3670
3671         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3672
3673         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3674         generics.
3675
3676 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3677
3678         * local-propagation.c (mono_local_cprop): Avoid local propagation
3679         across paired add/sub if the first instruction dest reg is it's
3680         source reg. For example:
3681
3682         int_add_imm R12 <- R12 [1] clobbers: 1
3683         int_sub_imm R42 <- R12 [1] clobbers: 1
3684
3685         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3686         maintain the math identify.
3687
3688         Fixes #505375.
3689
3690 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3691
3692         * Makefile.am: avoid going on the network just to get the revision,
3693         use git log instead
3694
3695 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3696
3697         Fixed estimate for short branches on amd64 (they were off mark, and
3698         enabling call prolog-epilog instrumentations caused assertions).
3699         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3700         estimate for the maximum length of this basic block.
3701         * mini-amd64.c:
3702         - mono_arch_emit_prolog: compute max_length for each basic block
3703           (instead of max_offset), and inflate size estimate also for entry bb
3704           in case of code instrumentation.
3705         - mono_arch_output_basic_block: get rid of "cpos" (the current
3706           estimated "position" in the code), and always use "offset" instead,
3707           which is accurate; at the beginning of the function quickly recompute
3708           max_offset for all the remaining blocks, starting from the current
3709           cfg->code_len (which is correct, and not estimated) and using the
3710           estimated block lengths computed previously.
3711
3712 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3715         functions, it is already done in the caller.
3716
3717         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3718
3719         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3720         MONO_ARCH_GSHARED_SUPPORTED define.
3721
3722         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3723
3724         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3725         function.
3726
3727 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3730         call to mono_marshal_get_rgctx_invoke ().
3731
3732         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3733         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3734         gshared use the static rgctx trampolines now.
3735         
3736         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3737         platform supports it.
3738
3739 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3742
3743         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3744
3745 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3746
3747         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3748
3749         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3750         for ppc.
3751
3752 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3753
3754         Made it possible for mono_arch_instrument_epilog to preserve
3755         argument registers, otherwise instrumenting the "epilogue" before
3756         a tail call would clobber them.
3757         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3758         if like mono_arch_instrument_epilog but with an additional parameter
3759         that states if argument registers must be preserved.
3760         * mini.c: implemented mono_arch_instrument_epilog as a call to
3761         mono_arch_instrument_epilog_full without asking to preserve argument
3762         registers (this makes the existing code work as usual).
3763         * mini-amd64.c:
3764         - mono_arch_instrument_epilog: add parameter to transform it into
3765         mono_arch_instrument_epilog_full, and preserve argument registers
3766         when required.
3767         - mono_arch_output_basic_block, OP_TAILCALL case: call
3768         mono_arch_instrument_epilog_full.
3769         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3770         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3771         only transformed mono_arch_instrument_epilog into
3772         mono_arch_instrument_epilog_full.
3773
3774 2009-05-15  Geoff Norton  <gnorton@novell.com>
3775
3776         * mini-darwin.c: This works on arm now.
3777
3778 2009-05-14  Geoff Norton  <gnorton@novell.com>
3779
3780         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3781         embedding api.
3782
3783 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3784
3785         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3786         label names.
3787
3788         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3789         wrappers during full aot mode correctly.
3790
3791         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3792         methods correctly.
3793
3794         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3795         mono_metadata_type_hash ().
3796
3797 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3798
3799         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3800         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3801         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3802         Removed MONO_INST_BRLABEL from the instruction flags, and the
3803         remaining code that used it, because we do not support branches inside
3804         basic blocks (and branch target labels) anymore.
3805         * Makefile.am: As part of the above cleanup, remove reference to
3806         BURG files which don't exist anymore.
3807
3808 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3809
3810         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3811         osx.
3812
3813         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3814         to use mono_arch_throw_corlib_exception.
3815
3816         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3817         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3818
3819         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3820         domain mempool.
3821
3822         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3823
3824         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3825         for the got to make debugging easier and to avoid confusing it with the
3826         system got.
3827         
3828         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3829         method so a breakpoint can be set when using gdb.
3830
3831 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3834         on mono_method_get_imt_slot ().
3835
3836         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3837         num_decodes variables.
3838
3839         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3840         change as it doesn't seem to work.
3841         
3842         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3843         wrappers.
3844
3845 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3848         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3849
3850         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3851         builder when using full aot.
3852
3853         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3854         here, it is already handled.
3855         
3856         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3857         correctly for IMT.
3858
3859         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3860
3861         * mini-arm.h: Enable IMT for full aot.
3862         
3863         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3864         arch doesn't support it.
3865
3866         * mini.c (mini_init): Don't disable IMT for full aot if the
3867         architecture supports it.
3868
3869         * mini.h (MonoAotTrampoline): New enum containing the different types
3870         of 'numerous' trampolines.
3871         (MONO_AOT_FILE_VERSION): Bump this.
3872
3873         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3874         static rgctx trampolines. Add support for full-aot IMT thunks.
3875
3876         * mini-amd64.h: Enable IMT for full aot.
3877
3878         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3879         to exclude tests belonging to a category.
3880
3881         * generics.cs: Mark some tests with a !FULLAOT category.
3882
3883         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3884         generics tests.
3885
3886 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3889         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3890         (emit_plt): Fix a warning.
3891
3892 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3895         back into aot-compiler.c to a place where the other functions shared by
3896         the runtime and aot compiler are.
3897         
3898         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3899         as done previously, instead of in MonoAotFileInfo, since pointers might have
3900         alignment requirements.
3901
3902         * mini.h: Bump AOT file format version.
3903
3904 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3905
3906         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3907         that is used at runtime from the aot-compiler.c, this makes it
3908         work on setups that remove the AOT compiler from the output
3909         image. 
3910
3911 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3912
3913         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3914         PPC.
3915
3916         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3917
3918         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3919
3920         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3921         stuff to mono_arch_decompose_long_opts ().
3922         (mono_decompose_opcode): Remove some dead code.
3923
3924 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3925
3926         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3927         cmethod can be null for quite a some reasons.
3928
3929 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3930
3931         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3932
3933 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3934
3935         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3936
3937 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3940         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3941         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3942         calls returning structures by addr on amd64.
3943
3944         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3945
3946         * iltests.il.in: Restructure the tail call tests a bit.
3947         
3948 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3949
3950         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3951         for virtual methods too.
3952
3953 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3954
3955         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3956         due to regression in verifying System.dll.
3957
3958 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3959
3960         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3961         in dynamic methods.
3962
3963         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3964         instances.
3965
3966         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3967         g_str_hash () which can change.
3968
3969         * driver.c (mini_regression): Disable optimizations not supported by
3970         the cpu. Fixes #500019.
3971
3972         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3973         build.
3974
3975 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3978         to the latest LLVM code.
3979
3980 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3981
3982         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3983
3984 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3985
3986         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3987         x86/amd64.
3988
3989         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3990         no longer saving offsets, so just save the patch types along with the other
3991         info.
3992         * aot-runtime.c (load_patch_info): Update after the changes to 
3993         encode_patch_list ().
3994         (decode_got_entry): Removed, merged into load_patch_info ().
3995         (is_shared_got_patch): Removed, call the same function from
3996         aot-compiler.c.
3997
3998         * mini.h: Bump aot file format version.
3999         
4000         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4001         half-finished no-dlsym code.
4002
4003         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4004         option.
4005
4006         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4007         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4008
4009 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4012         buffer length to work with AOT code.
4013
4014         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4015         ldfld/stfld opcodes.
4016
4017         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4018         as it is not used.
4019
4020         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4021
4022         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4023
4024         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4025         LLVM API.
4026
4027         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4028         if needed. Don't decompose long operations when using llvm.
4029
4030 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4033         PAGESIZE constant.
4034
4035         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4036
4037 2009-05-03  Martin Baulig  <martin@ximian.com>
4038
4039         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4040         mono_debugger_insert_method_breakpoint() since the class init
4041         handler we're inserting at the top of the method already gives us
4042         a notification.
4043
4044 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4045
4046         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4047         to mono_arch_decompose_long_opts () for x86 and arm.
4048
4049 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4052         TARGET_AMD64 here.
4053
4054 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4057         JIT code.
4058
4059 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4060
4061         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4062         number of trampolines used in full-aot mode.
4063
4064         * aot-compiler.c: Add an ntrampolines option to set the number of 
4065         trampolines emitted in full-aot mode.
4066
4067 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4068
4069         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4070         a volatile load. Get rid of get_tempname (), llvm assigns names
4071         automatically.
4072
4073         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4074         builder function.
4075
4076         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4077         a value.
4078
4079         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4080         level 1.
4081
4082         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4083         to the same register as a fixed sreg2. Fixes #497271.
4084
4085         * iltests.il.in: Add a new test.
4086
4087 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4090         stack, since pushes complicate exception handling.
4091
4092         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4093         the stack if they are passed using moves.
4094
4095         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4096
4097         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4098         when using llvm.
4099
4100         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4101         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4102         of FMOVE if it is an R4.
4103
4104 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4107
4108         * mini.h (LLVMCallInfo): New structure to store calling convention 
4109         information for the LLVM back end similar to the CallInfo structures in 
4110         the back-ends.
4111
4112         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4113         call information in a format usable by LLVM.
4114         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4115
4116         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4117         mono_llvm_emit_call () when compiling using LLVM.
4118
4119         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4120         comments to all functions. Fix memory leaks. Add a public init/cleanup
4121         function.
4122
4123         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4124
4125         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4126         mono_array_new_va () jit icall.
4127         
4128 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4129
4130         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4131         multiple machine description files to be specified.
4132         * mini-ops.h: fixes for cross-compilation.
4133
4134 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4135
4136         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4137         some porting work.
4138
4139 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4142         to prevent asserts in various passes. Fixes #497220.
4143
4144 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4145
4146         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4147         a racy assert.
4148
4149         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4150         table to avoid duplicates.
4151
4152         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4153         
4154         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4155         option is used.
4156
4157 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4158
4159         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4160         is for method or field access.
4161
4162 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4165         a Value to stdout.
4166
4167         * mini-llvm.c (mono_llvm_emit_method): Use it.
4168         
4169         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4170         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4171         on volatile values.
4172
4173         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4174         synchronized methods.
4175
4176         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4177
4178         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4179
4180         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4181         OP_LOADI8_MEM.
4182
4183         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4184         allowing some options to be set dynamically.
4185
4186 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4189         unconditional branch.
4190
4191         * mini.h (MonoTrampolineType): Add new trampoline type 
4192         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4193         compiled code.
4194
4195         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4196         function.
4197
4198         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4199         creation function.
4200
4201         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4202         is enabled. Instead, use the llvm vcall trampoline.
4203         
4204         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4205
4206         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4207         
4208         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4209         functions.
4210
4211         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4212         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4213
4214         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4215         OP_IA64_CSET opcode.
4216
4217         * mini.c: Fix a warning.
4218
4219         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4220         THROW to the appropriate llvm type.
4221
4222 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * mini.c (mini_method_compile): Add statistics for methods JITted
4225         with/without LLVM.
4226
4227 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4228
4229         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4230         OP_IA64_CMP_<cond>_IMM opcodes.
4231
4232 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4235         corlib exceptions.
4236
4237         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4238         correctly.
4239
4240         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4241         GENERICINST.
4242
4243 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4244
4245         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4246
4247 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4250         support.
4251
4252         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4253         rgctx invoke trampolines for x86.
4254
4255         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4256         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4257         (mono_arch_get_vcall_slot): Simplify this.
4258
4259 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4260
4261         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4262         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4263
4264 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4267         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4268
4269         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4270
4271         * liveness.c (visit_bb): Remove a needless assert.
4272
4273 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4274
4275         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4276         full aot support to the arch specific code.
4277
4278         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4279
4280         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4281
4282         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4283         
4284         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4285         collect information about the delegate invoke impl trampolines.
4286
4287         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4288         to save trampolines during full-aot mode.
4289
4290         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4291         creation function which returns a trampoline which sets the rgctx
4292         argument.
4293         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4294         wrapper if possible.
4295         (mono_delegate_trampoline): Ditto.
4296
4297         * mini.c (mono_jit_runtime_invoke): Ditto.
4298
4299         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4300         
4301         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4302
4303         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4304         
4305 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4308         just setting the opcode to OP_NOP.
4309
4310 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * mini.c (mini_method_compile): Put the last change inside an 
4313         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4314         
4315         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4316         and extend live ranges to cover the whole method when using xdb.
4317
4318         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4319         do it in the trampolines.
4320
4321         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4322         needed.
4323
4324         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4325         
4326         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4327         call code in full-aot mode since IMT is disabled there.
4328         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4329         new JIT no longer has that restriction.
4330
4331         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4332
4333         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4334         a more compact format.
4335         (mono_aot_wrapper_name): New function to return a unique name for a
4336         wrapper method, also used by the AOT runtime.
4337
4338         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4339         aot-compiler.c.
4340
4341         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4342         when a ICollection<T> etc is encountered.
4343         (add_generic_instances): Process method arguments/locals too.
4344         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4345         trampoline names.
4346
4347         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4348         
4349 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4350
4351         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4352
4353         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4354
4355         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4356         representing the result of the decomposition. Nullify instructions
4357         instead of setting them to OP_NOP since nops can't have registers
4358         set.
4359
4360 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4363         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4364         info. Strip 'mapping symbols' on ARM.
4365
4366         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4367         
4368         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4369         this with the native genmdesc.
4370
4371 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4372
4373         * aot-runtime.c:  Fixing the MSVC build.
4374
4375         Code is contributed under MIT/X11 license.
4376
4377 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4378
4379         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4380         JITted code depends on it.
4381
4382 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4383
4384         * aot-compiler.c: Use new MonoGenericParam accessors.
4385
4386 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4387
4388         Reduce memory usage and improve correctness wrt MonoGenericParam
4389         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4390         handing.  Avoid allocating MonoGenericParams, but use the ones in
4391         the container itself.
4392
4393 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4394
4395         * tasklets.c: Return exceptions in the out argument.
4396
4397 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4398
4399         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4400         opcode. Use pointer types in more places instead of casting them to 
4401         integers.
4402
4403         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4404         optimizations.
4405         (mono_llvm_optimize_method): New helper function to optimize a method.
4406
4407         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4408         widening code so it could be called from more places.
4409         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4410         code paths in the call opcodes.
4411
4412 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4413
4414         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4415
4416 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * dwarfwriter.c: Use _ to separate class name 
4419         components as gdb can't handle '.'. Represent reference variables
4420         as 'class <NAME>&'.
4421         
4422         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4423
4424         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4425         
4426         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4427
4428         * gc-test.cs: New file with GC stack marking tests.
4429         
4430         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4431         negative numbers for vfp.
4432
4433         * basic-float.cs: Add a test.
4434         
4435 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4436
4437         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4438
4439 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4440
4441         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4442         part of tasklet/continuation support.
4443
4444 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4447         amd64 opcodes inside an ifdef.
4448
4449         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4450         of complex types.
4451         
4452         * dwarfwriter.c (emit_type): Emit the class info for classes.
4453
4454 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4457
4458         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4459
4460         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4461
4462         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4463
4464 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4467
4468         * mini-llvm.c: Update comments.
4469
4470         * mini.h (COMPILE_LLVM): New macro.
4471
4472         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4473
4474         * ssa.c (mono_ssa_compute): Ditto.
4475         
4476         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4477         the unwind ops from a DWARF FDE.
4478
4479         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4480         methods by extracting the dwarf unwind ops from the unwind info generated
4481         by LLVM.
4482         
4483         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4484         calls.
4485
4486         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4487         addressing modes.
4488
4489 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * Makefile.am (llvm_sources): Enable this.
4492
4493         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4494         failing back to the JIT if something cannot be handled.
4495
4496         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4497         compiling with LLVM.
4498
4499         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4500         compiling with LLVM.
4501
4502         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4503         compiling with LLVM.
4504
4505         * mini-ops.h: Add a few opcodes needed by LLVM.
4506
4507         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4508         has no unwind info.
4509
4510         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4511         backend.
4512
4513         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4514
4515         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4516
4517 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4518
4519         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4520         ridiculously large methods.
4521
4522 2009-03-31  Martin Baulig  <martin@ximian.com>
4523
4524         * debug-debugger.c (debugger_remove_breakpoint): Call
4525         mono_debugger_remove_class_init_callback ().
4526
4527 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4530         right before emitting code, not at the start.
4531
4532         * mini.c (mono_postprocess_patches): Extract this into a separate function
4533         from mono_codegen ().
4534
4535         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4536         byref types correctly.
4537
4538 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4539
4540         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4541         by the last change.
4542
4543 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4546         indirect calls, this avoids problems where get_vcall_slot () would get
4547         confused by the native code for the instruction preceeding the call.
4548         (mono_arch_get_vcall_slot): Simplify this.
4549         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4550
4551         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4552         register allocator now seems to depend on them instead of the data in
4553         cpu-<ARCH>.md.
4554
4555         * mini.c (mini_method_compile): Throw the correct type of exception if
4556         mono_method_get_header () fails because of a loading error.
4557
4558 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * mini.c (mini_method_compile): Clear the loader error if the method
4561         header cannot be decoded.
4562
4563         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4564         interface methods on proxies correctly.
4565
4566         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4567         this argument for vtype methods. Add precise liveness info for arguments.
4568
4569         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4570         LIVERANGE_START/END opcodes.
4571
4572         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4573         for arguments and values in registers.
4574
4575 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
4578         return a valuetype. Fixes #487518.
4579
4580         * iltests.il: Add a test.
4581         
4582         * aot-compiler.c: Use mono_thread_create () to create helper threads.
4583
4584         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
4585         closed over a null reference correctly.
4586
4587 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
4590
4591 2009-03-25  Mark Probst  <mark.probst@gmail.com>
4592
4593         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
4594         allocated to the same registers as fixed sregs.
4595
4596 2009-03-24  Mark Probst  <mark.probst@gmail.com>
4597
4598         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
4599         ATOMIC_CAS_IMM ops.
4600
4601         * method-to-ir.c: Handle more cases for
4602         Interlocked.CompareExchange.
4603
4604         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
4605         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
4606         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
4607
4608 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * aot-runtime.c (decode_method_ref): Fix a warning.
4611
4612         * unwind.c (mono_unwind_frame): Ditto.  
4613
4614 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4615
4616         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4617         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4618
4619         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4620         fix the handling of large values in the ALU_PC_G0_NC relocation.
4621
4622 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4625
4626 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4627
4628         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4629         ops.
4630
4631 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4632
4633         * method-to-ir.c: MINI_OP3 needs a comma.
4634
4635         * method-to-ir.c, mini.h, mini.c: Remove
4636         mono_init_op_sreg_counts ().
4637
4638 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4639
4640         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4641         OP_JMP.
4642         
4643         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4644         assertion.
4645
4646         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4647
4648         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4649         code somewhat.
4650
4651 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4652
4653         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4654         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4655         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4656         operations.
4657
4658 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4659
4660         * driver.c: Change location of gc_wrapper.h.
4661
4662         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4663         inside finally clauses correctly. Fixes #485721.
4664
4665         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4666         after the change above.
4667
4668         * exceptions.cs: Add a test.
4669         
4670 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4671
4672         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4673
4674         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4675         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4676         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4677
4678         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4679         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4680
4681 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4682
4683         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4684         Simplify logic for ensure_method_is_allowed_to_call_method. 
4685         Handle wrappers on callers.
4686
4687 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4690         them don't run yet.
4691
4692         * basic-simd.cs: Fix the names of some test methods.
4693
4694 2009-03-18  Geoff Norton  <gnorton@novell.com>
4695
4696         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4697
4698 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4701
4702 2009-03-17  Jb Evain  <jbevain@novell.com>
4703
4704         * driver.c: remove now uneeded call to mono_gc_base_init before
4705         mono_profiler_load.
4706
4707 2009-03-17  Jb Evain  <jbevain@novell.com>
4708
4709         * dwarfwriter.c (token_handler): handle more cases.
4710
4711 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4712
4713         * method-to-ir.c: Remove more dead code (that was required only
4714         because of method_is_safe). Fix compiler warnings.
4715
4716 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4717
4718         * method-to-ir.c: Remove unneeded/useless method_is_safe
4719         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4720
4721 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         * mini.c (mini_method_compile): Print the method been compiled with
4724         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4725         for people not familiar with the runtime.
4726
4727 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4730         a managed object which is later put into a GList. Return its class instead.
4731
4732         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4733         stack slots when using sgen.
4734
4735 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4736
4737         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4738
4739 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4742         > so it works on the first vreg as well.
4743
4744 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4745
4746         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4747         trigger randomly.
4748
4749         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4750         
4751         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4752         implement GArray.
4753
4754 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4755
4756         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4757         native->IL offset mapping.
4758
4759 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4762
4763         * basic.cs: Add a test.
4764
4765 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4766
4767         * mini-x86.c (mono_arch_output_basic_block): Use different
4768         registers in case the ones we want to overwrite are used by the
4769         other operand.  Fixes regression in #480807.
4770
4771 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4774
4775         * dwarfwriter.c (emit_line_number_info): The line number info for
4776         IL code was off by one. Fix that.
4777
4778         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4779         stack.
4780
4781 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4782
4783         Contributed under the terms of the MIT/X11 license by Steven
4784         Munroe <munroesj@us.ibm.com>.
4785
4786         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4787         Fixes #483462.
4788
4789 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4792         as well.
4793
4794 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4795
4796         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4797         the delegate ctor handling code. Fixes #482638.
4798         
4799         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4800         #481458.
4801
4802         * iltests.il.in: Add a test.
4803         
4804         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4805         mini-posix.c.
4806
4807 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4808
4809         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4810         is shared generic code, return the trampoline, even if the method
4811         has already been compiled.  Fixes #479763.
4812
4813         * mini.c, mini.h: New function
4814         mono_jit_find_compiled_method_with_jit_info() which is the same as
4815         mono_jit_find_compiled_method() but also returns the jit info.
4816
4817 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4818
4819         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4820         for methods which actually have one.  For all other methods, make
4821         sure the this argument var is live the whole method.
4822
4823         * mini.c (mini_method_compile): Every shared method has a
4824         this/vtable/mrgctx info.  Fixes #480807.
4825
4826 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4827
4828         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4829         generic/imt thunks where some entries branch through the vtable,
4830         while other entries branch directly.
4831
4832 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4833
4834         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4835
4836         * mini-windows.c: Ditto.
4837         
4838         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4839         ctors.
4840
4841 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4844         down an assert.
4845
4846 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4847
4848         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4849         #481403.
4850
4851 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4852
4853         * exceptions-x86.c: Include debug-mini.h - fixes build.
4854
4855 2009-03-04  Martin Baulig  <martin@ximian.com>
4856
4857         * debug-mini.c: Clean up the exception API and add documentation.
4858         (mono_debugger_handle_exception): New public method; this is
4859         called when throwing an exception or encountering an unhandled one.
4860         (mono_debugger_call_exception_handler): Formerly known as
4861         mono_debugger_handle_exception(); this is used to tell the
4862         debugger that we're about to invoke an exception handler.
4863
4864 2009-03-04  Martin Baulig  <martin@ximian.com>
4865
4866         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4867         ../metadata/mono-debug-debugger.c; save and reset exception state.
4868
4869 2009-03-02  Martin Baulig  <martin@ximian.com>
4870
4871         * debug-mini.c: Moved the debugger exception handling here from
4872         ../metadata/mono-debug-debugger.c.
4873
4874         * debug-mini.h
4875         (MonoDebuggerExceptionAction): New exception typedef.
4876
4877         * debug-mini.c
4878         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4879
4880         * exceptions-amd64.c
4881         (mono_amd64_throw_exception): Use the new debugger exception
4882         handling code.
4883
4884         * mini-exceptions.c
4885         (mono_handle_exception_internal): Don't call
4886         mono_debugger_unhandled_exception() here.
4887
4888 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * mini.c aot-compiler.c: Update after the changes to 
4891         mono_marshal_get_runtime_invoke ().
4892
4893         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4894         Virtual generic methods might not have method->slot set, work around
4895         that.
4896
4897         * generics.cs: Add a test.
4898
4899 2009-03-02  Geoff Norton  <gnorton@novell.com>
4900
4901         * mini.c:
4902         * driver.c: Allow signal chaining of SIGFPE as well.
4903
4904 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4907         this since it now receives the method not its generic context in the
4908         IMT reg.
4909
4910         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4911         generic/imt thunks where some entries branch through the vtable, while
4912         other entries branch directly.
4913
4914         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4915
4916         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4917         support for interface methods as well.
4918
4919         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4920         using the normal IMT thunks.
4921
4922         generics.cs: Add new tests.
4923         
4924         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4925         the generic inst to the generic imt thunks. This fixes AOT support, 
4926         improves consistency with the normal IMT thunks, and makes it easier to
4927         add support for interface generic virtual methods later.
4928
4929         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4930         
4931 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * driver.c (mono_set_signal_chaining): New public API function to enable
4934         signal chaining on POSIX platforms.
4935
4936         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4937         (si@lindenlab.com) to implement signal chaining. The original patch was
4938         contributed under the MIT X/11 license:
4939         https://bugzilla.novell.com/show_bug.cgi?id=318894
4940
4941 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4944         too until it can be made to run on amd64.
4945
4946 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4949         to  get_generic_context_from_code () + get_call_info () if possible.
4950
4951 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4954         suspend-on-sigsegv functionality.
4955
4956         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4957         to suspend when a native SIGSEGV is received. This is useful for debugging
4958         crashes which don't happen under gdb, since a live process contains more
4959         information than a core file.
4960
4961         * mini-exceptions.c (mono_print_thread_dump): Use 
4962         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4963
4964         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4965
4966         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4967         
4968         * basic-float.cs: Disable the tests which currently fail on amd64.
4969
4970         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4971         value to mono_arch_patch_callsite () to fix crashes.
4972         
4973         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4974
4975 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4978         nop code by patching the call address to point to the nullified class init
4979         trampoline, as the former does not seem to be safe on SMP machines.
4980
4981 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4982
4983         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4984         they were wrong.
4985
4986 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4987
4988         * basic-float.cs basic-calls.cs: Fix warnings.
4989
4990 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4991
4992         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4993         correct frame pointer in the LMF.  Should fix #478394.
4994
4995 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4996
4997         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4998
4999         * image-writer.c: Make the binary writer less verbose.
5000
5001 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5004         are called from runtime invoke wrappers.
5005
5006 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5007
5008         * cpu-ppc.md (store_memindex): Increase the size of this.
5009
5010 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5011
5012         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5013
5014         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5015
5016         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5017         OP_LCONV_TO_R_UN.
5018
5019         Last fix for of #467201.
5020
5021
5022 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5023
5024         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5025
5026         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5027         and long_conv_to_r8_2:
5028
5029         Fixed part of #467201.
5030
5031 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5034
5035         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5036         conversion to 32 bits.
5037
5038         * cpu-x86.md: Increase the size of int_conv_to_r4.
5039
5040         * basic-float.cs: Add a test for this.
5041
5042         Fixed part of #467201.
5043
5044 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5047
5048         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5049         conversion to 64 bits.
5050
5051         * basic-float.cs: Add a test for this.
5052
5053         Fixed part of #467201.
5054
5055 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5058
5059         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5060         This behavior is compatible with MS.
5061
5062         * iltest.il.in: Add a test for this.
5063
5064         Fixed part of #467201.
5065
5066 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5069
5070         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5071         change the precision of the value.
5072
5073         * cpu-x86.md: Define len for float_conv_to_r4.
5074
5075         * basic-float.cs: Add a test for this.
5076
5077         Fixed part of #467201.
5078
5079 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5080
5081         * mini.c: Adjust locking order to the new semantics where the loader lock
5082         comes first.
5083
5084 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5085
5086         * aot-runtime.c:
5087         * mini-amd64.c:
5088         * mini-arm.c:
5089         * mini-ia64.c:
5090         * mini-mips.c:
5091         * mini-ppc.c:
5092         * mini-sparc.c:
5093         * mini-trampolines.c:
5094         * mini-x86.c:
5095         * mini.c:
5096         * tramp-alpha.c:
5097         * tramp-amd64.c:
5098         * tramp-arm.c:
5099         * tramp-hppa.c:
5100         * tramp-ia64.c:
5101         * tramp-mips.c:
5102         * tramp-ppc.c:
5103         * tramp-s390.c:
5104         * tramp-s390x.c:
5105         * tramp-sparc.c:
5106         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5107
5108 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5111         as it is incorrect.
5112
5113 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5116         for cctors if needed.
5117
5118 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5119
5120         * mini-ppc.c: Fix build on Darwin.
5121
5122 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5123
5124         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5125         version instead of 3 as valgrind doesn't like version 3.
5126
5127         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5128
5129         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5130         usable for hashing methods.
5131         (emit_extra_methods): Use the new hash to avoid putting every method in the
5132         same hash bucket.
5133
5134         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5135
5136         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5137         whenever a method ref could match a method.
5138         
5139         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5140         test to fail.
5141         
5142         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5143         methods refs.
5144
5145         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5146
5147         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5148         the encoding buffer.
5149
5150         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5151         mono_method_get_header () on inflated methods as an optimization.
5152
5153 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5154
5155         * ssa.c (fold_ins): Fix another crash if the instruction following the
5156         switch was optimized away.
5157
5158 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5159
5160         Contributed under the terms of the MIT/X11 license by Steven
5161         Munroe <munroesj@us.ibm.com>.
5162
5163         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5164
5165 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5168         around the mono_domain_alloc calls, it is now done by the functions
5169         themselves.
5170
5171         * aot-compiler.c (compile_method): Only add wrappers referenced by
5172         the method if compiling with full AOT.
5173         (mono_compile_assembly): Error out if --aot=full is specified on
5174         a platform where it is not supported.
5175
5176         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5177         on ARM too.
5178
5179         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5180         AOT support.
5181
5182         * aot-runtime.c (load_named_code): Handle 
5183         mono_arm_throw_exception_by_token.
5184
5185         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5186
5187         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5188         unaligned.
5189
5190         * Makefile.am (fullaotcheck): Exit if a test fails.
5191
5192         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5193         on ARM.
5194         (mono_compile_assembly): Handle the assembler failing.
5195
5196         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5197         accepting subsections of .bss.
5198
5199         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5200         was optimized away.
5201
5202         * aot-compiler.c: Remove some unused includes.
5203         
5204         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5205         now in MonoImageWriter.
5206
5207         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5208         code sequence which matches a non-virtual call. Fixes #472654.
5209
5210 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5211
5212         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5213         xdebug code.
5214         
5215         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5216         use the image/dwarf writers directly.
5217
5218         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5219         field.
5220
5221         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5222         MonoDwarfWriter.
5223
5224         * image-writer.h: Fix some typos.
5225
5226         * dwarfwriter.h dwarfwriter.c: New files.
5227         
5228         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5229         separate module.
5230
5231         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5232         argument to return unwind info.
5233
5234         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5235
5236         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5237         
5238         * aot-runtime.c (decode_method_ref): Add a case for 
5239         MONO_AOT_METHODREF_WRAPPER_NAME.
5240
5241         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5242         for AOT.
5243
5244         * aot-compiler.c (encode_method_ref): Use the new constants.
5245
5246         * aot-runtime.c (decode_method_ref): Ditto.
5247
5248         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5249         be compiled, not the icall itself.
5250
5251 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5254         using decode_method_ref ().
5255
5256         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5257         convert it to an in32. Fixes #475859.
5258
5259         * arrays.cs: Add a test.
5260
5261 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5264         OP_LCONV_TO_U2.
5265
5266         * basic-long.cs: Add a test.
5267
5268 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5269
5270         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5271         remove the frame pointer in leaf methods which don't receive any
5272         arguments, don't throw exceptions and don't do dynamic stack
5273         allocations.
5274
5275 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5278         the fail_tramp changes. Hopefully fixes #475132.
5279
5280 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5281
5282         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5283         instead of mono_metadata_signature_dup_full.
5284
5285 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5288         for processing jump tables. Fixes #473787.
5289
5290 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5291
5292         * mini-generic-sharing.c: mini_method_get_context() just calls
5293         mono_method_get_context_general() now.
5294
5295         * mini.c, mini.h: Moved get_object_generic_inst(),
5296         construct_object_context_for_method() and
5297         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5298
5299 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5302         basic block fell through to its successor bblock without a branch. Fixes
5303         #474718.
5304
5305         * iltests.il.in: Add a test.
5306         
5307         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5308         (can_encode_patch): We can now handle arrays of generic parameters and
5309         array methods.
5310
5311         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5312
5313         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5314         the AOT file to avoid some #ifdefs in aot-runtime.c
5315
5316         * mini.h: Bump AOT file format version.
5317
5318 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * Makefile.am (fullaotcheck): Make this run the tests.
5321
5322         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5323
5324 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5325
5326         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5327         individually.  Fixes #473482.
5328
5329 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5332
5333 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5334
5335         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5336         (mono_compile_assembly): Hush compile warnings about
5337         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5338         code path.
5339
5340 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5341
5342         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5343
5344         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5345
5346         * aot-compiler.c: Fix arm support.
5347
5348         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5349         img_writer_emit_unset_mode () function.
5350
5351         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5352         (mono_unwind_get_dwarf_pc_reg): Ditto.
5353
5354         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5355         Move almost all platform specific code to a set of arch_ functions, 
5356         and document them to ease porting.
5357         
5358         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5359
5360         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5361
5362         * aot-compiler.c: Extract the image writing functionality into a separate
5363         module to reduce the size of this file.
5364
5365 2009-02-09  Geoff Norton  <gnorton@novell.com>
5366
5367         * mini-s390.c: Fix the signature of emit_sig_cookie.
5368
5369 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5372
5373         * aot-runtime.c (is_shared_got_patch): Ditto.
5374
5375         * aot-runtime.c (load_named_code): Cope with the fact that 
5376         decode_got_entry () won't decode the patch fully if its corresponding got
5377         entry is already filled.
5378         
5379         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5380         Initialize *ji.
5381         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5382
5383         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5384         as the moving pointer instead of 'buf' for consistency with the rest of the
5385         codebase.
5386         (mono_arch_create_monitor_exit_trampoline): Ditto.
5387
5388         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5389         generic_class_init trampolines.
5390         (add_generic_class): Extract some code from add_generic_instances () into a
5391         separate function so it can be called from other places too.
5392         (compile_method): Call add_generic_class () for the classes of inflated methods
5393         referenced by the method.
5394         (can_encode_patch): Allow references to generic parameters.
5395
5396         * aot-runtime.c: Add support the patches required by the new trampolines.
5397         
5398         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5399         support.
5400
5401         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5402         full-aot support.
5403
5404         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5405         this from get_throw_pending_exception, make the signature full aot compatible.
5406
5407         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5408
5409         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5410
5411         * exceptions.cs: Add a test.
5412
5413 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5414
5415         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5416         use the DWARF_DATA_ALIGN constant instead.
5417
5418         * exception-<ARCH>.c: Update after the above change.
5419
5420         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5421         dwarf unwinder.
5422
5423         * mini-arm.c: Enable the dwarf unwinder.
5424
5425         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5426         instead of mono_class_setup_vtable ().
5427
5428 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5431         dwarf unwinder.
5432
5433         * mini-x86.h: Enable the dwarf unwinder.
5434
5435 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5436
5437         Fix mcs/tests/test-7.cs
5438         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5439         2009-02-03.
5440
5441 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * mini.c (print_jit_stats): Remove some unused statistics.
5444
5445 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5448
5449 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5450
5451         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5452         the method we get from mono_object_get_virtual_method() because
5453         that function does it properly, now.
5454
5455 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5456
5457         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5458         opcodes. Fixes #472775.
5459
5460 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5461
5462         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5463         fact that mono_find_jit_info() sometimes returns the context
5464         corresponding to the jit info in new_ctx.  Fixes #472600.
5465
5466 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5469         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5470         klass->enum_basetype directly.
5471
5472         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5473         enum subtypes.
5474
5475         * unwind.c: Avoid 0 sized arrays.
5476
5477 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5480         size on systems with 64k pages. Fixes #471389.
5481
5482 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5483
5484         Contributed under the terms of the MIT/X11 license by Steven
5485         Munroe <munroesj@us.ibm.com>.
5486
5487         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5488         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5489         necessary.
5490
5491 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5492
5493         Contributed under the terms of the MIT/X11 license by Steven
5494         Munroe <munroesj@us.ibm.com>.
5495
5496         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5497         comparison fix.
5498
5499         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5500         The trampoline can be longer on PPC64.
5501
5502 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5503
5504         Contributed under the terms of the MIT/X11 license by Steven
5505         Munroe <munroesj@us.ibm.com>.
5506
5507         * mini-ppc.c: Compiler warning fixes and trivial code
5508         simplifications.
5509
5510 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5513         ins->dreg which could be a hardware register, not a vreg.
5514
5515         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5516         
5517         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5518         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5519
5520         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5521         
5522         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5523         ->dreg, that is not the vreg we are looking for.
5524
5525         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5526
5527         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5528         LIVERANGE_END.
5529
5530         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5531         strange crashes.
5532
5533 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5536
5537         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5538         the line diff is 0.
5539
5540         * aot-compiler.c: Add xdebug support on x86.
5541
5542         * unwind.c: Add x86 support.
5543         
5544         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5545         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5546
5547         * mini.c (mini_method_compile): Ditto.
5548         
5549         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5550         the variable index.
5551
5552         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5553         which mimic .push_section/.pop_section in GAS.
5554         
5555         * aot-compiler.c: Emit precise live range information for variables.
5556
5557         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5558
5559         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5560         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5561         them.
5562
5563         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5564         the live ranges of variables.
5565
5566         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5567         of the variable in terms of native offsets.
5568
5569 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5570
5571         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5572         
5573 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5574
5575         Contributed under the terms of the MIT/X11 license by Steven
5576         Munroe <munroesj@us.ibm.com>.
5577
5578         * exceptions-ppc.c (restore_regs_from_context): Correct operand
5579         order (offset then base reg) for ppc_load_multiple_regs.
5580         (emit_save_saved_regs) Correct operand order for
5581         ppc_store_multiple_regs.
5582         (mono_arch_get_call_filter): Correct operand order for
5583         ppc_load_multiple_regs.
5584
5585         * mini-ppc.c (emit_memcpy): Fix operand order for
5586         ppc_load_reg_update and ppc_store_reg_update.
5587         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
5588         (mono_arch_emit_epilog): Correct operand order for
5589         ppc_load_multiple_regs.
5590
5591         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
5592         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
5593
5594 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5595
5596         * cpu-ppc64.md: Fixed storer4_memindex length.
5597
5598 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
5601         line number info.
5602         
5603         * aot-compiler.c (emit_line_number_info): Optimize this.
5604
5605 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * aot-compiler.c: Disassemble tokens in the IL disassembly.
5608         
5609         * aot-compiler.c: Add debug info for methods without debug info by
5610         emitting an IL file and having the line number info referencing that file.
5611
5612         * aot-compiler.c: Optimize the size of the generated line number info.
5613
5614         * aot-compiler.c: Emit line number info in xdebug mode.
5615
5616         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5617         million arguments.
5618
5619 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5622
5623         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5624         is used.
5625
5626 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5627
5628         * basic-calls.cs: Test for the weird crash found on arm.
5629         
5630 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5631
5632         * cpu-arm.md: Increase the size of storer8_membase_reg and
5633         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5634
5635         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5636         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5637         reg to LR otherwise we'll be loading/storing from just the offset.
5638
5639 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5640
5641         Question: if we are storing gint32's inside the "*native_offset",
5642         should we change the signature to "gint32 *native_offset" to
5643         ensure that we do not have type definition problems?
5644         
5645         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5646         an int * as this is what the other function expects, causes
5647         problems with Freescale's compiler that defined int32_t to be a
5648         long and makes int incompatible 
5649
5650 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5651
5652         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5653         filename conflict with bjam.
5654
5655 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5656
5657         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5658         as it might use decomposed ops.
5659
5660 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5663
5664         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5665         is defined.
5666
5667         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5668
5669         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5670         offsets.
5671
5672         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5673         way registers are stored in MonoContext on arm.
5674
5675         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5676         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5677
5678         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5679
5680         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5681
5682         * mini.c (mini_init): Register mono_isfinite.
5683
5684         * jit-icalls.c (mono_isfinite): New jit icall.
5685
5686         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5687         
5688         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5689         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5690         the parent frame.
5691
5692 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5693
5694         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5695         separate frame and stack pointers, so we must use FP to find the register
5696         spill area.
5697         The FP reg is retrieved from the MonoContext::regs array.
5698
5699 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5700
5701         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5702         as FPA requires it.
5703
5704 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5705
5706         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5707         return R4 and R8 when not running under softfloat.
5708
5709         Fixes basic-calls.exe
5710
5711 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5712
5713         * mini-arm.c: Implement some overflow opcodes.
5714
5715 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5716
5717         * ssa.c: handle another alloca.h
5718
5719         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5720         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5721         MONO_ARCH_USE_SIGACTION. 
5722
5723         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5724         capability defines.
5725
5726         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5727
5728         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5729         PPC targets as sigaction does not exist on all platforms, define
5730         this on a per-platform basis.
5731
5732         Instead of erroring out if the platform is not defined, include
5733         mini-ppc-os.h, and expect that the OS specific setting provides
5734         the required information.   
5735
5736 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * aot-compiler.c: Fix --enable-minimal=aot.
5739
5740 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5743         previous change.
5744
5745 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * exceptions-arm.c: Fix warnings.
5748
5749         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5750         ARM.
5751
5752         * mini-x86.c: Fix --enable-minimal=jit build.
5753
5754         * mini.c: Really fix --enable-minimal=jit build.
5755         
5756         * mini.c (construct_object_context_for_method): Move this outside
5757         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5758
5759         "Backported" of r124984 from 2.0 branch.
5760         
5761         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5762
5763         "Backport" of r124977 + r124978 from 2.0 branch.
5764         
5765         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5766         to avoid calling mono_exception_from_token () from the throw trampoline.
5767         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5768         for throwing corlib exceptions, this fixes full-aot support for corlib
5769         exceptions.
5770
5771         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5772
5773 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5774
5775         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5776         part of the changes to split the code in mini into operating
5777         system specific files.
5778
5779         This patch was done by copying mini.c to the respective files to
5780         preserve SVN history.
5781
5782 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5785
5786 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5787
5788         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5789         remoting-invoke-with-check wrappers of shared methods.
5790
5791         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5792
5793 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5794
5795         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5796         optimization if the top of stack is the last instruction in the
5797         bblock.  Otherwise it might have been used after its definition.
5798         Fixes #469742.
5799
5800 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5801
5802         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5803         method as well when get_vcall_slot () fails to match a code sequence.
5804
5805         * mini-arm.c: Fix the android build, which doesn't have
5806         __aeabi_read_tp.
5807
5808 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5811         the s390x build.
5812
5813 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5814
5815         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5816
5817 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5820         and put its id into jinfo->used_regs. This is only used on amd64,
5821         which is currently the only platform generating unwind info.
5822
5823         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5824         the dwarf unwinder. This is required to correctly handle async exceptions
5825         like thread abort and stack overflows, which can happen while a method
5826         is in the middle of its prolog or epilog.
5827         
5828         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5829         the unwind info belonging to an AOTed method.
5830
5831         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5832         into cfg->unwind_ops.
5833         
5834         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5835
5836         * mini.c (mini_init): Call mono_unwind_init ().
5837         (mini_cleanup): Call mono_unwind_cleanup ().
5838
5839         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5840         unwind info to be shared between methods.
5841
5842         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5843         saved in the LMF.
5844
5845         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5846         get_throw_pending_exception () to avoid initialization races.
5847
5848         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5849         mono_arch_exceptions_init () function.
5850
5851         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5852
5853 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * mini.c (mono_get_domain_intrinsic): New helper function.
5856         (mono_get_thread_intrinsic): Ditto.
5857
5858         * mini-arm.c mini-ia64.c: Use the new helper functions.
5859         
5860         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5861         the last constrained_call change, since it is needed in the non-AOT
5862         case as well.
5863
5864         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5865         
5866         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5867         mono_get_lmf_addr () on arm eabi linux.
5868
5869 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5870
5871         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5872         code sequence which matches a non-virtual call.
5873
5874 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5875
5876         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5877         stack pointer (r1).
5878
5879 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5882         runtime-invoke wrappers, since they are also shared based on signature.
5883
5884 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5885
5886         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5887         info from the (correct) context.
5888
5889 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5890
5891         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5892         
5893         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5894         using dwarf unwinding info. Not yet used.
5895
5896         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5897
5898 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5899
5900         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5901         descriptors.
5902
5903         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5904         special case and handle mono_arch_delegate_invoke_impl() returning
5905         function descriptors.
5906
5907         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5908         trampolines return function descriptors, too.
5909
5910 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5913         out_of_line optimization.
5914
5915 2009-01-21  Martin Baulig  <martin@ximian.com>
5916
5917         * mini.h
5918         (MonoCompile): Added `disable_deadce_vars' to disable removing
5919         unused variables.
5920
5921         * mini.c
5922         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5923         inside the debugger.
5924
5925         * liveness.c (mono_analyze_liveness): Don't remove any unused
5926         variables if `cfg->disable_deadce_vars' is set.
5927
5928 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5929
5930         * method-to-ir.c: Only apply exception constructor optimization if
5931         the the method actually belongs to an exception class.  Fixes
5932         #467456.
5933
5934 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5935
5936         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5937         change inside a #ifdef __mono_ppc64__.
5938
5939         * aot-compiler.c (compile_method): Remove the previous limitation.
5940
5941         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5942         on type variables in AOTed code.
5943         
5944         * aot-compiler.c (compile_method): Skip generic methods having type 
5945         constraints on their generic parameters.
5946
5947         * aot-compiler.c (compile_method): Check for methods which cannot be
5948         encoded inside RGCTX_FETCH patches as well.
5949
5950         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5951         build.
5952
5953 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5954
5955         * method-to-ir.c: Force the vtable variable in shared generic code
5956         for the case that they might show up on a stack trace where they
5957         are needed.
5958
5959         * mini-exceptions.c: Save and use generic sharing info as well as
5960         IP in stack traces to resolve shared generic instantiations.
5961
5962 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5965         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5966
5967 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5968
5969         * method-to-ir.c: Do generic sharing for array constructors.
5970
5971 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5972
5973         * mini-exceptions.c (mono_print_thread_dump): Add information
5974         about the thread state using wapi_current_thread_desc.
5975
5976 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5977
5978         * basic-simd.cs: Tests for the new constructors. 
5979
5980 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5981
5982         * mini-ops.h: Added OP_EXPAND_*
5983
5984         * cpu-x86.md: Same.
5985
5986         * mini-x86.c (mono_arch_output_basic_block): Same.
5987         
5988         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5989
5990 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5991
5992         * iltests.il.in: Add a test for #467385.
5993
5994 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5995
5996         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5997         thread been cleaned up is not the same currently in execution.
5998
5999         Fixes appdomain-unload crashes on windows, osx and linux variants
6000         without the __thread keyword.
6001
6002 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6005         (koush@koushikdutta.com). Implement this for android.
6006
6007         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6008         begins with a digit.
6009
6010         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6011         mono_marshal_get_write_barrier ().
6012
6013 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6014
6015         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6016         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6017         that pass them on a register pair.
6018
6019         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6020         test was crashing due to that.
6021
6022 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6023
6024         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6025         trampoline code. Include ucontext.h only if available.
6026
6027 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6028
6029         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6030         and doesn't check whether it's sharable, like it was before
6031         removing the shared generics hash.  This brings IronPython
6032         performance back to what it was before that change.
6033
6034 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6035
6036         * method-to-ir.c: Handle delegate invocation optimization earlier,
6037         otherwise it would be handled (much more slowly) by the
6038         final/sealed optimization.
6039
6040 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6041
6042         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6043         domain is not set. Fixes #465864.
6044
6045 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6046
6047         * method-to-ir.c: Don't stop sharing of generic methods with catch
6048         clauses - we already handle those.
6049
6050 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6051
6052         * mini.c, mini.h: lookup_generic_method() is now
6053         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6054         making the shared_generics_hash obsolete.
6055
6056 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6057
6058         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6059         use the red zone.  Make room on the stack first and then use it,
6060         not the other way around.
6061
6062 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6063
6064         * mini.c (mini_init): Call mono_xdebug_init ().
6065
6066         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6067
6068 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6071
6072         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6073         trampolines.
6074
6075         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6076         debug+unwind info for trampolines.
6077
6078         * mini.c (mono_create_unwind_op): New helper function.
6079
6080         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6081
6082 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * aot-compiler.c: Fix the build.
6085
6086 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6087
6088         * Makefile.am: Update dtrace-prelink.sh location.
6089
6090 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6091
6092         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6093         optimization. Fixes #464520.
6094
6095 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6096
6097         * mini-amd64.c : Adding code to save/restore non-volatile registers
6098            on Winx64.
6099
6100         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6101           registers on Winx64.
6102
6103         Contributed under MIT/X11 license.
6104
6105 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6108         __GNUC_MINOR__ which can break when the major version changes.
6109
6110 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6111
6112         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6113
6114 2009-01-07  Geoff Norton  <gnorton@novell.com>
6115
6116         * helpers.c:  Allow mono -v -v -v to work on darwin.
6117
6118 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6119
6120         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6121           pattern. 
6122
6123         Contributed under MIT/X11 license.
6124
6125 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6128         instead of directly accessing type->data.klass. Fixes #462016.
6129         (mono_allocate_stack_slots_full): Ditto.
6130
6131         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6132         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6133
6134         * aot-compiler.c (emit_plt): Fix ARM build.
6135
6136 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6139         
6140         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6141         change.
6142
6143         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6144         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6145         #463357.
6146
6147         * iltests.il.in: Add a regression test.
6148
6149 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6150
6151         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6152
6153 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * basic-simd.cs: Add a regression test for #462457.
6156
6157 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6158
6159         * mini-ops.h: Add a definition of XPHI.
6160
6161         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6162
6163         * ssa.c (op_phi_to_move): Handle XPHI.
6164
6165         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6166
6167         Fixes #462457
6168
6169 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6172
6173 2008-12-31  Geoff Norton  <gnorton@novell.com>
6174
6175         * mini-ppc.c: The prolog size allocated can be too small for darwin
6176         ppc32 under certain circumstances.  Also fix a small logic bug.
6177
6178 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6179
6180         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6181         while loading AOT methods.
6182
6183         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6184         since only the former is nulled out after a successful cast. This prevents
6185         crashes with rethrown exceptions when using --debug=casts.
6186
6187 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6188
6189         * mini.h: New macro for checking whether a method is final,
6190         i.e. whether the method or its class is marked final.
6191
6192         * method-to-ir.c: Use the new macro for all final-checks
6193         consistently.  Fixes the crash in the System.ServiceModel tests.
6194
6195 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6196
6197         * mini-exceptions.c (get_exception_catch_class): Corrected another
6198         overly strict assertion.
6199
6200 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6201
6202         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6203         Clobbering it is not allowed because the caller might use it as
6204         the vtable register in the interface call.
6205
6206 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6207
6208         * mini-exceptions.c (get_exception_catch_class): Corrected an
6209         overly strict assertion.
6210
6211 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6212         
6213         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6214
6215         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6216
6217         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6218
6219         * cpu-mips.md: correct lengths for certain long_ opcodes.
6220
6221         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6222
6223         * 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().
6224         
6225 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6226
6227         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6228         
6229 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6230         
6231         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6232         
6233 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6234
6235         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6236         next basic block.
6237         
6238 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6239
6240         * 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
6241
6242         * 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)
6243         
6244 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6245         
6246         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6247         
6248 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6251         gshared code. Fixes #458947.
6252
6253         * generics.cs: Add a test.
6254
6255 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6256         
6257         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6258         
6259         * mini-mips.c: first pass n32 code generation.
6260
6261         * mini-mips.h: datatypes and defines for n32 support.
6262
6263         * exceptions-mips.c: first pass n32 code generation.
6264         
6265         * tramp-mips.c: first pass n32 code generation.
6266         
6267         * cpu-mips.md: add long_ opcodes.
6268         
6269 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6270
6271         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6272
6273         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6274         
6275         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6276         
6277         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6278
6279         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6280
6281         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6282
6283         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6284
6285         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6286
6287         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6288
6289 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6292
6293 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6294
6295         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6296
6297 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6298
6299         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6300         descriptors for helper functions directly in front of the code.
6301
6302 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6303
6304         * method-to-ir.c: Removed an unnecessary assertion.
6305
6306 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * method-to-ir.c: Merge SGEN changes from the old JIT.
6309
6310 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6311
6312         * driver.c (compile_all_methods_thread_main): Handle failure of
6313         mono_get_method ().
6314
6315 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6316
6317         * mini-ppc.c: Merged with mini-ppc64.c.
6318
6319         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6320
6321         * Makefile.am: Use the same sources for PPC and PPC64.
6322
6323         * mini-ppc64.c: Removed.
6324
6325 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6326
6327         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6328         code to mono_bb_is_fall_through.
6329         
6330         * branch-opts.c (mono_remove_critical_edges): Same.
6331
6332 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6333
6334         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6335         expect that an OP_BR_REG will be there.
6336
6337 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6338
6339         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6340         for the many branch ops. The original check miss OP_BR_REG.
6341
6342         Fixes #457574.
6343         
6344 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6345
6346         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6347
6348 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6351         while holding the aot lock.
6352
6353 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6354
6355         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6356         
6357 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6358
6359         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6360           to release all runtime callable wrappers held by the runtime.
6361
6362         Contributed under MIT/X11 license.
6363
6364 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6365
6366         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6367           for Winx64.
6368
6369         Contributed under MIT/X11 license.
6370
6371 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6374         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6375
6376 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6377
6378         * cpu-mips.md: fix ckfinite length
6379
6380         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6381         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6382         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6383         
6384 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6385
6386         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6387         
6388 2008-12-08  Geoff Norton  <gnorton@novell.com>
6389
6390         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6391         size by 8 bytes as well.
6392
6393 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * basic-simd.cs: Fix method names for Vector16b.
6396         
6397 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6398
6399         * basic-simd.cs: Fix method names for Vector16sb.
6400
6401 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * basic-simd.cs: Fix method names for Vector8us.
6404         
6405 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * basic-simd.cs: Fix method names for Vector8s.
6408         
6409 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6410
6411         * basic-simd.cs: Fix method names for Vector4ui.
6412
6413 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6414
6415         * basic-simd.cs: Fix method names for Vector2l.
6416
6417 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * basic-simd.cs: Fix method names for Vector2d.
6420
6421 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6424         that are extension methods.
6425
6426 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6427
6428         * basic-simd.cs: Fix method names for Vector4f.
6429
6430 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6433         as such. Fixes #456669.
6434
6435 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6436
6437         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6438         
6439 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6440
6441         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6442         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6443         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6444         (mips_adjust_stackframe): handle FP spills
6445                 
6446         * mini-ops.h: add mips_mtc1_s2
6447         
6448         * cpu-mips.md: add mips_mtc1_s2
6449         
6450 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6451
6452         * unwind.c: New file, move the unwind info encoding functions here from
6453         aot-compiler.c, so they could be used at runtime too.
6454
6455 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6456
6457         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6458         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6459         
6460 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6461
6462         * mini-mips.c: cleanup warnings
6463         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6464         (mips_adjust_stackframe): handle case of taking the address of stack locals
6465         
6466 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * aot-compiler.c: Implement a few functions missing from the asm writer.
6469         (emit_method_code): Only write symbols for methods when using the bin
6470         writer, since the assembler can't deal with the characters in our method
6471         names.
6472
6473         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6474
6475         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6476         call.
6477
6478         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6479         a bit to also restore %rax.
6480
6481 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6482
6483         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6484
6485 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6486
6487         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6488         arguments.
6489
6490 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6491
6492         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6493
6494         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6495         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6496
6497         * exceptions-ppc64.c: Removed.
6498
6499         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6500
6501 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6502
6503         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6504         tramp-ppc64.c.
6505
6506         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6507
6508         * tramp-ppc64.c: Removed.
6509
6510 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6513         the TYPESPEC table.
6514
6515 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6516
6517         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6518
6519         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6520         mini-ppc.h instead of mini-ppc64.h.
6521
6522         * mini-ppc64.h: Removed.
6523
6524 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6525
6526         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6527         
6528         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6529         
6530 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6531
6532         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6533         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6534         code easier.
6535
6536 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6539
6540 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6543
6544 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * basic-simd.cs: Tests for operator == and != on Vector4f.
6547
6548 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6551
6552         * simd-intrinsics.c: Kill useless enum.
6553
6554 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6555
6556         * cpu-mips.md: add long_conv_to_ovf_i4_2
6557         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6558
6559 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6560
6561         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6562         
6563         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6564
6565 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6566
6567         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6568         
6569 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6570
6571         * basic-simd.cs: Add tests for new methods.
6572
6573 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6574
6575         * simd-intrinsics.c: Add support for operator == and !=
6576         on Vector4(u)i.
6577
6578         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
6579
6580 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
6583
6584 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
6585
6586         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
6587
6588         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
6589         MONO_PATCH_INFO_ICALL_ADDR.
6590
6591         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
6592
6593         * aot-compiler.c: Resurrect full-aot support.
6594
6595 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6596
6597         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
6598         
6599 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6600
6601         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
6602         
6603 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
6604
6605         * basic-simd.cs: Fix tests to work under ppc.
6606         Remove tests for methods that will be removed.
6607
6608 2008-12-03  Mark Probst  <mark.probst@gmail.com>
6609
6610         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
6611         generic type (via a typedef or typeref) correctly.
6612
6613 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6614
6615         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6616         diagnose an assertion failure.
6617
6618 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6619
6620         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6621         Fix trampoline size.
6622
6623         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6624         conversion opcodes are implemented natively instead via emulation.
6625
6626 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6627
6628         * cpu-mips.md: remove mips_xori
6629
6630         * mini-ops.h:  remove mips_xori
6631
6632         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6633
6634         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6635         
6636         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6637         
6638 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6639
6640         * cpu-mips.md: fix instruction lengths.
6641
6642         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6643
6644         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6645
6646         * mini-ops.h: fix slti / sltiu op profiles.
6647         
6648 2008-12-02  Martin Baulig  <martin@ximian.com>
6649
6650         * method-to-ir.c (mono_method_to_ir): Disable debugging
6651         information for the init locals block to make the debugger stop
6652         after all locals have been initalized.
6653
6654 2008-12-02  Martin Baulig  <martin@ximian.com>
6655
6656         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6657         running inside the debugger.
6658
6659 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6662         is enabled.
6663
6664         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6665         alu->alu imm optimization which only shows if deadce is disabled.
6666
6667         * aot-compiler.c: Rename the function names for the binary and asm writers
6668         so they can coexist in the same process. Rework the xdebug code to use the
6669         asm writer. This avoids the need to call into the runtime to dump the
6670         debugging info. Add more debugging info for types.
6671
6672         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6673
6674         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6675         cpu description tables, they can't occur in cpu-<ARCH>.md.
6676
6677         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6678         the stack in CEE_LDFLDA. Fixes #450542.
6679
6680         * generics.cs: Add a new test.
6681
6682 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6683
6684         * mini-ops.h: updated MIPS opcodes
6685         * mini-mips.c: decompose long opts
6686         * mini-mips.h: decompose long opts
6687         
6688 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6689
6690         * cpu-mips.md: fix length on int_rem_un
6691         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6692         
6693 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6696
6697         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6698
6699 2008-11-29  Martin Baulig  <martin@ximian.com>
6700
6701         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6702         mono_debug_using_mono_debugger() in addition to the
6703         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6704
6705 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6706
6707         * mini-ops.h: updated more MIPS opcodes
6708         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6709         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6710         
6711 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6712
6713         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6714
6715 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6716
6717         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6718         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6719         * mini-ops.h: correct selected mips opcode entries
6720         
6721 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6722
6723         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6724         make them work.
6725
6726 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6727
6728         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6729
6730 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6731
6732         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6733         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6734         * mini-mips.h: disable IMT
6735         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6736         
6737 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6738
6739         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6740
6741 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6742
6743         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6744
6745 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6748         consistency.
6749
6750 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6751
6752         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6753         for Set/GetVector aligned versions.
6754
6755 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6756
6757         * basic-simd.cs: Add tests for Get/SetVector.
6758
6759 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6760
6761         * mini.c: Removed g_slist_append_mempool().  Now in
6762         metadata/mempool.c.
6763
6764 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6765
6766         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6767         size properly and make the bounds check optional.
6768
6769         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6770         for SetVector and IsAligned.
6771
6772 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6773
6774         * mini.c: Remove unused mono_normalize_opcodes () function.
6775
6776 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6777
6778         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6779         using the new atomic add ops now.
6780
6781         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6782         add.
6783
6784 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6785
6786         * mini-ppc64.c: Several fixes.
6787
6788 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6789
6790         * cpu-mips.md: added jump_table
6791         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6792
6793 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6794
6795         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6796
6797 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6798
6799         * mini-ops.h: corrected a handful of MIPS opcodes.
6800
6801 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6802
6803         * aot-compiler.c: MIPS to use ELF writer
6804
6805 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6806
6807         * mini-codegen.c: remove MIPS specific assert.
6808
6809 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6810
6811         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6812         fixes.  PPC64 now passes most of the runtime regressions.
6813
6814 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6817         volatile intervals a bit.
6818
6819 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6820
6821         * basic-long.cs: New test case.
6822
6823 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * mini.c (mini_method_compile): Disable globalra for large methods for 
6826         now.
6827
6828         * regalloc2.c (order_moves): Add fp support.
6829
6830         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6831         source bblock ends with an OP_BR_REG.
6832
6833         * ratests.cs: Add a new test.
6834
6835 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6836
6837         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6838         sharing.  PPC64 now passes generics.exe.
6839
6840 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6841
6842         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6843
6844 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6845
6846         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6847         memory when mono_jit_info_table_find () can't find the method in the
6848         LMF case.
6849
6850         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6851         AOTed code too.
6852         
6853         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6854         writer too.
6855
6856 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6857
6858         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6859         Several fixes.  PPC64 now runs exceptions.exe and
6860         devirtualization.exe.
6861
6862 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6863
6864         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6865         arrays.exe and basic-math.exe.
6866
6867 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6868
6869         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6870         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6871
6872 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6875
6876 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6879
6880         * ir-emit.h: Move macros from method-to-ir.c to here.
6881
6882 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6883
6884         * mini-ops.h: Correct the long simd ops to use LREG.
6885
6886 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6887
6888         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6889         
6890         * mini-ops.h: Correct the dreg type of a few long opcodes.
6891
6892         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6893         Add netbsd support.
6894
6895 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6896
6897         * mini-ppc.c: remove negative stack references in epilog
6898         for platforms that don't support the red zone.
6899
6900 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6901
6902         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6903         point regs.  Now PPC64 passes basic-calls.exe.
6904
6905 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6906
6907         * basic-simd.cs: Add tests for accessors of Vector2l.
6908
6909 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6910
6911         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6912
6913         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6914         
6915         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6916
6917 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6918
6919         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6920         PPC64 passes basic-long.exe.
6921
6922 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6923
6924         * decompose.c: Decompose carry and overflow add on PPC64 like on
6925         other 64 bit archs.  Don't decompose sub at all on PPC64.
6926
6927         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6928         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6929         basic-long.exe.
6930
6931 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6932
6933         * basic-simd.cs: Add tests for accessors of Vector2d.
6934
6935 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6936
6937         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6938
6939         * cpu-x86.md: Same.
6940
6941         * mini-x86.c (mono_arch_output_basic_block): Same.
6942         
6943         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6944
6945 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6946
6947         * basic-simd.cs: Add tests for accessors of Vector4f.
6948
6949 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6950
6951         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6952
6953         * cpu-x86.md: Same.
6954
6955         * mini-x86.c (mono_arch_output_basic_block): Same.
6956         
6957         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6958
6959 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6960
6961         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6962
6963 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6964
6965         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6966
6967         * cpu-x86.md: Same.
6968
6969         * mini-x86.c (mono_arch_output_basic_block): Same.
6970         
6971         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6972
6973 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6974
6975         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6976
6977 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6978
6979         * simd-intrinsics.c: Enable setters for Vector16sb.
6980
6981 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6982
6983         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6984
6985         * cpu-x86.md: Same.
6986
6987         * mini-x86.c (mono_arch_output_basic_block): Same.
6988         
6989         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6990
6991 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * simd-intrinsics.c: Implement setter for Vector8us.
6994
6995 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6996
6997         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6998         for dead variables.
6999
7000 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7001
7002         * mini-ppc.c: remove references to the red zone in the prolog
7003         (for systems that don't support it).
7004
7005 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7006
7007         * cpu-ppc64.md: Fixed a few instruction lengths.
7008
7009         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7010         now.
7011
7012 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7013
7014         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7015         basic.exe now.
7016
7017 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7018
7019         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7020
7021 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7022
7023         * mini-ops.h: Added OP_INSERT_I2.
7024
7025         * cpu-x86.md: Same.
7026
7027         * mini-x86.c (mono_arch_output_basic_block): Same.
7028         
7029         * simd-intrinsics.c: Implement setter for Vector8s.
7030
7031         * simd-methods.h: Add the names of get setters of Vector8s.
7032
7033 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7036         
7037         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7038         parameters.
7039
7040         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7041
7042 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7043
7044         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7045         for PPC64.  An empty program runs now.
7046
7047 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7048
7049         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7050
7051         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7052         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7053         info for JITted code is emitted into a shared library, loadable into gdb.
7054
7055 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7056
7057         * Makefile.am: Changes to build PPC64.
7058
7059         * mini-arch.h: Include mini-ppc64.h on PPC64.
7060
7061 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7062
7063         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7064         in PPC code up to r119147.
7065
7066 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7067
7068         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7069         cpu-ppc64.md: Changes for PPC64.
7070
7071         Based on code submitted by andreas.faerber@web.de at
7072         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7073         X11/MIT license.
7074
7075 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7076
7077         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7078         cpu-ppc64.md: Copied from the corresponding PPC files from
7079         r118846.
7080
7081 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7082
7083         * mini-ops.h: Added OP_ROUND.
7084
7085         * cpu-x86.md: Added round.
7086
7087         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7088
7089         * basic-math.cs: Added test_0_round to test rounding.
7090
7091         Contributed under MIT/X11 license.
7092
7093 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7094
7095         * aot-compiler.c : Fix the Winx64 build.
7096
7097         Contributed under MIT/X11 license.
7098
7099 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7102         in OP_EXTRACT_R8 to avoid possible stack corruption.
7103
7104 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7105
7106         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7107
7108         * cpu-x86.md: Added extract_r8.
7109
7110         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7111         
7112         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7113         a couple of OP_EXTRACT_I4.
7114
7115         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7116
7117         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7118
7119 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7120
7121         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7122         and not 4.1. 
7123
7124 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7127         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7128
7129         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7130         are not needed any more.
7131
7132         * mini.h: Remove the unused INS_LIST macros.
7133
7134         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7135         longer needed.
7136
7137         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7138         ir-emit.h.
7139
7140         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7141         mono_alloc_ireg () instead.
7142
7143         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7144         macros.
7145
7146         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7147         on amd64.
7148
7149         * aot-runtime.c (load_aot_module): Disable AOT when running under
7150         CAS.
7151
7152         * mini-amd64.h: Change the monitor fastpath defines to check for
7153         !PLATFORM_WIN32 so they work on *bsd too.
7154
7155         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7156
7157         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7158
7159         * mini.h (MonoCompile): Remove new_ir flag.
7160
7161         * regalloc.h regalloc.c: Remove unused code.
7162
7163         * cpu-*.md: Remove more unused opcodes.
7164
7165         * simple-cee-ops.h simple-mini-ops.h: Removed.
7166
7167         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7168         
7169 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * aliasing.h: Removed.
7172
7173         * *.c: Remove references to aliasing.h and inssel.h.
7174
7175         * mini.c: Remove additional unused functions.
7176
7177         * mini-ops.h cpu-*.md: Remove unused opcodes.
7178
7179 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7180
7181         Remove the old JIT code.
7182
7183         * inssel*.brg: Removed.
7184
7185         * ssa.c abcremoval.c aliasing.c: Removed.
7186
7187         * ssa2.c: Renamed to ssa.c.
7188
7189         * abcremoval2.c: Renamed to abcremoval.c.
7190
7191         * *.c: Removed all !cfg->new_ir code.
7192
7193         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7194         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7195
7196         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7197         
7198 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7201         to simplify the code and cut back on the number of global symbols in the AOT
7202         file.
7203         
7204         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7205
7206 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7207
7208         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7209         with the got/got_info tables.
7210
7211         * mini.h: Bump AOT file format version.
7212         
7213         * unwind.h: New file, contains definitions for stack unwinding.
7214
7215         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7216         to cfg->unwind_ops.
7217         
7218         * aot-compiler.c: Generalize the emitting of unwind information to use the
7219         information in cfg->unwind_ops.
7220
7221         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7222
7223         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7224         AOT method frames. Enable writing symbols for methods by default.
7225
7226 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7227
7228         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7229         and make it work with vectors of element sizes 1, 2 and 4.
7230
7231         * simd-intrinsics.c: Enable getter for all vectors with element size
7232         1, 2 or 4.
7233
7234         * simd-methods.h: Add the names of other getters.
7235
7236         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7237
7238         * cpu-x86.md: Same.
7239
7240         * mini-x86.c: Same.
7241
7242 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7243
7244         * mini-ppc.h: portability fix.
7245
7246 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7247
7248         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7249         buggy and will overwrite it.
7250
7251 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7252
7253         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7254         Use it to emit local symbols for all methods so AOTed methods show up with
7255         their full name in gdb/valgrind output.
7256
7257 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7258
7259         * mini-ppc.c: portability fixes.
7260
7261 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7262
7263         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7264         entries out of the if (!generic_shared...) code so it is always done.
7265         (mono_class_init_trampoline): Do the patching when running under valgrind
7266         too, newer versions of valgrind have no problems with it.
7267
7268 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7271         further sections.
7272
7273 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7274
7275         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7276         filters.
7277
7278 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7279
7280         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7281
7282 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7283
7284         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7285
7286         * cpu-x86.md: Same.
7287
7288         * mini-x86.c: Same.
7289
7290         * simd-intrinsics.c: Same.
7291
7292 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7295
7296 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7297
7298         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7299         to work with more Vector types.
7300
7301 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7304         store the elemens directly instead of using and intermediate.
7305
7306 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7307
7308         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7309
7310         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7311         to preserve %eax for aot plt trampolines.
7312
7313         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7314         (encode_method_ref): Flag synchronized methods so they won't go through
7315         the AOT trampoline.
7316
7317         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7318         wrappers.
7319
7320         * cpu-ia64.md (jmp): Increase max length.
7321
7322 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7323
7324         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7325         open generic classes.
7326
7327         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7328
7329         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7330         box+brtrue optimization since it causes test failures on x86.
7331
7332 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7333
7334         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7335
7336         * cpu-x86.md: Same.
7337
7338         * mini-x86.c: Same.
7339
7340         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7341         for simd ctor values. 
7342
7343         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7344         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7345
7346 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7347
7348         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7349         LogicalRightShift.
7350
7351         * simd-instrincs.c: Same.
7352
7353         * basic-simd.cs: Same.
7354
7355 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7356
7357         * ratests.cs: Add more tests.
7358
7359         * regalloc2.c (add_spill_code): Handle more corner cases.
7360
7361 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7362
7363         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7364         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7365         both the source an destination of an instruction.
7366
7367 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7368
7369         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7370         wapihandles.c: more portability changes.
7371
7372 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7373
7374         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7375         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7376         safe to execute in a signal handler and the kernel provides better
7377         the info in /proc/self/smaps. Avoid the assert on sigaction during
7378         cleanup.
7379
7380 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7383         do the bblock linking hack if it is actually needed.
7384
7385         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7386         up linking.
7387
7388         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7389         crash problem is fixed.
7390
7391         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7392         bblocks.
7393
7394         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7395         for catch clauses.
7396         (mini_method_compile): Set the starting value of next_vreg to 
7397         MAX_IREGS + MAX_FREGS when using globalra.
7398
7399         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7400         filter clauses with BB_EXCEPTION_HANDLER.
7401
7402         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7403
7404 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7405
7406         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7407         space for stdcall.  Fixes regressions on Win32.
7408
7409 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7410
7411         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7412         bblocks.
7413         (linear_scan): Remove an assert which doesn't seem to be needed.
7414
7415         * local-propagation.c (mono_local_deadce): Avoid a call to
7416         MONO_DELETE_INS which would screw up the instruction linking.
7417
7418         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7419
7420         * regalloc2.c: Upgrade to work the current JIT code.
7421
7422 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7423
7424         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7425         case.
7426
7427         * aot-runtime.c: Remove some dead code.
7428
7429         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7430         consistency.
7431         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7432
7433         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7434         trampolines using sscanf since atoi doesn't work on large unsigned values.
7435
7436         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7437         Initialize code_size.
7438
7439 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7440
7441         * method-to-ir.c (mini_emit_inst_for_method): Make
7442         Interlocked.CompareExchange work for Int arguments on 32 bit
7443         archs, as well.
7444
7445 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7446
7447         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7448
7449 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7450
7451         * main.c Fix MSVC build.
7452
7453         Contributed under MIT/X11 license.
7454
7455 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7456
7457         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7458         alignment larger than 8 bytes are aligned correctly, too.
7459
7460         * mini.c: Honor the min_align field of MonoClass when laying out
7461         the stack.
7462
7463 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7466
7467         * aot-compiler.c (emit_plt): Fix a warning.
7468         
7469         * aot-compiler.c: Implement ARM support in the binary writer.
7470
7471 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7472
7473         * basic-simd.cs: Add test for getter with byref arg.
7474         Fix the naming of a few tests.
7475         Add missing checks to a test.
7476
7477 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7480
7481         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7482         most of the full-aot support for monitor enter/exit trampolines.
7483
7484         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7485         enter/exit trampoline creation functions.
7486
7487         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7488         make dist.
7489
7490 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7491
7492         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7493         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7494         implement the needed functionality without adding crap to the runtime.
7495
7496 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7499         non-x86 builds.
7500
7501         * mini.c (mono_build_date): New global version holding the build date in
7502         string format.
7503         
7504         * Makefile.am (buildver.c): Generate a file containing the build date.
7505
7506         * main.c: Set the build date from the generated file.
7507
7508         * mini.c (mono_get_runtime_build_info): New helper function returning build
7509         information in a string format.
7510         
7511         * driver.c (mono_main): Print the build date in --version.
7512
7513         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7514         file when the bind-to-runtime-version option is used.
7515
7516 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7517
7518         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7519
7520 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7521
7522         * simd-methods.h: Rename prefetch methods.
7523
7524         * simd-intrinsics.c: Same.      
7525
7526 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7527
7528         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7529         sizes.
7530
7531 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7532
7533         * aot-compiler.c: Use the bundled elf header files instead of depending on
7534         the system one.
7535         
7536         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7537         mempool.
7538
7539         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7540         on every call.
7541
7542 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7543
7544         * cpu-x86.md: Add store nta ops.
7545
7546         * mini-ops.h: Same.
7547
7548         * mini-x86.c: Same.
7549
7550         * mini.h: Add an enum for simd prefetch modes.
7551
7552         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7553         of store. Use the changed code to support store nta.
7554
7555         * simd-intrinsics.c: Add prefetch ops for all vector types.
7556
7557 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7558
7559         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7560         threads.
7561         
7562         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7563         names.
7564
7565         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7566         trampolines.
7567
7568 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7569
7570         * mini-x86.c: Fixed commit.
7571
7572 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7575
7576 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7577
7578         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
7579         and MONITOR_EXIT, for the ASM fastpaths.
7580
7581         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
7582         available.
7583
7584         * mini.c, patch-info.h: Signature and patch infos for
7585         Monitor.Enter/Exit trampolines.
7586
7587         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
7588
7589         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
7590         Monitor.Enter/Exit ASM fastpath for Linux.
7591
7592 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7593
7594         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
7595
7596         * objects.cs: Add a new test.
7597         
7598         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
7599
7600         * aot-runtime.c (load_method): Run class initialization in the PLT case even
7601         if MONO_LOG_LEVEL is set.
7602
7603         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
7604
7605         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
7606
7607         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
7608         
7609         * aot-compiler.c: Change the relocation code to use virtual addresses instead
7610         of file offsets. Align the sections belonging to the data segment to 
7611         PAGESIZE.
7612
7613 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7614
7615         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7616         elf.h. Port it to amd64.
7617
7618 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7619
7620         * driver.c: Enable SIMD by default.
7621
7622 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7623
7624         * cpu-x86.md: Add prefetch op.
7625
7626         * mini-ops.h: Same.
7627
7628         * mini-x86.c: Same.
7629
7630         * mini.h: Add an enum for simd prefetch modes.
7631
7632         * simd-methods.h: Add prefetch function names.
7633
7634         * simd-intrinsics.c: Add prefetch ops for all vector types.
7635
7636 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7637
7638         * aot-compiler.c (emit_bytes): Speed this up a little.
7639
7640 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7641
7642         * aot-compiler.c: Add JIT time etc. statistics.
7643         
7644         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7645
7646         * mini.h (MonoCompile): Add 'got_offset' field.
7647
7648         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7649         method_got_offsets array.
7650
7651         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7652         wrappers.
7653
7654         * aot-compiler.c (compile_method): Add generic method instances referenced
7655         by the method to the list of methods to be compiled, this is required so if
7656         A<T> references B<T>, and another assembly references A<int>, then it will
7657         also get a copy of B<int>.
7658
7659         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7660         when checking for monitor enter/exit.
7661
7662 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7663
7664         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7665         for Monitor.Enter and Monitor.Exit if enabled.
7666
7667         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7668         Solaris.
7669
7670 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7671
7672         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7673         of an OP_MOVE. Fixes #440046.
7674
7675         * basic-long.cs: Add a new test.
7676
7677 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * mini.h: Add synchronization note for the managed counter-part.
7680
7681         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7682         returns the simd caps of the current cpu.
7683
7684 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7685
7686         * basic-simd.cs: Remove Console.WriteLine.
7687
7688 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7689
7690         * basic-simd.cs: New tests for Vector2ul.
7691
7692 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7693
7694         * simd-intrinsics.c: Add new vector type Vector2ul.
7695
7696 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7697
7698         * basic-simd.cs: New tests for Vector2l.
7699
7700 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * cpu-x86.md: Add long version of most packed int ops.
7703
7704         * mini-ops.h: Same.
7705
7706         * mini-x86.h: Same.
7707
7708         * simd-intrinsics.c: Add new vector type Vector2l.
7709
7710 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7713
7714         * simd-methods.h: Remove SN_op_BitwiseXor.
7715
7716 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7719         alignment.
7720
7721 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7722
7723         * basic-simd.cs: Test for Vector2d.
7724
7725         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7726         value.
7727
7728 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * cpu-x86.md: Add double version of all packed float ops.
7731
7732         * mini-ops.h: Same.
7733
7734         * mini-x86.h: Same.
7735
7736         * simd-intrinsics.c: Add new vector type Vector2d.
7737
7738         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7739
7740         * simd-methods.h: Add Duplicate.
7741
7742 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7743
7744         * basic-simd.cs: Test for packing with signed saturation.
7745
7746 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7747
7748         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7749         found in the TYPESPEC table.
7750
7751 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7752
7753         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7754         too.
7755
7756         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7757
7758         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7759         instead of the RVA, since the RVA can be changed by tools like the cil 
7760         stripper.
7761
7762         * method-to-ir.c (mono_method_to_ir2): Ditto.
7763
7764         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7765         (deserialize_variable): Ditto.
7766
7767 2008-10-25  Martin Baulig  <martin@ximian.com>
7768
7769         * debug-mini.c (write_variable): Use
7770         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7771
7772 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7773
7774         * cpu-x86.md: Add unsigned variants of packd and packw.
7775
7776         * mini-ops.h: Same.
7777
7778         * mini-x86.h: Emit the right instruction for packd and packw.
7779         Add unsigned variants of packd and packw.
7780
7781         * simd-intrinsics.c: Packd and packw were used in place of their
7782         unsigned variants. Change that.
7783         Add intrinsics for (Signed)PackWithSignedSaturation.
7784
7785         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7786
7787 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7790
7791 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7794
7795         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7796
7797         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7798         sse instructions.
7799
7800         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7801
7802 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7803
7804         * method-to-ir.c, mini.c: Special casing for the synchronized
7805         wrapper for the ldtoken+GetTypeFromHandle case.
7806
7807 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7808
7809         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7810
7811         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7812         created/split bblocks.
7813
7814 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7815
7816         * mini-ops.h: Add packed signed mul high.
7817         
7818         * cpu-x86.md: Same.
7819
7820         * mini-x86.c (mono_arch_output_basic_block): Same.
7821
7822         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7823
7824         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7825
7826 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7827
7828         * basic-simd.cs: Tests for Vector16sb.
7829
7830 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7831
7832         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7833
7834 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7835
7836         * mini-ops.h: Add packed signed min, max and compare greater.
7837         
7838         * cpu-x86.md: Same.
7839
7840         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7841         saturation.
7842
7843         * simd-methods.h: Add CompareGreaterThan.
7844
7845         * simd-methods.h: Remove CompareEquals.
7846
7847         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7848
7849         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7850
7851         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7852         CompareEqual.
7853
7854 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7855
7856         * basic-simd.cs: Fix tests due to change in the API.
7857
7858 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7861
7862 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7863
7864         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7865
7866         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7867         inst_offset as this has invalid values for LDADDR.
7868
7869 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7870
7871         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7872
7873         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7874
7875 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7878         for accessing field->data.
7879
7880 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7881
7882         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7883
7884 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7885
7886         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7887
7888         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7889
7890 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7893         from the cfg mempool.
7894
7895 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * basic-simd.cs: Tests for new methods in Vector8us.
7898
7899 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7900
7901         * mini-ops.h: Add multiply and store high.
7902         
7903         * cpu-x86.md: Same.
7904
7905         * mini-x86.c (mono_arch_output_basic_block): Same.
7906
7907         * simd-methods.h: Same.
7908
7909         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7910         and CompareEqual.
7911
7912 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7915         mono_class_setup_vtable ().
7916
7917         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7918         mono_class_get_vtable_entry () for accessing klass->vtable.
7919
7920         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7921
7922         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7923         found.
7924
7925         * method-to-ir.c (mono_save_token_info): Don't save references made from
7926         wrappers.
7927
7928         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7929         of generic instances.
7930
7931         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7932
7933 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7934
7935         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7936         OP_JMP depends on the method signature.  Calculate it properly.
7937
7938 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7939         
7940         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7941         called directly.
7942
7943         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7944         instances.
7945         (emit_extra_methods): Add another table mapping method indexes to 
7946         offsets in the extra_method_info table.
7947
7948         * mini.h: Bump AOT file format version.
7949         
7950         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7951         and mono_aot_get_method_from_token () into one function.
7952
7953 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7954
7955         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7956         separate counter.
7957
7958 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7961         methods.
7962
7963         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7964         disable_aot.
7965
7966         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7967
7968         * mini.h: Bump aot file format version.
7969
7970         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7971         AOT file can contain native code for methods which are not in the METHOD
7972         table. Generate code for non-sharable generic instances of generic methods
7973         found in the METHODSPEC table.
7974         
7975         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7976         encoding generic type handles.
7977
7978         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7979         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7980
7981         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7982         macros + MONO_ADD_INS.
7983
7984         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7985         context as well.
7986
7987         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7988
7989         * mini.h: Bump aot file format version.
7990
7991         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7992
7993 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7994
7995         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7996         platforms, with definable stack alignment value.  Set to 16 now
7997         for all platforms.
7998
7999         * mini.c, mini.h, driver.c: Command line option for disabling
8000         stack alignment.
8001
8002 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8003
8004         * basic-simd.cs: Tests for new methods in Vector4ui.
8005
8006 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8007
8008         * mini-ops.h: Add packed int shuffle.
8009         
8010         * cpu-x86.md: Same.
8011
8012         * mini-x86.c (mono_arch_output_basic_block): Same.
8013
8014         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8015         extract mask, max, min, shuffle.
8016
8017         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8018
8019 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * basic-simd.cs: Tests for new methods in Vector8us.
8022
8023 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8024
8025         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8026         RuntimeTypeHandle, not a TypedReference.
8027
8028 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8029
8030         * simd-intrinsics.c: remove relocations.
8031
8032 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8033
8034         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8035         optimizations from the x86 backend.
8036
8037 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8038
8039         * simd-methods.h, simd-intrinsics.c: debloat method names and
8040         prepare for no relocations.
8041
8042 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8043
8044         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8045         
8046         * cpu-x86.md: Same.
8047
8048         * mini-x86.c (mono_arch_output_basic_block): Same.
8049
8050         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8051         extract mask, max, min and sum of absolute differences.
8052
8053         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8054         method name.
8055
8056 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8057
8058         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8059         Renamed one test for consistency.
8060
8061 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8062
8063         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8064         fix to the code that deal with other blocks.
8065
8066 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8067
8068         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8069
8070 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8071
8072         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8073         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8074         able to process the source reg.
8075
8076 2008-10-16  Martin Baulig  <martin@ximian.com>
8077
8078         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8079
8080         * inssel.brg: Add `OP_HARD_NOP'.
8081
8082         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8083
8084         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8085         `OP_HARD_NOP' instruction when running inside the debugger.
8086
8087         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8088         `OP_HARD_NOP' instruction when running inside the debugger.
8089
8090 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8091
8092         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8093         now works. The issue with the regalloc tripping up no longer
8094         happens.
8095
8096         * simd-intrinsics.c (load_simd_vreg): Same.
8097
8098 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8099         
8100         * basic-simd.cs: Tests for new Vector8ui methods.
8101
8102 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8103
8104         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8105         only for type. This fixes crashes where MonoInst::klass is checked
8106         for ops of type != VTYPE or OBJ.
8107
8108         * simd-intrinsics.c (load_simd_vreg): Same.
8109
8110 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8111
8112         * mini-ops.h: Add ops for packed shuffle/max/avg and
8113         extract mask.
8114         
8115         * cpu-x86.md: Same.
8116
8117         * mini-x86.c (mono_arch_output_basic_block): Same.
8118
8119         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8120         extract mask.
8121
8122         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8123         to emit extract mask op.
8124
8125         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8126         to emit word shuffles.
8127
8128 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8129
8130         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8131         the largest alignment needed by a variable, but at least
8132         sizeof(gpointer).
8133
8134 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8135
8136         * basic-simd.cs: Tests for the fixes in the last commit.
8137
8138 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8141         no longer handles STACK_PTR input.
8142
8143         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8144
8145         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8146         get_simd_vreg   but handles STACK_PTR input.
8147
8148         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8149         as the input can be an arbitrary pointer.
8150
8151         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8152         LDADDR local optimization directly otherwise use a store op.
8153
8154 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8155
8156         * basic-simd.cs: Tests for dup low and dup high.
8157
8158 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8159
8160         * mini-ops.h: Add dup low and dup high ops.
8161         
8162         * cpu-x86.md: Same.
8163
8164         * mini-x86.c (mono_arch_output_basic_block): Same.
8165
8166         * simd-intrinsics.c (vector4f_intrinsics): Same.
8167
8168 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8169
8170         * basic-simd.cs: Tests for recently added functionality.
8171
8172 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8173
8174         * mini-ops.h: Add remaining sse1 fp ops.
8175         
8176         * cpu-x86.md: Add remaining sse1 fp ops.
8177
8178         * mini-x86.c (mono_arch_output_basic_block): Same.
8179
8180         * mini.h: Add enum for simd FP compare conditions.
8181
8182         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8183
8184         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8185         so the backed can generate the appropriate op.
8186
8187 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8188         This patch squeese one more byte from the SimdIntrinsc struct.
8189
8190         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8191         a a shift amount intead of simply or'ing it.
8192
8193         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8194
8195         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8196         byte so we can have an aditional flags field without increasing struct size.
8197
8198         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8199         against the simd_supported_versions bitmask.
8200
8201         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8202
8203 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8204
8205         * mini.c: remove rawbuffer code (the only use here is unsafe because
8206         it takes locks during signal handling and the kernel now provides much
8207         better info in proc/pid/smaps these days).
8208
8209 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8210
8211         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8212         OP_X86_PUSH_OBJ. Fixes #434620.
8213
8214         * objects.cs: Add a test.
8215         
8216 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8219         that the packuswb/packusdw don't work with unsigned numbers for what
8220         would be negative numbers in signed format.
8221
8222         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8223         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8224
8225         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8226
8227         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8228
8229         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8230
8231         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8232
8233         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8234         add more ops.
8235
8236         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8237         version as the enum in mini.h.
8238
8239         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8240         for sse3 ops, check the simd_version field if present. This way the code
8241         works with all versions of sse.
8242
8243 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8244
8245         * simd-intrinsics.c: Fixed intrinsic name typo.
8246
8247         * mini.h: Added missing simd exported function.
8248
8249         * basic-simd.cs: Added tests for Vector4ui.
8250         Fixed broken test for Vector16b.
8251
8252 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8255         the max length to 64.
8256
8257 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8258
8259         * method-to-ir.c: Only do the fast virtual generic method call for
8260         non-wrapper methods.
8261
8262         * mini.h, mini-trampolines.c: The new generic virtual remoting
8263         trampoline handles virtual method calls via the vtable (as done by
8264         the fast virtual generic method calls) to remoting proxies.
8265
8266         * mini.c (mono_jit_create_remoting_trampoline): For generic
8267         methods reate a generic virtual remoting trampoline.
8268
8269         * mini-amd64.h: Enable fast virtual generic method calls again.
8270
8271 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8272
8273         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8274         restore registers when doing tail calls.
8275
8276 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8279         Vector4ui.
8280
8281 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8282
8283         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8284
8285 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8286
8287         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8288
8289 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8290
8291         * basic-simd.cs: Retrofit for API changes.
8292
8293 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8294
8295         * mini-ppc.c: Handle integer stack arguments for tail calls.
8296
8297 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8298
8299         * optflags-def.h: Removed sse3 optimization.
8300
8301         * driver.c: Same.
8302
8303         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8304         sse3.
8305
8306         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8307
8308         * mini.h: Added enumeration with simd versions.
8309
8310         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8311         for detecting SSE3.
8312
8313         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8314
8315         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8316
8317 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8318
8319         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8320
8321         * basic-simd.cs: Fixed test naming.
8322
8323 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8324
8325         * mini-ops.h: Added ops for packed and saturated math, shifts
8326         and packing/unpacking.
8327
8328         * cpu-x86.md: Added descriptors for the above ops.
8329
8330         * mini-x86.c: Added code to emmit the above ops.
8331
8332         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8333
8334 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8335
8336         * aot-compiler.c (compile_method): Enable AOT for generic code.
8337
8338         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8339
8340 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8341
8342         * mini.c: add a workaround for a common screwup that ends up blamed
8343         to mono (other processes blocking signal delivery).
8344
8345 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8346
8347         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8348         in the LDFLD/STFLD opcodes. Fixes #432673.
8349
8350         * iltests.il.in: Add a new test.
8351
8352 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8353
8354         * mini-arm.c: attach the thread in unmanaged->managed transitions
8355         using delegates (bug #433148).
8356
8357 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8358
8359        * basic-simd.cs: Use new ShuffleSel constants.
8360
8361 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8362
8363         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8364
8365         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8366         only disable simd intrinsics if no sse2 is detected.
8367
8368         * optflags-def.h: Added sse3.
8369
8370         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8371         is disabled.
8372
8373 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8376         when adding delegate-invoke wrappers.
8377
8378 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8379
8380         * Makefile.am: Reenable the simd tests.
8381
8382 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8383
8384         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8385           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8386           other vreg is allocated to that hreg.
8387
8388         Contributed under MIT/X11 license.
8389
8390 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8391
8392         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8393         yet checked in.
8394
8395 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8396
8397         * basic-simd.cs: New test suite for SIMD intrinsics.
8398
8399         * Makefile.am: Added new tests.
8400
8401 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8402
8403         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8404
8405         * mini-ops.h: Same.
8406
8407         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8408
8409         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8410         using SSE2 aware opcodes.
8411
8412         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8413         is enabled, this code path is only reachable if conversion ops are emmited after
8414         mono_method_to_ir.
8415
8416         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8417
8418         This optimization saves 6 bytes per conversion against the old version.
8419
8420 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8421
8422         * aot-compiler.c (compile_method): Don't skip methods referencing 
8423         generic methods without a corresponding entry in token_info_hash, since
8424         encode_method_ref () can handle all generic methods now.
8425
8426         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8427         generic context is set.
8428         
8429         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8430         generic sharing of LDTOKEN.
8431
8432 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8433
8434         * mini-amd64.h: Temporarily disabled fast virtual generic method
8435         calls because it breaks the System.Runtime.Remoting tests.
8436
8437 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8440
8441         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8442         so inlining actually works.
8443         (check_inline_caller_method_name_limit): Ditto.
8444
8445 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8446
8447         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8448         64 bit safety (from Olaf Hering and Andreas Farber).
8449
8450 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8451         
8452         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8453         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8454         unused virtual call support code.
8455
8456         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8457         
8458         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8459         which can't use aot trampolines.
8460         (decode_patch): Don't create aot trampolines for methods which can't use
8461         them.
8462
8463         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8464         use aot trampolines.
8465
8466         * mini.h: Bump AOT image format version.
8467         
8468 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8471         to save_token_info () since cmethod is inflated for constrained calls.
8472
8473         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8474
8475 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8476
8477         * Makefile.am: Add build rules for ppc64.
8478         This avoids the build failing at pedump with unresolved symbols
8479         due to lack of arch_sources. Instead it will now fail earlier
8480         due to lack of cpu-ppc64.md.
8481
8482         Contributed under MIT/X11 license.
8483
8484 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8485
8486         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8487         tail calls.
8488
8489         * iltests.il.in: Add test case for tail call with many arguments.
8490
8491 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8492
8493         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8494         to the fast virtual generic method code until the aot case is fixed.
8495
8496 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8497
8498         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8499
8500 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8501
8502         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8503         thunks.
8504
8505 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8506         
8507         * simd-intrinsics.c: Forgot to add this one.
8508
8509         * mini-codegen.c: Fix macro in case SIMD is not supported.
8510
8511 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8512         
8513         This patch land initial JIT support for simd intrinsics.
8514
8515         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8516
8517         * Makefile.am: Added simd-intrinsics.c
8518
8519         * simd-intrinsics.c: New file with simd instrinsic related
8520         code.
8521
8522         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8523
8524         * cpu-x86.md: Add simd related instructions.
8525
8526         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8527
8528         * driver.c: Added two new --regression variants.
8529
8530         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8531
8532         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8533
8534         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8535         extract some complicated logic to helper functions.
8536
8537         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8538
8539         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8540
8541         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8542         the specialized simplification pass.
8543
8544         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8545
8546         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8547
8548         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8549         table.
8550
8551         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8552         if MONO_ARCH_NEED_SIMD_BANK is defined.
8553
8554         * mini-ops.h: Added the new simd ops.
8555
8556         * mini-x86.c: Added mono_arch_xregname.
8557
8558         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8559
8560         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8561
8562         * mini-x86.h: Define simd related MONO_ARCH macros.
8563
8564         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8565
8566         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8567
8568         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8569         MONO_CLASS_IS_SIMD to deal with simd related IR.
8570
8571         * mini.h (MonoInst): Added spill_var to the backend union.
8572
8573         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8574
8575         * mini.h: Added forward declarations of the new simd fuctions.
8576
8577         * optflags-def.h: Added new optimization names SIMD.
8578
8579         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
8580
8581         * regalloc.h: Added support for working with 3 register banks.
8582
8583         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
8584
8585         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
8586
8587 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
8588
8589         * mini-exceptions.c: remove 64 bit related ifdef clutter.
8590
8591 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
8594         instead of one on 64 bit systems.
8595
8596         * method-to-ir.c: Remove unused includes.
8597
8598 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
8601         cfg->used_int_regs, since the two are different on arm.
8602
8603 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8604
8605         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
8606         mono_method_get_vtable_index() to get the vtable index.
8607
8608 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8609
8610         * method-to-ir.c (mono_method_to_ir2): Don't create native
8611         wrappers for array methods, because they're never called (and if
8612         they were called they wouldn't work).
8613
8614 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8615
8616         * method-to-ir.c (mono_method_to_ir2): Array methods are
8617         special-cased and must not be invoked indirectly via the (M)RGCTX
8618         when generic sharing is turned on.  Fixes #431413.
8619
8620 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8621
8622         * method-to-ir.c: When generic sharing is active, call
8623         non-interface virtual generic methods via the standard trampoline.
8624
8625         * mini-trampolines.c: Handle virtual generic shared methods.
8626
8627         * mini.h, mini-x86.c, mini-x86.h: New argument for
8628         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8629         method thunks and which is the trampoline to call if the lookup
8630         fails.  Enable the virtual generic method thunk for x86.
8631
8632         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8633         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8634         argument but assert that it's NULL, because these archs don't yet
8635         implement the virtual generic method thunk.  Changes in the IMT
8636         thunk data structures.
8637
8638 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * aot-compiler.c (emit_globals): Avoid invalid characters in
8641         the static linking symbol.
8642
8643         * objects.cs: Add a test for the range check optimization. Fix warnings.
8644
8645         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8646         optimization from the current JIT.
8647
8648         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8649         later in decompose_array_access_opts () to allow more optimizations.
8650
8651         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8652         mono_decompose_soft_float () for consistency.
8653
8654         * mini-ops.h: Fix arguments of OP_STRLEN.
8655
8656         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8657         into a separate function.
8658         (reset_cast_details): Ditto.
8659         (handle_unbox): Save cast details. Fixes #431254.
8660
8661         * method-to-ir.c: Remove some obsolete FIXMEs.
8662
8663 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8664
8665         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8666
8667 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8668
8669         * mini-codegen.c: More work on macros to make them
8670         ready for multiple regbanks.
8671
8672 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8673
8674         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8675
8676         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8677
8678 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8679
8680         * mini-codegen.c (mono_spillvar_offset): Proper support for
8681         multiple regbanks.
8682
8683 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8686         the stack overflow changes.
8687
8688 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8689
8690         * mini-codegen.c: Make all bank macros depend on reg_bank.
8691
8692         * mini-codegen.c (mono_local_regalloc): Make free mask
8693         initialization regbank aware.
8694
8695 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8696
8697         * mini-codegen.c (mono_local_regalloc): Extract callee
8698         mask selection to a function and make it regbank aware.
8699
8700 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8701
8702         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8703         code to deal with many regbanks.
8704
8705 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8706
8707         * mini-codegen.c: More fp->regbank changes.
8708
8709 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8712         of a hardcoded constant.
8713
8714 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8715
8716         * method-to-ir.c (type_from_stack_type): Fix typo.
8717
8718 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * mini-ia64.c (emit_move_return_value): Convert float return values to
8721         double.
8722
8723         * objects.cs: Add a new test.
8724         
8725         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8726         VARARG methods to fix an assert later.
8727
8728         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8729         end so it at least compiles.
8730
8731 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8734
8735 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8736
8737         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8738         optimization to a new function (emit_optimized_ldloca_ir) and enable
8739         it for both ldloca and ldloca_s.
8740
8741 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8744         gshared CASTCLASS code.
8745
8746         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8747         amd64, where the libc stack unwinder encounters stack frames referring to
8748         native code in unmapped memory.
8749
8750         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8751         sharing.
8752
8753         * generics.cs: Add new test.
8754
8755 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8756
8757         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8758         add a check that one of the ARM_FPU_ constants is defined.
8759
8760         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8761         
8762         * mini-exceptions.c: Fix build on non-altstack platforms.
8763
8764         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8765         sharing of vtypes.
8766
8767         * ir-emit.h: Add a comment to NEW_PCONST.
8768
8769         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8770
8771         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8772
8773         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8774         after the changes to MonoJitDomainInfo.
8775
8776 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8777
8778         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8779
8780 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8781
8782         * mini-ppc.c: Compiler warning fixes.
8783
8784 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8785
8786         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8787         for pinvokes.
8788
8789 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8790
8791         * exceptions-ppc.c, mini-ppc.h: Compile
8792         mono_arch_handle_altstack_exception() on Darwin, too.
8793
8794 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8795
8796         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8797         work on archs which don't have generic sharing implemented, only
8798         without the vtable_arg.
8799
8800 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8801
8802         * mini.c: Added comment explaining why delegate ctor icall
8803         wrappers are compiled.
8804
8805 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8806
8807         * mini.c: Don't produce trampolines to delegate ctor icall
8808         wrappers but compile them upfront.
8809
8810 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8811
8812         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8813         runtime-set function when going back to managed code. Currently this
8814         is used to set back the protection on the soft ovf pages and/or to
8815         throw the stack overflow exception that happened in unmanaged code.
8816
8817 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8818
8819         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8820         runtime-set function when going back to managed code. Currently this
8821         is used to set back the protection on the soft ovf pages and/or to
8822         throw the stack overflow exception that happened in unmanaged code.
8823
8824 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8825
8826         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8827         the support code for restoring stack protection after stack overflows
8828         that happen in unmanaged code. Don't set the exec permission on the
8829         soft overflow area.
8830
8831 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8834         delegate->method_ptr is set. Fixes #428054.
8835
8836 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * tests.cs: Rename to ratests.cs.
8839
8840         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8841         emit_get_rgctx_... functions.
8842
8843 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8844
8845         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8846
8847 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8848
8849         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8850         before asserting that method is sharable.
8851
8852 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8853
8854         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8855         whether method needs a static RGCTX wrapper used instead of
8856         complex conditions.
8857
8858         * generic-sharing.c, mini.h: A few functions moved to
8859         metadata/generic-sharing.c.
8860
8861 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8862
8863         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8864         Generic code sharing for value types, which essentially means
8865         treating value type methods like static methods.  The RGCTX is
8866         passed in the same way.
8867
8868 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8871         opcode when creating multi-dimensional arrays of open types.
8872
8873         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8874         open generic types.
8875
8876         * generics.cs: Add a test.
8877
8878         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8879
8880 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8881
8882         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8883
8884         * mini.c (mini_method_compile): Set it when running under the debugger. 
8885
8886         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8887         vreg optimization if the flag is set.
8888
8889         * driver.c (mono_main): Add --attach= option to pass options to
8890         the attach agent.
8891
8892         * mini.c (sigquit_signal_handler): Start the attach agent.
8893
8894         * ssapre.c: Disable this to save space since it is not yet ported to
8895         linear IR.
8896
8897         * regalloc2.c: Disable this to save space.
8898
8899         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8900
8901 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8902
8903         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8904         the -v option useful again.
8905
8906 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8909         --break-at-bb.
8910
8911         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8912         arrays of arrays. Fixes #428406.
8913
8914         * method-to-ir.c (mini_emit_castclass): Ditto.
8915
8916         * objects.cs: Add new test.
8917         
8918 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8919
8920         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8921         was wrong at it choked against target_type_is_incompatible for byref types.
8922
8923 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8926         places.
8927
8928 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8929
8930         * mini-exceptions.c: update a few more exceptions-related counters.
8931
8932 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8933
8934         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8935         new functions to allocate from persistent mempools.
8936
8937 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8938
8939         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8940         multiple register banks in the future.
8941
8942         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8943
8944 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8945
8946         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8947
8948         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8949
8950         * mini.h: Export type_to_eval_stack_type.
8951
8952         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8953         is only ins->klass of byref types.
8954
8955 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8956
8957         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8958         (mini_emit_memcpy2): Ditto.
8959
8960         * mini-amd64.c: Fix a warning.
8961
8962 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8963
8964         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8965         linking.
8966
8967 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8968
8969         * method-to-ir.c: Extract stloc micro-optimization to a
8970         function and apply it to all cases.
8971
8972 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8973
8974         * method-to-ir.c: Don't fail generic code sharing in cases we
8975         already support.
8976
8977 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8978
8979         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8980
8981 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8982
8983         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8984         implementation.
8985
8986 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8987
8988         * trace.c: make tracing more useful and correct, with per-thread
8989         id and indent info.
8990
8991 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8992
8993         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8994         doing a method call and the argument is an R4.
8995
8996 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8997
8998         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8999         generic methods.
9000
9001 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9002
9003         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9004
9005 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9008         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9009
9010 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * driver.c: Add a --agent argument (not supported yet) to load managed
9013         agent assemblies before loading the main assembly, similarly to how the
9014         Java VM handles agents.
9015
9016 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9017
9018         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9019         function to do stack layout of local variables.
9020
9021 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9022
9023         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9024         calculation.
9025
9026 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9029         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9030         JIT if DISABLE_JIT is defined.
9031
9032         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9033         defined.
9034
9035 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9036
9037         * iltests.il.in: Disable the fconv test on PPC (the result is
9038         undefined according to ECMA).
9039
9040 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9041
9042         * iltests.il.in: Enable tail call tests for PPC.
9043
9044         * mini.h: Add variable for storing incoming valuetype argument
9045         addresses for tail calls.
9046
9047         * mini-ppc.c: Implement valuetype arguments and return values for
9048         tailcalls on Linux.
9049
9050 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9051
9052         * mini-ppc.c: Partially implement tail calls (struct arguments and
9053         return values not supported).
9054
9055         * method-to-ir.c: Enable tail calls on PPC.
9056
9057 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9060         runtime-invoke wrappers to work around the problem of them getting
9061         assigned to a random class.
9062
9063         * aot-runtime.c (mono_aot_get_method): Ditto.
9064         
9065 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9066
9067         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9068         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9069
9070 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9071
9072         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9073         until they're implemented properly.
9074
9075         * exceptions-ppc.c: Use arch-independent exception-handling code
9076         instead of custom one.
9077
9078         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9079         for Linear IR.
9080
9081         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9082
9083         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9084         applies when __powerpc__ is defined.
9085
9086 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9089         methods to their code to avoid computing the full name of wrappers and
9090         doing a lookup in a string hash table.
9091
9092 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9093
9094         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9095         we identify bblocks before method_to_ir () is ran.
9096
9097         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9098         Also avoid optimizing branches pointing to themselves.
9099
9100         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9101
9102 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9103
9104         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9105
9106 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9107
9108         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9109         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9110         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9111         'buf'.
9112
9113         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9114         jumped to the same entry in plt_jump_table.
9115
9116 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9117
9118         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9119         dynamic images.
9120
9121 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9122
9123         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9124         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9125         #421807.
9126
9127 2008-08-29  Geoff Norton  <gnorton@novell.com>
9128
9129         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9130         segment, and doesn't properly handle .space as .text.  Fixes
9131         AOT Mach/ARM
9132
9133 2008-08-29  Geoff Norton  <gnorton@novell.com>
9134
9135         * mini.c: Disable the mach exception handler when running on 
9136         ARM
9137
9138 2008-08-29  Geoff Norton  <gnorton@novell.com>
9139
9140         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9141         globals on Darwin/ARM
9142
9143 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9146         since too many things depend on it. Instead, call 
9147         mono_runtime_set_no_exec ().
9148         
9149         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9150         the new JIT.
9151
9152         * aot-compiler.c: Add an 'asm-only' AOT option.
9153
9154         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9155                 
9156         * aot-compiler.c (compile_method): Disable gshared support for now as it
9157         doesn't yet work.
9158
9159 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9160
9161         * mini-amd64.h : Fix a compiler warning.
9162
9163         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9164           Changed to use a callback function to retrieve the unwind info.
9165           This avoids problems observed when code blocks were removed by
9166           unloading an app domain.
9167
9168         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9169           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9170           to work properly.
9171
9172         Contributed under MIT/X11 license.
9173
9174 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9175
9176         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9177           case to keep the stack aligned to 8.
9178
9179         Contributed under MIT/X11 license.
9180
9181 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9184         avoid repeated linear searches.
9185
9186 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9187
9188         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9189         methods it can't handle.
9190         
9191         * aot-compiler.c (add_method): Avoid adding a method twice.
9192         (add_wrappers): Add runtime invoke wrappers for all methods.
9193
9194         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9195         function to create an aot-compatible version of this trampoline.
9196
9197         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9198
9199 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9200
9201         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9202
9203         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9204         with a generic sharing failure.
9205
9206         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9207
9208         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9209         CEE_RETHROW. Fixes #419634.
9210
9211         * mini.c (mono_method_to_ir): Ditto.
9212
9213         * exceptions.cs: Add a new test.
9214         
9215         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9216         to mono_type_stack_size_internal () since some callers might not pass in
9217         an rgctx.
9218
9219         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9220         instrument_prolog. Fixes #419878.
9221
9222         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9223         doubles in soft float mode volatile.
9224
9225 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9228
9229         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9230         to handle soft float correctly.
9231
9232         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9233         the fast path.
9234
9235         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9236
9237         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9238         to sp, since the generics catch code requires it.
9239
9240         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9241         copying.
9242
9243         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9244         mono_arch_emit_imt_argument ().
9245
9246         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9247
9248         * mini-arm.c tramp-arm.c: Generic sharing updates.
9249
9250 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9251
9252         * mini-arm.c: Fix the arm build.
9253
9254         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9255         handling enums, generic instances and generic sharing.
9256         (mini_type_stack_size_full): Ditto.
9257
9258         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9259         
9260         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9261
9262         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9263
9264         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9265         trampolines.
9266
9267         * mini-arm.c: Various small generic sharing changes.
9268
9269         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9270         this for x86.
9271         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9272         custom code.
9273
9274         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9275         helper function to return a generic class init trampoline.
9276
9277         * method-to-ir.c mini.c: Use it.
9278         
9279         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9280         arch-specfic function to return a generic class init trampoline.
9281
9282         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9283         the GENERIC_CLASS_INIT custom code.
9284
9285         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9286         a fatal error, not a sharing failure.
9287
9288         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9289         needed.
9290
9291         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9292         trampoline argument from MONO_ARCH_VTABLE_REG.
9293
9294         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9295         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9296         argument, and pass the vtable in VTABLE_REG.
9297
9298         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9299         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9300         argument, and pass the vtable in VTABLE_REG.
9301         (mono_arch_create_trampoline_code_full): Remove some special casing for
9302         the rgctx fetch trampoline.
9303
9304         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9305         Fixes #419273.
9306
9307         * iltests.il: Add a test for it.
9308
9309 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9312
9313         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9314         no longer needed.
9315
9316         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9317         use mono_jit_info_table_find () to avoid recursion.
9318         (mono_delegate_trampoline): Add a sync wrapper here.
9319
9320         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9321         here.
9322
9323         * mini.c (mono_method_to_ir): Ditto.
9324         
9325         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9326         add_sync_wrapper argument. Don't add a sync wrapper here.
9327         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9328
9329         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9330         
9331 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9332
9333         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9334           of nonvolatile registers back from MonoContext to CONTEXT.
9335
9336         Contributed under MIT/X11 license.
9337
9338 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9339
9340         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9341           arguments on Winx64 there are only 4 argument registers.  For this
9342           logic to work the last argument must be pulled from the stack.  
9343
9344         Contributed under MIT/X11 license.
9345
9346 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9347
9348         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9349
9350         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9351         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9352         encode/decode_method_ref ().
9353
9354         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9355
9356         * aot-runtime.c (decode_patch): Ditto.  
9357
9358         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9359         MONO_PATCH_INFO_METHOD.
9360
9361         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9362         MonoGenericJitInfo.
9363
9364         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9365         MonoGenericJitInfo.
9366
9367         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9368
9369         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9370         one from the caller.
9371
9372         * aot-runtime.c (decode_generic_inst): New function to decode and
9373         return a interned generic inst.
9374         (decode_klass_ref): Use it.
9375         (decode_method_ref): Ditto.
9376
9377         * aot-compiler.c (emit_exception_debug_info): Save 
9378         jinfo->has_generic_jit_info too.
9379
9380 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9381
9382         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9383
9384         * iltests.il.in: Add a test for fconv_to_i.
9385
9386         * liveness.c: Disable the liveness2 pass for now to save space.
9387
9388         * regalloc2.c: Include mempool-internals.h to fix warnings.
9389
9390         * aot-compiler.c (encode_method_ref): Encode the context of generic
9391         instance methods.
9392
9393         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9394         the context saved in the aot file.
9395
9396         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9397
9398         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9399
9400         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9401         volatile so they won't be optimized away.
9402
9403 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * ssa.c:
9406         * ssa2.c:
9407         * mini.c:
9408         * regalloc2.c:
9409         * dominators.c: Remove duplicated functions that now are in
9410         mempool-internals.h.
9411
9412 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9413
9414         * aot-compiler.c: Fix warnings.
9415
9416         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9417
9418         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9419
9420         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9421         as the patch type.
9422
9423         * mini.c (mono_resolve_patch_target): Ditto.
9424         
9425         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9426         (encode_klass_ref): Add support for encoding VARs/MVARs.
9427
9428         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9429
9430         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9431         the handling of the got entries into a separate 'decode_got_entry' function.
9432         Add support for RGCTX_FETCH.
9433
9434         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9435         clobbered by the trampoline code.
9436
9437         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9438         not clobbered by the indirect calling code.
9439
9440 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9443         to fix the build.
9444
9445 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9446
9447         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9448         signature using the compilation mempool otherwise we would leak it.
9449
9450 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9453         mono_emit_abs_call ().
9454
9455         * patch-info.h: Add GENERIC_CLASS_INIT.
9456
9457         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9458
9459         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9460         as their target as a near call.
9461
9462         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9463         ABS handling code.
9464         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9465
9466         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9467         call to a runtime function described by a patch.
9468
9469         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9470         mono_emit_abs_call, this has the advantage that the ABS handling code in
9471         mono_codegen () can handle them both, and can handle other stuff in the
9472         future without additional code.
9473
9474         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9475         entry.
9476         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9477         abs addresses.
9478
9479         * mini.h: Add missing bblock related prototypes.
9480
9481         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9482         reverse_inst_list_len fields.
9483
9484         * mini.c: Refactor this file a bit by moving branch optimizations to 
9485         branch-opts.c.
9486
9487         * method-to-ir.c: Merge generic sharing changes missed earlier.
9488
9489         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9490
9491         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9492         shared patches. Process METHODCONST as a shared patch.
9493
9494         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9495         as it crashes on the 2.0 mscorlib.
9496
9497         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9498         to cause crashes.
9499         
9500         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9501         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9502         by IMT.
9503
9504         * aot-compiler.c: Reorganize the got handling code to be a bit more
9505         understandable.
9506
9507 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9510         mono_patch_info_equals/hash, and use it to massively simplify
9511         get_plt_index ().
9512
9513         * mini.c (mono_patch_info_hash): Simplify this and add support for
9514         more patch types.
9515
9516         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9517
9518         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9519         handling code, since an offset is not enough to identify a trampoline.
9520
9521         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9522
9523 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9524
9525         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9526
9527         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9528
9529         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9530
9531         * decompose.c: PPC decompositions for various ops.
9532
9533         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9534
9535 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9536
9537         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9538         call the generic trampoline code using a call, instead of a jump, to
9539         remove some special casing from the generic trampoline code.
9540
9541         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9542         (mono_codegen): Ditto.
9543
9544         * aot-compiler.c aot-runtime.c: Ditto.
9545
9546         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9547
9548         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9549         helper function to find the offset corresponding to a lazy fetch trampoline.
9550
9551         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9552         when doing generic sharing.
9553
9554         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9555         places.
9556         
9557         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9558         mini-trampolines.c to be with the other trampoline creation functions.
9559
9560         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9561         as it is equal to method->signature in most cases, add a 
9562         mono_emit_method_call_full variant which takes a signature and an imt
9563         argument as well.
9564
9565 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9568         to this function, since it could be computed easily from the method 
9569         argument.
9570         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9571         more.
9572
9573         * method-to-ir.c mini.c: Remove references to 
9574         compile_generic_method_wo_context.
9575
9576         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9577         generic method calls.
9578         
9579         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
9580         dimensional non-szarrays.
9581
9582         * mini.c (mini_init): Register mono_array_new_1.
9583
9584         * jit-icalls.c (mono_array_new_1): New jit icall.
9585
9586         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
9587         pointing to the method.
9588
9589         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
9590         method addresses belonging to METHOD_JUMP patches in the 
9591         jump_target_got_slot_hash.
9592         (mono_aot_load_method): Ditto.
9593
9594         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
9595         METHOD_JUMP patches.
9596
9597         * mini.c (mini_create_jit_domain_info): New helper function which 
9598         initializes/frees domain->runtime_info.
9599         (mini_free_jit_domain_info): Ditto.
9600         (mini_init): Install the domain hook functions with the runtime.
9601
9602         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
9603         information maintained by the JIT.
9604
9605         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
9606         insertion into jump_table_hash into mono_codegen (), also implement proper
9607         locking.
9608
9609         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
9610         tail calls, it is already done by the aot code.
9611         
9612         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9613         mechanism on amd64.
9614
9615         * iltests.il.in: Make the jmp test a bit more complex.
9616
9617         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9618         generic instances which doesn't have a token.
9619
9620         * aot-runtime.c (decode_method_ref): Ditto.
9621         
9622         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9623         can handle this case now.
9624         (handle_box): Ditto.
9625
9626 2008-08-15  Geoff Norton  <gnorton@novell.com>
9627
9628         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9629         debugging check.
9630
9631 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9632
9633         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9634         calling generic methods.
9635
9636         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9637
9638         * aot-runtime.c (decode_patch_info): Ditto.
9639
9640         * mini.c (mono_resolve_patch_target): Ditto.
9641         
9642         * patch-info.h: Add METHOD_RGCTX.
9643
9644         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9645
9646 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9649         arguments in registers.
9650
9651         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9652         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9653
9654         * mini.c (mini_method_compile): Abort aot compilation for generic
9655         methods if generic sharing is disabled.
9656         
9657         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9658         an mrgctx.
9659
9660         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9661         requiring an mrgctx.
9662
9663         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9664         store instructions when converting a vcall to a normal call.
9665
9666         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9667         mono_arch_find_jit_info.
9668
9669 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9672         avoid calling mono_method_full_name () for every method even if the
9673         env var is not set.
9674         (check_inline_caller_method_name_limit): Ditto.
9675
9676 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9679         assemblies in one run.
9680
9681         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9682         skipped methods if it is not 0.
9683
9684         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9685
9686 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9687
9688         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9689           MONO_ARCH_HAVE_UNWIND_TABLE.
9690
9691         Contributed under MIT/X11 license.
9692
9693 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9694
9695         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9696           from default optimizaton list on Winx64.
9697
9698         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9699
9700         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9701           the LMF from the MonoJitTlsData structure.
9702
9703         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9704
9705         Contributed under MIT/X11 license.
9706
9707 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * mini.c (sigsegv_signal_handler): Fix the build.
9710
9711         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9712         assembly->aot_module.
9713
9714         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9715         hash table. This simplifies and speeds up a lot of code, and fixes support
9716         for .netmodules.
9717
9718         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9719         with the runtime.
9720
9721         * mini-exceptions.c: Ditto.
9722         
9723         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9724         'native_offset' argument, since these are computed in the 
9725         mono_find_jit_info () function.
9726
9727         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9728         is used by exceptions-ppc.c.
9729
9730         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9731         mono_arch_find_jit_info ().
9732         
9733         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9734         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9735         generic code in mini-exceptions.c.
9736
9737 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9740
9741         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9742         
9743         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9744         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9745         called while holding the loader lock. Fixes #415608.
9746         (mono_aot_get_method_from_token_inner): Ditto.
9747
9748 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9749
9750         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9751         to reduce differences between this and the generic implementation in
9752         mini-exceptions.c.
9753         (ves_icall_get_frame_info): Ditto.
9754
9755         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9756
9757         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9758         longer neccesarry.
9759
9760         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9761         mono_arch_get_call_filter () and make it non-static, for consistency with the
9762         other architectures.
9763
9764 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * mini.c:
9767         * local-propagation.c:
9768         * mini-x86.c: Correct the name of arch defines.
9769
9770 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9771
9772         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9773         NO_EMULATE_LONG_SHIFT_OPS define.
9774
9775 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9776
9777         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9778         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9779
9780         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9781         MACH fixes. Merged from the 2.0 branch.
9782
9783         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9784
9785         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9786         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9787
9788         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9789
9790         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9791         mono_marshal_get_native_wrapper () signature changes.
9792
9793 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9794
9795         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9796         conversion bug under arm.
9797
9798 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9799
9800         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9801
9802         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9803         with overflow checking.
9804
9805 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9806
9807         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9808         to the genmdesc.pl file
9809
9810 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9811
9812         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9813         arg_array in the soft-float versions of the LOAD/STORE macros.
9814
9815         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9816         implementation.
9817
9818         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9819
9820 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9821
9822         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9823         a float HFA. Fixes #413621.
9824
9825 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9826
9827         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9828         frame_size to args_size. Fixes build.
9829
9830 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9833         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9834
9835         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9836         the stack are not unaligned. Fixes #413247.
9837         
9838 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9839
9840         * mini.c: update jitted methods performance counters.
9841
9842 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9843
9844         * mini-exceptions.c: increase the exceptions thrown performance
9845         counter in mono_handle_exception ().
9846
9847 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9848
9849         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9850         can work with netmodules.
9851
9852 2008-07-28  Geoff Norton  <gnorton@novell.com>
9853
9854         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9855         regression tests.
9856
9857 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9860         correct place.
9861
9862 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9863
9864         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9865           The float param registers and other param registers must be the 
9866           same index on Windows x64.
9867
9868         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9869           ArgValuetypeAddrInIReg argument case.  Setting the argument
9870           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9871
9872         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9873           variable computed above as the copy length for arguments of storage
9874           type ArgValuetypeAddrInIReg.
9875
9876         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9877           ArgValuetypeAddrInIReg argument case.  This case will rely on
9878           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9879
9880         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9881           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9882           jump and tail call instructoins as they do not follow the typical call behavior.
9883
9884         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9885           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9886           local variable and pass the local variable by reference to the called method.
9887
9888         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9889           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9890           of a struct is passed in a register it must be saved with the other
9891           volatile argument on the stack.
9892
9893         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9894           frame pointer the stack adjustment value must be saved to the unwind 
9895           info structure.
9896
9897         Contributed under MIT/X11 license.
9898
9899 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9900
9901         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9902         which got lost in the merge.
9903
9904 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9907         build.
9908
9909         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9910         
9911         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9912         icalls, since they won't be patched.
9913
9914         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9915         different code sequence when running under valgrind to prevent some valgrind
9916         errors.
9917
9918         * iltests.il.in: Add new regression test.
9919
9920         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9921         end with a throw.
9922
9923         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9924         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9925
9926         * iltests.il.in: Add new test.
9927
9928         * aot-compiler.c: Fix some warnings.
9929
9930         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9931         Fixes #412494.
9932
9933 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9936         (mini_usage_jitdeveloper): Add a missing --wapi option.
9937
9938 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * mini-codegen.c: Simplify the is_fp macros.
9941         (free_up_ireg): Remove, use free_up_reg instead.
9942         (free_up_reg): Fix the fp case.
9943
9944 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9945
9946         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9947         lowered earlier.
9948
9949         * exceptions-x86.c: Merge some changes which seemed to have got lost
9950         in the linear-ir merge.
9951
9952         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9953
9954         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9955         long vreg volatile even if the variable was already created.
9956
9957         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9958         volatile variables.
9959
9960 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9963
9964         * mini.c (mono_jit_compile_method_inner): Add support for 
9965         MONO_EXCEPTION_BAD_IMAGE.
9966
9967         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9968         mini_method_get_context () returns NULL. Fixes #356531.
9969
9970         * mini.c (mono_method_to_ir): Ditto.
9971         
9972         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9973         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9974
9975 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9976
9977         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9978         in the LDFTN implementation.
9979
9980 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9981
9982         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9983         code, patch calls to icalls, too, even if they're not in the
9984         shared generic code hash.  Fixes #411962.
9985
9986 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9987
9988         * cpu-x86.md: Increase the length of the fcall opcodes.
9989
9990         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9991         calls returning floats.
9992
9993         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9994         on NEWARR.
9995         
9996         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9997         missed earlier.
9998
9999         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10000         into the domain->method_code_hash.
10001
10002         * aot-compiler.c: Fix win32 build.
10003
10004         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10005         
10006         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10007         gshared NEWARR implementation.
10008
10009         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10010
10011         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10012         can be used outside of method_to_ir.
10013
10014         * mini.h (MonoCompile): Add arg_types field.
10015
10016         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10017         
10018         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10019         the values of the local arg_array and param_types array.
10020
10021 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10022
10023         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10024         got accesses might only get generated later when NEWOBJ is decomposed.
10025         
10026         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10027         looking up the native code of the target method when a delegate is called
10028         for the first time.
10029
10030         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10031         optimization.
10032
10033         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10034
10035         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10036         AOT work on platforms without a working dlsym implementation.
10037
10038         * mini.h: Bump AOT image format version.
10039         
10040 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10041
10042         * mini-exceptions.c: Free a MonoType with
10043         mono_metadata_free_type() instead of g_free().
10044
10045         * aot-runtime.c: Free a MonoType.
10046
10047 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10050         optimization.
10051
10052         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10053         fp stack on x86.
10054
10055 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10056         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10057         profiler hook.
10058
10059 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10060
10061         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10062         NEWOBJ calls on valuetypes.
10063
10064         * iltests.il.in: Add new test.
10065
10066         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10067
10068 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10071         is no longer needed.
10072
10073         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10074         non register sized integer arguments.
10075         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10076         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10077         emit_memcpy2 ().
10078
10079         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10080         CEE_MONO_RETOBJ.
10081         
10082         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10083         two a binop with different sized arguments is emitted.
10084
10085         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10086         instruction in the ins==NULL case.
10087
10088 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10091
10092         * mini-x86.c: Fix osx build.
10093
10094         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10095         opcodes as well.
10096
10097         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10098         instruction for non int sized variables.
10099
10100         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10101         implementation.
10102
10103 2008-07-23  Robert Jordan  <robertj@gmx.net>
10104
10105         * method-to-ir.c: Fix MSVC build.
10106
10107 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10108
10109         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10110         a non int sized type, widen it to an int since newer versions of gcc seem to
10111         generate code which needs this.
10112
10113         * ssa2.c abcremoval2.c: Fix warnings.
10114
10115         * *: Merge the Linear IR branch.
10116
10117         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10118         the ChangeLog file there describes all the changes done over the years. 
10119         Further documentation can be found at www.mono-project.com/Linear_IL.
10120
10121 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10122
10123         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10124           The float param registers and other param registers must be the 
10125           same index on Windows x64.
10126
10127         Contributed under MIT/X11 license.
10128
10129 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10130
10131         * mini.c: Make the previous fix GC safe.
10132
10133 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10134
10135         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10136
10137 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10138
10139         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10140           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10141           ArgValuetypeAddrInIReg instead.
10142
10143         Contributed under MIT/X11 license.
10144
10145 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * mini-codegen.c (get_register_spilling): Fix a warning.
10148
10149 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10150
10151         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10152         for types which the initialization fails. Raises the provided exception
10153         at the right stop after cleanup.
10154
10155 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * aot-compiler.c: Free most of the memory allocated during compilation.
10158
10159         * mini.c (mini_parse_debug_options): Fix a leak.
10160         
10161         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10162         during aot compilation.
10163
10164 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10165
10166         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10167         it has too much register pressure.
10168
10169 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10170
10171         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10172
10173 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10176         on x86.
10177
10178         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10179         on amd64 similar to the way it is done on arm.
10180
10181         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10182
10183         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10184         consistency, normalize error messages, avoid loading aot-only modules in
10185         normal mode.
10186
10187         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10188         for consistency.
10189
10190         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10191
10192 2008-07-11  Martin Baulig  <martin@ximian.com>
10193
10194         * debug-debugger.h
10195         (MonoDebuggerInfo): Add `interruption_request'.
10196
10197 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * aot-compiler.c (emit_plt): Remove some dead code.
10200
10201         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10202
10203         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10204         return the plt info offset belonging to a given plt entry.
10205
10206         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10207         mono_aot_get_plt_info_offset.
10208         
10209         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10210         similar to the amd64 code by makeing jumps through a separate jump table 
10211         instead of embedding the jump addresses into the code.
10212
10213 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10214
10215         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10216         method.
10217
10218 2008-07-10  Martin Baulig  <martin@ximian.com>
10219
10220         * mini.c (mini_method_compile): Disable generics sharing when
10221         running in the debugger.
10222
10223 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10226
10227         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10228         the local register allocator from running out of registers on x86 when 
10229         using aot.
10230
10231 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10232
10233         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10234         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10235         C4146.
10236
10237         Contributed under MIT/X11 license.
10238
10239 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10240
10241         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10242         speed up the assembler.
10243
10244 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10247         support.
10248
10249         * mini.c: Move the soft float handling macros a bit earlier, add 
10250         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10251         place.
10252
10253         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10254
10255         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10256         read-only to help catch code allocation requests.
10257         
10258         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10259         and turn it off when using --aot-only or when compiling with --aot=full.
10260
10261         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10262         jump table for switches from the normal domain mempool, not the code
10263         manager.
10264
10265         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10266         unbox trampoline which handles aot-only mode too.
10267
10268         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10269         an AOTed unbox trampoline.
10270
10271         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10272
10273 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10274
10275         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10276         ""
10277
10278         Contributed under MIT/X11 license.
10279
10280 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10281
10282         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10283           the unwind information for the method at the end of the allocated block.
10284           
10285         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10286           MonoCompileArch to hold the unwind info for SEH on Winx64
10287         
10288         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10289           frame pointer info for the method being compiled.
10290           
10291         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10292           the call to mono_exception_from_token.
10293           
10294         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10295           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10296           information is stored a the end of the method block because it is all 32-bit offset based.
10297
10298         Contributed under MIT/X11 license.
10299
10300 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10303
10304         * wapihandles.c: Fix warnings.
10305
10306         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10307         mode.
10308
10309         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10310         mono_jit_compile_method in aot-only mode since that calls the type 
10311         initializer.
10312         
10313         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10314         get_delegate_invoke_impl in aot-only mode.
10315
10316         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10317
10318 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10321
10322         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10323         is on by default.
10324
10325         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10326
10327         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10328         init trampoline from the AOT file as well.
10329
10330         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10331         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10332         code.
10333
10334         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10335         mono_init.
10336
10337         * exceptions-amd64.c: Add _full variants for the remaining exception code
10338         creation functions as well, allow emission of relocatable code, remove
10339         caching since that is now done by the caller.
10340
10341         * mini-exceptions.c: Add _full variants for the remaining exception code
10342         creation functions as well, add aot-only support.
10343
10344         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10345         if we can determine a proper token for them.
10346         (add_wrappers): Add a few more wrappers.
10347         (emit_method_code): Remove some dead code.
10348         (emit_trampolines): Emit exception code too.
10349
10350         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10351
10352         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10353         mono_array_new_va which avoids varargs.
10354
10355         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10356
10357         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10358         mono_arch_create_specific_trampoline () in all places.
10359
10360         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10361         a bit so it can be used for other things as well.
10362         
10363         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10364         on demand as well.
10365
10366         * exceptions-amd64.c: Rename the caching from the exception code creation
10367         functions, it is done by the caller instead.
10368         
10369         * exceptions-amd64.c: Change the signature of the exception code creation 
10370         functions to allow the creation of relocatable code later.
10371
10372         * mini-exceptions.c: Add a set of functions to query the various 
10373         runtime-generated exception functions.
10374
10375         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10376         mono_arch_.. () functions.
10377         
10378 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10381
10382         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10383
10384         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10385         (mini_get_vtable_trampoline): Ditto.
10386
10387         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10388         code in the AOT case by returning the code size and a list of relocations to
10389         the caller.
10390
10391         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10392
10393 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10394
10395         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10396           clean the stack.
10397
10398         Contributed under MIT/X11 license.
10399
10400 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10401
10402         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10403         so the buffer size can be computed correctly. Fixes #404735.
10404
10405         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10406         normally as cfg->debug_info is already freed.
10407
10408 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * mini-amd64.c: For calls returning vtypes in registers, don't store
10411         the return address on the stack, instead allocate a separate local for
10412         it. Fixes #404729.
10413
10414 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10415
10416         * mini-trampolines.c, mini.h: Add an argument to
10417         mono_create_jit_trampoline_in_domain() for turning off the adding
10418         of the sync wrapper.
10419
10420         * mini.c: Use the JIT trampoline without sync instead of
10421         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10422         be patched.
10423
10424 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10425
10426         * driver.c: Turn on GSHARED optimization by default.
10427
10428 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10431         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10432
10433         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10434         create a variant of the generic trampoline code callable from AOTed trampolines.
10435
10436         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10437         trampoline code callable from AOTed trampolines.
10438
10439         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10440
10441 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10442
10443         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10444         pass-through manner.
10445
10446         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10447         and don't fail sharing for them anymore.
10448
10449         * mini-exceptions.c: Handle exceptions in shared generic methods.
10450
10451         * generic-sharing.c: When checking the context of a generic
10452         method, also check its class's context.  Don't treat wrappers as
10453         sharable.
10454
10455         * mini-trampolines.c: Some code factored out to
10456         metadata/generic-sharing.c.  Handle the MRGCTX case.
10457
10458         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10459         we must deal with the method being of another instantiation of the
10460         class.  Add static rgctx invoke wrappers to generic methods.
10461
10462 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10463
10464         * mini.c: Provide all jit infos of generic shared methods with a
10465         generic jit info.
10466
10467         * mini-exceptions.c: Handle the new situation that a generic info
10468         might be available, but not info about the this/vtable/mrgctx
10469         variable.
10470
10471 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10472
10473         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10474         generic methods.
10475
10476 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10477
10478         * dominators.c (check_dominance_frontier): Fix a warning.
10479
10480         * mini.h: Add some missing prototypes.
10481
10482         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10483
10484         * driver.c (mono_jit_init_version): Correct the comments since the first
10485         argument should be the name of the root domain, not a filename.
10486
10487         * aot-runtime.c (make_writable): Error out if this is called while running
10488         with --aot-only.
10489         (load_aot_module): Ditto.
10490
10491         * aot-compiler.c: Really fix the computation of method indexes.
10492
10493         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10494         optimizations as this is no longer called frequently.
10495
10496         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10497         method and the invoke impl code and pass it to the delegate trampoline instead of
10498         just the delegate class.
10499
10500 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * aot-compiler.c: Fixup the computation of method indexes.
10503         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10504         the method builder infrastructure.
10505
10506         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10507         has no header.
10508
10509         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10510         mode, load the method right away instead of creating a trampoline.
10511
10512         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10513
10514         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10515         some checks a bit.
10516
10517 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10520         (mono_aot_load_method): Use method_index instead of method->token.
10521
10522         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10523         can handle icalls etc. properly.
10524
10525         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10526
10527         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10528
10529         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10530         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10531         JIT_ICALL_ADDR patch type.
10532
10533         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10534
10535         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10536         request flag.
10537         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10538
10539         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10540
10541 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10544         domain->jit_code_hash.
10545
10546 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10549
10550 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10553         get_this_arg_from_call, let it compute it when needed.
10554
10555         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10556         gsctx from code only when needed.
10557
10558         * mini-trampolines.c (get_generic_context): Rename this to 
10559         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10560         it can be called by the arch backends.
10561
10562         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10563
10564 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * driver.c (mono_main): Add experimental --aot-only command line option.
10567
10568         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10569         set.
10570
10571 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10572
10573         * driver.c (DllMain): Remove mono_module_handle.
10574
10575         Contributed under MIT/X11 license.
10576
10577 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
10580         for emitting methods which are not in the source assembly. Detect and report
10581         failure of assembling+linking.
10582         
10583         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
10584
10585         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
10586
10587 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
10588
10589         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
10590
10591 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10592
10593         * mini.h: Remove some obsolete prototypes.
10594
10595         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
10596
10597 2008-06-24  Mark Probst  <mark.probst@gmail.com>
10598
10599         * mini.c (get_object_generic_inst): Variable-sized arrays are not
10600         supported by Visual Studio, so use alloca().
10601
10602 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
10605         Fixes #402585.
10606
10607 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10608
10609         * mini.c: Fail sharing of a generic method if it contains an open
10610         catch clause (because we don't pass MRGCTXs yet).
10611
10612 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10613
10614         * mini.c: When compiling a method with generic sharing, insert the
10615         method instantiated with an all-Object generic context into the
10616         jit info table, instead of the context of the first instantiation
10617         of the method we happen to compile.
10618
10619 2008-06-18  Martin Baulig  <martin@ximian.com>
10620
10621         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10622         `major_version' and `minor_version'.
10623
10624 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10625
10626         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10627         mono_method_is_generic_sharable_impl() takes an additional
10628         argument specifying whether to treat type variables as reference
10629         types.
10630
10631 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10632
10633         * mini.h: Removed obsolete prototypes.
10634
10635 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10636
10637         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10638         already handle them.
10639
10640 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10641
10642         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10643         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10644         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10645         tramp-x86.c: Added a MonoGenericContext* argument to
10646         mono_arch_get_unbox_trampoline() so that it can call other
10647         functions which require it.
10648
10649 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10650
10651         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10652         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10653         mono_arch_get_this_arg_from_call() takes a
10654         MonoGenericSharingContext* as well.
10655
10656 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10657
10658         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10659         implement generic sharing of unbox.
10660
10661 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10662
10663         * mini.c: Don't compute the vtable to determine whether a field is
10664         special static, because it might not work for open types.
10665
10666 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10667
10668         * mini.c: Removed the unused token_type and token_source arguments
10669         from get_runtime_generic_context_ptr().
10670
10671 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10672
10673         * mini.c (ADD_BINOP): fix the build
10674
10675 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10678         a widening op.
10679
10680 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10681
10682         * mini.h: Removed class relations enum that's not used anymore.
10683
10684 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10685
10686         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10687
10688         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10689         the lazy fetch trampoline access code.
10690
10691 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10692
10693         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10694
10695 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10698
10699         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10700
10701         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10702
10703 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10706         intrinsics.
10707
10708         * mini-ops.h: Add MIN/MAX_UN opcodes.
10709
10710         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10711         intrinsics.
10712
10713         * basic-math.cs: Add more min/max tests.
10714
10715         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10716
10717 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10718
10719         * mini.c: Small fix in the prologue of emit_castclass.
10720
10721 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10724
10725         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10726         do not work even for unsigned types. Fixes #400014.
10727
10728         * basic-math.cs: Add regression tests for unsigned Min/Max.
10729
10730 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10731
10732         * mini.c: Added additional context_used argument to several
10733         functions, which will be needed for sharing generic methods.  Use
10734         GET_RGCTX macro wherever appropriate.  Declare only one
10735         context_used in mono_method_to_ir().
10736
10737 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10738
10739         * mini.c, generic-sharing.c: Removed generic class relations.
10740
10741         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10742         functions due to MRGCTX changes.
10743
10744 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10745
10746         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10747         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10748         with calculated IMT.
10749
10750         * mini.c: Generic sharing of calls via generic interfaces.
10751
10752         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10753         generic method with non-constant MonoGenericContext*.  Instead,
10754         the context is taken out of the method itself.
10755
10756 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10757
10758         * mini.c: Generic sharing of ldvirtftn.
10759
10760 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10761
10762         * mini.c: Generic sharing of ldftn.
10763
10764 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10765
10766         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10767
10768 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10769
10770         * mini.c: Generic sharing of the special case of ldtoken followed
10771         by a call to GetTypeFromHandle.
10772
10773 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10774
10775         * mini.c: Generic sharing of box for nullable types.
10776
10777 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10780         are passed on the stack. Fixes #324807.
10781
10782 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10783
10784         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10785         for the ArgValuetypeAddrInIReg case.
10786
10787         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10788         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10789
10790         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10791         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10792         local variable and pass the local variable by reference to the called method.
10793           
10794         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10795         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10796
10797         Contributed under MIT/X11 license.
10798
10799 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10800
10801         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10802
10803         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10804         everything.
10805
10806 2008-06-10  Martin Baulig  <martin@ximian.com>
10807
10808         * debug-mini.c
10809         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10810
10811 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10812
10813         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10814         possible error when no arguments are passed.
10815
10816         Contributed under MIT/X11 license.
10817
10818 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10819
10820         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10821         where the file name is NULL.
10822
10823 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10824
10825         * mini.c: Fix s390 build.
10826
10827 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10828
10829         * trace.c (mono_trace_parse_options): Fix warnings.
10830
10831         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10832
10833 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10834
10835         * mini.c (remove_block_if_useless): Avoid printing the method name.
10836         
10837         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10838         MONO_INST_NEW.
10839
10840         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10841         LMF. Not yet used.
10842
10843         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10844         translated code after it has been patched.
10845
10846 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10849         avoid problems during code patching on SMP systems.
10850         (emit_call): Avoid adding a patch info which is already added by 
10851         emit_call_body.
10852         (mono_arch_emit_exceptions): Ditto.
10853
10854 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10855
10856         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10857         MONO_TYPE_ISSTRUCT already checks for it.
10858
10859 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10860
10861         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10862           structs with floats on Winx64 the float registers are not used.  
10863           The integer registers are always used..
10864         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10865           only one register will be used and only if the size of the struct 
10866           is 1,2,4, or 8 bytes.
10867
10868         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10869           to work for Winx64.
10870
10871         Contributed under MIT/X11 license.
10872
10873 2008-06-05  Martin Baulig  <martin@ximian.com>
10874
10875         * debug-debugger.c (debugger_lookup_class): Also call
10876         mono_class_setup_methods() here; we're only called from RTI.
10877
10878 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10879
10880         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10881         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10882         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10883         Post-process object files and add dtrace-generated object, if necessary.
10884
10885         Contributed under MIT/X11 license.
10886
10887 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10888
10889         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10890         element class.
10891
10892         * mini.c: Generic sharing for unbox.any and castclass.
10893
10894 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10895
10896         * mini.c: Ignore tailcall prefix in shared generic code and when
10897         doing calls which require a vtable/rgctx argument.
10898
10899 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10900
10901         * mini.c: Don't free the JIT info.
10902
10903         * driver.c: Changes in the JIT info table testing code.
10904
10905 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10906
10907         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10908         interruption. Fix some warnings.
10909
10910         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10911         interruption_checkpoint.
10912
10913 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10914
10915         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10916         from embedding applications.
10917
10918 2008-06-02  William Holmes  <billholmes54@gmail.com>
10919
10920         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10921           reserving 32 bytes on the stack when making calls. 
10922
10923         Contributed under MIT/X11 license.
10924
10925 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10928         the linear IL branch.
10929
10930         * driver.c: Print out more information for --version on arm.
10931
10932 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10935         bb_exit instead, since out of line bblocks might not actually be emitted
10936         out-of-line.
10937         
10938         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10939         maximum epilog size for out of line bblocks if tracing is enabled.
10940
10941         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10942
10943 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10944
10945         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10946
10947 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10948
10949         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10950         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10951         opcodes.
10952
10953 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10956         the 'value' to store is a constant.
10957
10958         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10959
10960         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10961         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10962
10963 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10966         for accessing method->generic_container.
10967
10968 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10971         
10972         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10973
10974         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10975
10976         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10977         fails.
10978
10979 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10980
10981         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10982
10983         * mini.c: Handle the case when mono_class_vtable () fails.
10984
10985 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10986         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10987         the stat profiler.
10988
10989 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10990
10991         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10992         together with domain sharing.
10993
10994 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10995
10996         * mini.c: Treat callvirts to final methods like non-virtual calls
10997         when doing generic sharing, i.e. look them up in the runtime
10998         generic context.
10999
11000 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11001
11002         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11003         with computed types (for generic sharing).
11004
11005         * mini.c: Generic sharing for mkrefany and refanyval.
11006
11007 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11008
11009         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11010         possible.
11011
11012         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11013         the generic sharing code.
11014         
11015         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11016         when needed.
11017
11018 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11021
11022 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11023
11024         * driver.c: updated copyright date
11025
11026 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11029         needed.
11030
11031 2008-05-19  Martin Baulig  <martin@ximian.com>
11032
11033         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11034         pointing to the new `_mono_debug_using_mono_debugger' variable.
11035
11036         * driver.c
11037         (mono_main): Check mono_debug_using_mono_debugger() rather than
11038         the `MONO_INSIDE_MDB' environment variable to check whether we're
11039         inside the debugger.
11040
11041 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11044         argument.
11045
11046 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11047
11048         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11049
11050         * mini.c: Added mini_assembly_can_skip_verification. This
11051         function checks if the assembly requested to skip verification. 
11052         Fixes part of #387274.
11053
11054 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * mini.c (mini_get_method): Disable the check for open generic classes when
11057         using generic sharing.
11058
11059         * generics.cs: Add a test for #387034.
11060
11061         * mini.c (mini_get_method): Check whenever the method class is an open generic
11062         type, and return NULL in that case, causing a verification error. Fixes
11063         #384123.
11064
11065 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11066
11067         * driver.c (mono_main): Revert r102623. The right
11068         thing to do is to enable the verifier under verifiable
11069         unless a --security flag was passed.
11070
11071         We need this non-trivial behavior for --verify-all otherwise
11072         mcs-compileall won't be able to use it. As it needs everything to
11073         be verified under validil.
11074
11075 2008-05-06  Martin Baulig  <martin@ximian.com>
11076
11077         Fix #383749.
11078
11079         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11080         (mono_debugger_thread_cleanup): Likewise.
11081         (mono_debugger_extended_notification): Likewise.
11082
11083 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11084
11085         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11086         against both inflated and non-inflated methods. We need to check against the
11087         generic definition for cases where the instantiated method is not visible.
11088         We need to check against the inflated types for cases where the instantiation
11089         changes any super type. This fixes #382986.
11090
11091         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11092         that check for visibiliy as generic params only appears as the type subject
11093         of tokens on call opcodes. Field manipulation and ldftn must always
11094         target an exact type.
11095
11096 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11097
11098         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11099         if no related --security flag is passed.
11100
11101 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11102
11103         * mini-arch.h: Prepare support for ppc64.
11104
11105         Contributed under MIT/X11 license.
11106
11107 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11108
11109         * aot-runtime.c: Prepare support for ppc64.
11110
11111         Contributed under MIT/X11 license.
11112
11113 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11114
11115         * mini-ops.h: Prepare support for ppc64.
11116
11117         Contributed under MIT/X11 license.
11118
11119 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11120
11121         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11122
11123         Contributed under MIT/X11 license.
11124
11125 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11128         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11129         assemblies on windows.
11130
11131 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11132
11133         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11134         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11135         * main.c: Use UTF-8 encoded command line instead of Windows default code
11136         page on Windows to support Unicode.
11137         * driver.c (DllMain): New function for mixed-mode assembly support.
11138         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11139         export __stdcall functions without decoration.
11140
11141         Contributed under MIT/X11 license.
11142
11143 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11144
11145         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11146         saving it very early.
11147
11148 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11149
11150         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11151         deleted.  The only way to access the new RGCTX is via the
11152         trampline.
11153
11154         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11155         vtable instead of the RGCTX to static methods.
11156
11157         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11158         accessing the new RGCTX.
11159
11160         * generic-sharing.c: There is no separation between self, type
11161         arguments and other types in the RGCTX anymore.
11162
11163 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11164
11165         * mini-amd64.c (add_general): Remove previous stack adjustment.
11166         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11167         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11168         for 32 bytes of stack space reserved for all calls.
11169         
11170         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11171         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11172         adjustment.
11173         
11174         Code contributed under MIT/X11 license.
11175
11176 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11177
11178         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11179         against the root definition, peeling out method and type instantiations.
11180         Cache verify success results, code that fails verification is still
11181         checked multiple times.
11182
11183 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11186
11187 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11188
11189         * mini-amd64.c (add_general): Always increment stack on Win64.
11190         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11191         on Win64.
11192         
11193         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11194         stack based argument handling on Win64.
11195         
11196         Code contributed under MIT/X11 license.
11197
11198 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11199
11200         * Makefile.am (version.h): Add support for git-svn.
11201
11202 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11205         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11206         avoiding allocations and libc functions which might deadlock.
11207         
11208         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11209         'no-gdb-backtrace' option is set.
11210
11211         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11212
11213         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11214
11215 2008-04-21  Martin Baulig  <martin@ximian.com>
11216
11217         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11218         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11219
11220 2008-04-21  Martin Baulig  <martin@ximian.com>
11221
11222         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11223         `thread_vtable', `event_handler_ptr' and `event_handler'.
11224
11225 2008-04-21  Martin Baulig  <martin@ximian.com>
11226
11227         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11228         allows delayed initialization of the `executable_code_buffer' when
11229         attaching.
11230
11231 2008-04-21  Martin Baulig  <martin@ximian.com>
11232
11233         * mini.h (mono_debugger_create_notification_function): Removed.
11234         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11235
11236         * mdb-debug-info64.s
11237         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11238
11239         * mdb-debug-info32.s
11240         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11241
11242         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11243         currently only works on x86 and x86_64, so don't create it on ppc.
11244
11245 2008-04-21  Martin Baulig  <martin@ximian.com>
11246
11247         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11248
11249         * mini.c
11250         (mini_method_compile): In the fp elimination check, check
11251         `debug_options.mdb_optimizations' in addition to
11252         mono_debug_using_mono_debugger().       
11253
11254         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11255         disable some JIT optimizations which are only disabled when
11256         running inside the debugger.
11257         Added `--help-debug' option to describe the debugging options.
11258         (parse_debug_options): New static function to parse the `--debug'
11259         options, so we can easily add more stuff in future.
11260
11261 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11264         the method has no body.
11265
11266 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11267
11268         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11269         assembly is not allowed in MSVC 64-bit compiler. 
11270         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11271         as we get floating point exceptions everywhere.
11272         
11273         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11274         correctly align arguments for call to throw_exception.
11275         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11276         
11277         Code contributed under MIT/X11 license.
11278
11279 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11280
11281         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11282
11283 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11284
11285         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11286
11287         * mini-amd64.c (NEW_INS): Set cil_code.
11288
11289         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11290         from mini-amd64.c so all debugger related logic is in one place.
11291
11292         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11293         later won't have a random ip assigned to them.
11294
11295 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11296
11297         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11298         the arch specific function initializes code_size.
11299         (mono_create_delegate_trampoline): Ditto.
11300
11301         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11302         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11303         platforms.
11304
11305         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11306         running under the debugger.
11307
11308         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11309         debugger.
11310
11311         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11312         debugger. Also move the disabling of optimizations here from driver.c.
11313         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11314         debugger.
11315
11316         * mini.h (MonoCompile): Add a few new flags.
11317
11318 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11321         so the cil_code field of created MonoInst's is properly set.
11322         (mini_select_instructions): Ditto.
11323
11324         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11325         (MONO_INST_NEW_CALL): Ditto.
11326
11327         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11328         in many places so the ins->cil_code field is properly initialized.
11329
11330         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11331         place.
11332
11333 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini.c (mini_method_compile): Print a different message when compiling a 
11336         shared method.
11337         
11338         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11339         > 1.
11340
11341 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11342
11343         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11344         SSE2 instructions.
11345
11346         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11347         
11348 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11349
11350         * mini.c (handle_stack_args): Make this return void since its return value was
11351         never used. Also set cfg->unverifiable for invalid IL instead of calling
11352         G_BREAKPOINT ().
11353
11354 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11355
11356         * mini.c: Make sure "this" is live in catch clauses with type
11357         variables in shared generic code.
11358
11359 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11360
11361         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11362         generic_class_is_reference_type() to ensure the proper behaviour
11363         when sharing generic code and the type in question is a type
11364         argument.
11365
11366 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11369         race conditions when printing thread dumps. Fixes #377738.
11370
11371 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11372         
11373         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11374         shows up when both MonoInst arguments can cause aliasig.
11375         There is likely no way in the current JIT to trigger this problem, but
11376         it showed up in the development of generics sharing, when in a new
11377         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11378         When the generics sharing code will be committed, its tests will be
11379         valid also for this bug.
11380
11381 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11382
11383         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11384         PATCH_INFO_METHOD.
11385
11386         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11387         NULL.
11388
11389 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11390
11391         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11392         use a more detailed exception message for InvalidCastException.
11393
11394         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11395
11396         * driver.c (mono_main): Add --debug=casts option to turn on better 
11397         InvalidCastException message details.
11398
11399         * mini.c (mini_get_debug_options): New helper function to return the address of
11400         the debug_options variable.
11401
11402         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11403         the jit_tls TLS variable.
11404
11405         * mini.c (mono_jit_tls): New TLS variable.
11406
11407         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11408         option is used.
11409
11410 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11411
11412         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11413
11414         * mini.c: Removed verifer related stuff, code moved to verify.c.
11415
11416         * driver.c: Using code from verify.c instead of mini.c.
11417
11418 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11419
11420         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11421         longer valid.
11422
11423 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11424
11425         * mini.c (check_for_method_verify): Enabling verification of
11426         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11427         have been fixed.
11428
11429 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11430
11431         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11432         caller saved registers as well.
11433         
11434         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11435         saved registers as well.
11436
11437 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11440
11441         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11442         code.
11443
11444 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11447         to get_call_info.
11448         (get_call_info): Take a gsctx argument instead of 'cfg'.
11449
11450 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11451
11452         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11453         mono_verify_all is set.
11454
11455         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11456
11457         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11458
11459 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11460
11461         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11462         an exception.
11463
11464         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11465         verifier and the code generated by the compiler.
11466
11467 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11468
11469         * mini.c: Generic sharing of the non-nullable case of the box
11470         instruction.
11471
11472 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * inssel.brg: Fix the build.
11475
11476         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11477
11478 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11479
11480         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11481         Array:Address. Fixes #372410.
11482
11483         * iltests.il.in: New tests for readonly prefix.
11484
11485 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11488         mini-trampolines.c.
11489
11490         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11491         mini-exceptions.c.
11492
11493         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11494         
11495         * mini.c (mono_decompose_op_imm): New helper function.
11496
11497         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11498         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11499         return value.
11500
11501         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11502         mono_arch_output_basic_block. Fix warnings.
11503
11504         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11505         for now.
11506
11507 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11508
11509         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11510         since the extra frame is now detected automatically inside the loop.
11511
11512         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11513         opts which are now in mono_peephole_ins ().
11514         
11515         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11516
11517         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11518         frames and skip duplicate managed-to-native frames. Fixes #367665.
11519
11520         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11521         opts which are now in mono_peephole_ins ().
11522         (mono_arch_peephole_pass_2): Ditto.
11523
11524         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11525
11526         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11527         arch independent peephole optimizations.
11528
11529         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11530         opts which are now in mono_peephole_ins ().
11531
11532         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11533         
11534         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11535
11536         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11537         pattern.
11538
11539         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11540         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11541         opcode. 
11542
11543 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11546         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11547         return value.
11548
11549         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11550         mono_arch_output_basic_block. Fix warnings.
11551
11552 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11553
11554         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11555         conv.ovf.u.un.
11556
11557 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11560         conv.ovf.u.un.
11561
11562         * iltests.il: Add new tests.
11563
11564 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11565
11566         * mini.c: Removed Windows version macros.
11567
11568 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11569
11570         * generic-sharing.c: Put reflection types in the extensible part
11571         of the runtime generic context.
11572
11573         * mini.c: Generic sharing of the GetTypeHandle special case of the
11574         ldtoken instruction.
11575
11576 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11577
11578         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
11579
11580         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
11581         
11582         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
11583         consistency with the other version on the linear IR branch.
11584
11585         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
11586
11587         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
11588
11589         * iltests.il.in: Add new tests.
11590
11591 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
11594
11595         * iltests.il.in: Add new tests.
11596
11597 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11598
11599         * mini.c: Two variables with the same name were declared in
11600         nesting contexts and one wasn't initialized.  Fixed.
11601
11602 2008-03-19  Mark Probst  <mark.probst@gmail.com>
11603
11604         * mini.c: Generic sharing of the initobj instruction.
11605
11606 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
11607
11608         * mini.c: make the test to optimize ldtoken from typeof() more
11609         precise.
11610
11611 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11612
11613         * mini.c: Generic sharing of the initobj instruction for reference
11614         types.
11615
11616 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11617
11618         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11619         the mono_breakpoint_clean_code() code to perform bound checks.
11620
11621 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11622
11623         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11624         mono_arch_patch_callsite() to include the start of the managed method
11625         to be able to perform bound checks.
11626
11627 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11628
11629         * mini.c: Generic sharing for the isinst instruction.
11630
11631 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11632
11633         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11634         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11635         with the runtime generic context argument.
11636
11637         * mini.c: Share calls to several types of unsharable methods by
11638         putting the address of the method code in the runtime generic
11639         context and doing an indirect call.
11640
11641         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11642         to switches.
11643
11644 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11645
11646         * generic-sharing.c: Change due to a change in the runtime genric
11647         context API.
11648
11649 2008-03-15  Martin Baulig  <martin@ximian.com>
11650
11651         * tramp-x86.c
11652         (mono_arch_nullify_class_init_trampoline): Add call to
11653         mono_breakpoint_clean_code() to make things work when running
11654         inside the debugger.
11655
11656         * tramp-amd64.c
11657         (mono_arch_nullify_class_init_trampoline): Add call to
11658         mono_breakpoint_clean_code() to make things work when running
11659         inside the debugger.
11660
11661 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11662
11663         * inssel-long.brg (reg): Fix 64 bit build.
11664
11665 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11666
11667         * mini.c, mini.h: Share static generic code by passing it an
11668         implicit argument pointing to the runtime generic context.
11669
11670         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11671         inssel-long32-mips.brg: New opcodes for calling shared static,
11672         which need to be passed the runtime generic context.
11673
11674         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11675         argument on the stack in the prologue if needed.  New function for
11676         finding the runtime generic context argument from the registers
11677         saved by the trampoline.
11678
11679         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11680         runtime generic context argument.
11681
11682         * tramp-amd64.c: Also restore the register used for the runtime
11683         generic context argument.
11684
11685         * mini-trampoline.c: Resolve shared static calls by consulting the
11686         runtime generic context via the new argument.
11687
11688         * generic-sharing.c: Add an argument to sharability-checking
11689         functions that specifies whether type variables should be treated
11690         as sharable type arguments.
11691
11692         * inssel-x86.brg: Removed a superfluous, buggy rule.
11693
11694         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11695         to switches.
11696
11697 2008-03-14  Martin Baulig  <martin@ximian.com>
11698
11699         * debug-debugger.c (main_thread_handler): Call
11700         mono_runtime_run_main() without sending any notifications.
11701
11702         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11703
11704 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11707
11708 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11709
11710         * tramp-x86.c: Fixed register restore offsets in the trampoline
11711         code for ECX and EDX.
11712
11713 2008-03-12  Geoff Norton  <gnorton@novell.com>
11714
11715         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11716         different ucontext_t implementations.
11717         * exceptions-arm.c: Use the above defines to get exceptions working on 
11718         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11719         * mini-arm.c: Implement iPhone icache support (based on a patch by
11720         Luke Howard lukeh@padl.com)
11721
11722 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11723
11724         * mini.c: Enable generic sharing of calls to non-static
11725         non-interface non-generic non-value-type methods.
11726
11727         * mini-trampolines.c: Resolve calls from shared generic code.
11728
11729 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11732
11733         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11734
11735 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11736
11737         * mini.c: some fixes for the AOT compiler.
11738
11739 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11740
11741         * cpu-amd64.md: Add clob:1 to some float opcodes.
11742
11743 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11744
11745         * mini.h: Added MiniVerifierMode enumeration.
11746
11747         * mini.c: Added mini_verifier_set_mode to control
11748         the usage of the new verifier.
11749
11750         * mini.c (mono_method): Integrated the new verifier.
11751
11752         * driver.c: Extended --security option with validil and
11753         verifiable options to activate the new verifier.
11754
11755 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11758         optimization to ctors taking 0 or 2 arguments too.
11759
11760         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11761         a bit.
11762
11763         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11764
11765         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11766
11767 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11768
11769         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11770         non-aot case as well.
11771
11772         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11773
11774         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11775         changes.
11776
11777         * aot-compiler.c (encode_patch): Ditto.
11778
11779         * mini.h (G_MININT32): Fix the definition of this.
11780
11781 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11782
11783         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11784
11785         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11786
11787 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11788
11789         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11790         methods returning vtypes in registers.
11791         (mono_arch_allocate_vars): Ditto.
11792
11793         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11794
11795         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11796
11797         * generics.cs: Add a test from the linear IR branch.
11798
11799         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11800
11801         * mini.c (inline_method): Cache failed inline attempts.
11802
11803 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11804
11805         * mini.c: For shared methods of generic classes put the location
11806         of "this" into the MonoGenericJitInfo.
11807
11808         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11809         register out of a MonoContext by register number.  Add the generic
11810         sharing context as an argument to mono_arch_find_this_argument().
11811
11812         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11813         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11814         for new arch function.
11815
11816         * mini-exception.c: Handle open exception clauses in shared
11817         generic code.
11818
11819         * mini-trampolines.c: Supply additional argument to
11820         mono_arch_find_this_argument().
11821
11822 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * Makefile.am (regtests): Run the bench.exe tests last.
11825
11826 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11829         a bit.
11830
11831 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11834         with MS.
11835
11836         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11837         
11838         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11839
11840         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11841         whose class has no cctor.
11842
11843         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11844
11845 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11846
11847         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11848         unverified.
11849
11850 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11853         to be in sync with the code on the linear IR branch.
11854
11855         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11856
11857         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11858
11859 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11860
11861         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11862
11863         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11864
11865         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11866
11867         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11868
11869         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11870         
11871         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11872         body.
11873
11874 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11875
11876         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11877         OP_LOADR4_MEMBASE emission.
11878
11879         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11880         (mono_spillvar_offset_float): Ditto.
11881
11882         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11883
11884         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11885         emission.
11886
11887         * basic-long.cs: Add regression tests for them.
11888
11889         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11890         use.
11891         (mono_arch_allocate_vars): Fix representation of single-precision float
11892         argument.
11893         (mono_arch_output_basic_block): Ditto.
11894
11895         * inssel-mips.brg: Ditto, remove duplicate items.
11896
11897         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11898         arguments of tail calls as on other platforms.
11899         (mono_arch_output_basic_block): Handle tail calls.
11900
11901         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11902         register.
11903
11904         * objects.cs (test_5_pass_static_struct): Add test for it.
11905
11906         Contributed under MIT/X11 license.
11907
11908 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11909
11910         * Makefile.am: Use gmcs for compiling the regression tests.
11911
11912         * *.2.cs *.2.il: Rename to *.cs and *.il.
11913
11914 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11915
11916         * regalloc.h: Make the vassign array smaller.
11917
11918         * mini.c (mini_method_compile): Remove an unused field in cfg.
11919
11920         * mini-codegen.c: Add a bunch of micro optimizations.
11921
11922 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * regalloc.h: Remove some unused fields.
11925
11926 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11929
11930         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11931
11932 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11933
11934         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11935
11936         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11937         trampoline: Fetch an entry from the runtime generic context.  If
11938         it's NULL, jump to the actual trampoline to fill the runtime
11939         generic context.  Otherwise, return it.
11940
11941         * mini.c: Call the lazy fetch trampoline to get entries out of the
11942         runtime generic context.
11943
11944         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11945         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11946         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11947
11948 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11949
11950         * mini.c: Fetch data out of the extensible part of the runtime
11951         generic context instead of calling a helper function.
11952
11953         * generic-sharing.c: Some functions moved into
11954         metadata/generic-sharing.c.  Helper function for fetching other
11955         types now checks and asserts against extensible rgctx (just for
11956         debugging purposes - the helper function isn't called anymore
11957         unless for debugging).
11958
11959 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11962         for tail calls up to the point that the tests in iltests.exe run. Also add a
11963         dummy CKFINITE implementation.
11964         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11965         needed for trampoline LMF frames.
11966
11967         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11968         trampoline LMF frames.
11969
11970 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11971
11972         * mini.c (inline_method): clean any pending loader error when inlining fail.
11973         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11974
11975 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11976
11977         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11978
11979         * aot-runtime.c (decode_patch_info): Ditto.
11980
11981         * mini.c (mono_resolve_patch_target): Ditto.
11982         
11983         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11984         icall wrappers.
11985
11986         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11987         
11988         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11989         if it references an icall address.
11990
11991 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * cpu-s390x.md: Remove some more unused opcodes.
11994         
11995         * cpu-s390x.md: Remove some unused opcodes.
11996
11997         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11998         mono_op_imm_to_op ().
11999
12000         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12001         instead of a switch statement.
12002         
12003         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12004         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12005
12006         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12007         
12008         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12009
12010         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12011         -1.
12012
12013 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12016         opened. Fixes #362607.
12017
12018         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12019
12020         * iltests.il.in: Add a test for static methods in interfaces.
12021
12022 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * genmdesc.c (build_table): Fix a crash on older glib versions.
12025
12026         * cpu-sparc.md: Remove some unused opcodes.
12027         
12028         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12029         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12030
12031         * cpu-amd64.md: Remove some unused opcodes.
12032
12033         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12034         like the other opcodes.
12035
12036 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12037
12038         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12039
12040         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12041
12042         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12043         variables 'cfg' instead of 'm' for consistency.
12044
12045         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12046
12047         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12048         argument holding the vtype return address, to avoid the ambigious use of
12049         cfg->ret for this purpose.
12050
12051         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12052
12053         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12054         
12055         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12056         new mono_print_ins () function which only takes one argument.
12057
12058 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12061         macro arguments.
12062
12063 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12064
12065         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12066
12067         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12068
12069         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12070         opcodes and other small changes.
12071
12072         * mini-ops.h: Add some new opcodes from the linear IR branch.
12073
12074         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12075
12076         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12077         opcodes, use the REG_MEMBASE opcodes instead.
12078         
12079         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12080         opcodes, use the REG_MEMBASE opcodes instead.
12081         
12082         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12083         linear IR branch.
12084
12085         * mini.c (mono_op_imm_to_op): New helper function.
12086
12087         * mini-ops.h: Add some opcodes from linear IR branch.
12088
12089 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12092         <tsv@solvo.ru>.
12093
12094 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12097         OP_ICONV_TO_R4/R8.
12098
12099         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12100
12101 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12102
12103         * aot-compiler.c (emit_method_code): Add an assert.
12104
12105         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12106         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12107         methods.
12108
12109 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12110
12111         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12112         some load/store opcodes so they are consistent. 
12113         (mono_arch_emit_prolog): Simplify some code.
12114
12115         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12116
12117         * objects.cs: Add tests for large argument offsets on ARM.
12118
12119         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12120         stack offsets. Fixes #359651.
12121
12122         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12123
12124         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12125
12126         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12127
12128         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12129
12130         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12131
12132         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12133         rid of CEE_CONV_R_UN.
12134
12135         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12136
12137 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12138
12139         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12140
12141         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12142
12143         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12144
12145         * cpu-amd64.md: Remove some unused opcodes.
12146
12147         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12148
12149         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12150
12151         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12152         arch specific functions for its parts. Call the peephole pass after local
12153         regalloc so the prolog can compute a more accurate max_offset.
12154         
12155         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12156         the corresponding OP_I/OP_L opcodes.
12157
12158         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12159
12160         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12161
12162 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12163
12164         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12165         as they are handled in mini.c.
12166
12167         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12168         
12169         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12170         case since it is handled in mini.c.
12171
12172         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12173
12174         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12175
12176         * *.c: Use the new opcodes in the IR and back end code.
12177
12178         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12179
12180         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12181
12182 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12183
12184         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12185         an assert because it has a race condition.
12186
12187 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12188
12189         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12190
12191         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12192
12193         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12194
12195         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12196         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12197
12198 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * cpu-amd64.md (move): Correct the maximum size of move.
12201
12202 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12203
12204         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12205         the generic class init trampoline to return quickly if the class
12206         is already inited.
12207
12208 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12211         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12212
12213 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12214
12215         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12216         branch.
12217
12218 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * objects.cs: Add some soft-float tests.
12221
12222         * mini.c: Fix a couple more soft-float issues.
12223
12224         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12225
12226         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12227         avoid a REX prefix.
12228
12229 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12230
12231         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12232         exception happens while compiling a virtual method.
12233
12234 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12235
12236         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12237         
12238         * mini-sparc.c: Fix build.
12239
12240         * mini-sparc.c (get_call_info): Add support for generic sharing.
12241
12242         * mini-exceptions.c: Add a FIXME.
12243
12244 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12245
12246         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12247         altstack handling code.
12248
12249         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12250         
12251         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12252
12253         * mini-s390.c: Add support for generic sharing.
12254
12255         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12256         Fix CAS on s390.
12257         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12258
12259         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12260
12261         * mini-s390x.c: Add support for generic sharing.
12262         
12263         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12264         Fix CAS on ia64.
12265         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12266
12267         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12268         can be used since it takes a 16 bit signed immediate.
12269
12270         * inssel-s390x.brg: Fix OP_SETRET.
12271
12272         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12273
12274         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12275
12276         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12277
12278         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12279
12280         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12281         in one place.
12282
12283         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12284         stuff.
12285
12286         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12287         of the unused mono_arch_patch_delegate_trampoline stuff.
12288
12289 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * basic-long.cs: Move the fp related tests to basic-float.cs.
12292
12293         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12294
12295         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12296
12297         * basic-calls.cs: Add a test for proper float argument passing.
12298
12299         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12300         if the context corresponds to an exception received through a signal.
12301
12302         * exceptions.cs: Add a test for nullref handling at the start of a try
12303         clause.
12304
12305         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12306
12307         * jit-icalls.c (mono_break): New JIT icall.
12308
12309         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12310
12311         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12312
12313 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12314
12315         * cpu-*.md: Get rid of unused opcodes.
12316
12317         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12318
12319         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12320         by all platforms.
12321
12322         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12323         define.
12324
12325         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12326         the arch independent trampoline code in mini-trampolines.c.
12327
12328         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12329
12330         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12331
12332         * mini-s390.h: Remove an unused define.
12333         
12334         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12335         the arch independent trampoline code in mini-trampolines.c.
12336
12337         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12338
12339 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12342
12343         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12344
12345         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12346
12347         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12348
12349         * cpu-amd64.md: Use smaller sizes for int opcodes.
12350
12351         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12352
12353         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12354         objects.cs.
12355
12356         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12357         debugging.
12358
12359         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12360         instead of though a pointer to save an indirection when accessing elements of
12361         the array.
12362
12363         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12364         some typos.
12365         (NOT_IMPLEMENTED): New helper macro.
12366         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12367         of a bb.
12368
12369         * *.c: Use the new helper macro.
12370
12371 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12374
12375 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12378         stack slots.
12379
12380 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12383         profiling is enabled.
12384         
12385         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12386         the end.
12387         (mono_arch_emit_prolog): Add more first bblock optimizations.
12388
12389         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12390         in order if possible.
12391         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12392         bblock, since the arguments are still in their original registers.
12393
12394         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12395
12396 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12397
12398         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12399         as well.
12400
12401         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12402         offset 0.
12403
12404         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12405
12406         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12407         process async exceptions received while in unmanaged code.
12408
12409         * mini.c (mini_init): Install a callback with the runtime which will be called
12410         when a thread receives an async exception while in unmanaged code.
12411
12412         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12413
12414         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12415
12416 2008-01-16  Wade Berrier  <wberrier@novell.com>
12417
12418         * cpu-g4.md:
12419         * cpu-arm.md:
12420         * cpu-s390x.md:
12421         fix build
12422
12423 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12426         compilation with sun cc.
12427
12428         * cpu-*.md: Fix the build.
12429
12430         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12431
12432         * mini-amd64.h: Add some comments to the MonoLMF structure.
12433
12434         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12435         
12436         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12437         in the LMF structure if possible. This saves two instructions in the
12438         managed->native wrappers.
12439
12440         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12441
12442 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12443
12444         * generic-sharing.c: New type argument lookup code which uses the
12445         runtime generic context template.
12446
12447 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12450
12451         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12452         (mono_arch_output_basic_block): Fix localloc implementation.
12453
12454         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12455
12456         * mini-ia64.c (peephole_pass): Fix ia64 build.
12457
12458         * mini-amd64.c (peephole_pass): Fix a warning.
12459         
12460         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12461         at a constant offset from sp/fp.
12462
12463         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12464         instead of obtaining it from *lmf in the managed method case.
12465
12466 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12469
12470 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12471
12472         * mini.h (MonoInstList): New type.
12473         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12474         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12475         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12476         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12477         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12478         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12479         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12480         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12481         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12482         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12483         MONO_INST_LIST_FOR_EACH_ENTRY,
12484         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12485         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12486         mono_inst_list_first, mono_inst_list_last,
12487         mono_inst_list_next, mono_inst_list_prev): New instruction
12488         list handling interfaces.
12489         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12490         list head 'ins_list'.
12491         (MonoInst): Replace next pointer with list head 'node'.
12492         (MonoCallInst): Make 'out_args' a MonoInstList.
12493         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12494         (MonoCompile): Delete reverse_inst_list and
12495         reverse_inst_list_len.
12496         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12497         mono_arch_lowering_pass, mono_arch_local_regalloc,
12498         mono_arch_output_basic_block, mono_arch_emit_prolog):
12499         Convert to new instruction lists.
12500         (insert_after_ins): Delete.
12501         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12502         instruction lists.
12503         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12504         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12505         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12506         mono_emulate_opcode, mono_emit_load_got_addr,
12507         inline_method, mono_method_to_ir, mono_print_bb_code,
12508         print_dfn, decompose_pass, nullify_basic_block,
12509         replace_out_block_in_code, remove_block_if_useless,
12510         merge_basic_blocks, move_basic_block_to_end,
12511         try_unsigned_compare, optimize_branches, mono_print_code,
12512         mini_select_instructions, remove_critical_edges): Likewise.
12513         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12514         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12515         mono_arch_output_basic_block, mono_arch_emit_prolog):
12516         Likewise.
12517         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12518         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12519         mono_arch_output_basic_block): Likewise.
12520         (inst_list_prepend, insert_after_ins): Delete.
12521         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12522         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12523         instruction lists.
12524         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12525         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12526         mono_arch_emit_prolog): Likewise.
12527         * cfold.c (mono_constant_fold): Likewise.
12528         * liveness.c (visit_bb, mono_analyze_liveness,
12529         optimize_initlocals): Likewise.
12530         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12531         * graph.c (mono_draw_code_cfg): Likewise.
12532         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12533         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12534         mono_ssa_cprop): Likewise.
12535         * abcremoval (get_relations_from_previous_bb, process_block):
12536         Likewise.
12537         * local-propagation (mono_cprop_invalidate_values,
12538         mono_local_cprop_bb): Likewise.
12539         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12540         peephole_pass, mono_arch_output_basic_block,
12541         mono_arch_emit_prolog): Likewise.
12542         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12543         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12544         mono_arch_emit_prolog): Likewise.
12545         (insert_after_ins): Delete.
12546         * aliasing.c (print_code_with_aliasing_information,
12547         mono_build_aliasing_information, mono_aliasing_deadce):
12548         Convert to new instruction lists.
12549         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12550         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12551         mono_arch_local_regalloc, mono_arch_output_basic_block):
12552         Likewise.
12553         (insert_after_ins): Delete.
12554         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12555         peephole_pass, mono_arch_output_basic_block): Convert to
12556         new instruction lists.
12557         * mini-codegen (InstList, inst_list_prepend,
12558         insert_after_ins): Delete.
12559         (insert_before_ins, get_register_force_spilling,
12560         get_register_spilling, free_up_ireg, free_up_reg,
12561         create_copy_ins, create_spilled_store, alloc_int_reg,
12562         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12563         to new instruction lists.
12564         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12565         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12566         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12567         (insert_after_ins): Delete.
12568         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12569         mono_arch_local_regalloc, mono_arch_output_basic_block,
12570         mono_arch_call_opcode): Convert to new instruction lists.
12571         (insert_after_ins): Delete.
12572         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12573         peephole_pass, mono_arch_output_basic_block,
12574         mono_arch_emit_prolog): Convert to new instruction lists.
12575
12576 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
12579
12580         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
12581         Fixes #353182.
12582
12583         * Makefile.am (version.h): Make this work with non-bash shells.
12584
12585 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
12588
12589 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
12592         the InitializeArray optimization.
12593
12594 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
12595
12596         * mini.c driver.c: Don't include os/gc_wrapper.h.
12597
12598 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
12599
12600         * mini.c (print_jit_stats): Print GC statistics if available.
12601
12602 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
12603
12604         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
12605
12606 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
12609
12610 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12613         
12614         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12615
12616         * driver.c (mono_main): Ditto.
12617
12618 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12619
12620         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12621
12622         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12623         in the vtable can't be encoded.
12624         (compile_method): Ditto.
12625
12626 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12627
12628         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12629         defined.
12630
12631         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12632         lmf->rbp.
12633
12634         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12635         the top LMF entry belongs to the current method.
12636
12637         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12638
12639 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12642         
12643         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12644
12645         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12646
12647         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12648
12649         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12650
12651         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12652         implementation.
12653
12654         * basic-float.cs: Add an ulong->double cast test.
12655
12656 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12657
12658         * mini.c (mono_method_to_ir): Fix a warning.
12659
12660 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * mini-ops.h: Add OP_SWITCH.
12663
12664         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12665         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12666
12667 2007-12-11  Geoff Norton  <gnorton@novell.com>
12668
12669         * mini-s390x.c: Minor change to the MAX() define to allow
12670         it to compile with other gcc versions.
12671
12672 2007-12-11  Geoff Norton  <gnorton@novell.com>
12673
12674         * cpu-s390x.md:
12675         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12676
12677 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12678
12679         exceptions-arm.c (mono_arch_get_restore_context): Restore
12680         the frame pointer.
12681
12682         exceptions-arm.c (throw_exception): Save the frame pointer.
12683         This is a partial fix for #323747. Only the client side is
12684         fixed.
12685
12686 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12687
12688         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12689         was using an unrelated variable to log the class which
12690         needed the cctor to be called. This was crashing on arm.
12691
12692 2007-12-09  Robert Jordan  <robertj@gmx.net>
12693
12694         * mini-x86.c (mono_arch_emit_epilog):
12695         Consider all kinds of 64-bit types. Fixes #323114.
12696
12697 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12700
12701 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12704
12705 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12706
12707         * mini.c: run type ctor before allocating an object, not only
12708         when running it's constructor method (fixes at least part of bug #342507).
12709
12710 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12711         
12712         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12713         
12714         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12715         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12716         function.
12717
12718         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12719         mono_generic_class_init_trampoline () the same as it is done with the other
12720         trampolines.
12721
12722         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12723         aot-runtime.c aot-compiler.c: Implement AOT support.    
12724
12725 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12726
12727         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12728         build for archs which don't have the vtable trampoline defined
12729         yet.
12730
12731 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12734
12735         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12736
12737         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12738
12739         * tramp-<ARCH>.c: Use the new helper function.
12740
12741 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12742
12743         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12744         trampoline call, which takes a vtable argument.
12745
12746         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12747         OP_TRAMPCALL_VTABLEs like other calls.
12748
12749         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12750         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12751         call.  Implemented a support function which fetches the vtable
12752         from a register set.
12753
12754         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12755         Implemented a generic class init trampoline, using the
12756         OP_TRAMPCALL_VTABLE opcode.
12757
12758         * mini.c: Implemented static field access when sharing generic
12759         code.  This implies initing the class using the new
12760         OP_TRAMPCALL_VTABLE call.
12761
12762 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12763
12764         * mini.c: Don't compile methods with sharing enabled if their
12765         classes are disabled for sharing.
12766
12767 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12768
12769         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12770         opcodes. Fixes #346563.
12771
12772         * objects.cs: Add a new test.
12773
12774         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12775
12776         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12777         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12778
12779 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12780
12781         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12782
12783 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12784
12785         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12786         code stream.
12787
12788 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12791
12792         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12793         optimization in the AOT case.
12794         
12795 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12798         
12799         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12800
12801         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12802
12803         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12804
12805         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12806         is created by the inlined delegate ctor.
12807
12808         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12809
12810         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12811
12812 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * cpu-x86.md: Fix the length of ckfinite.
12815
12816 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12819         
12820         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12821         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12822
12823         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12824
12825         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12826         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12827
12828 2007-11-28  Martin Baulig  <martin@ximian.com>
12829
12830         * mini-x86.c
12831         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12832         after creating the trampoline.
12833
12834 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12837
12838         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12839         the same version.
12840
12841         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12842         instead of the calling method to help AOT.
12843
12844         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12845
12846 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12849         is defined.
12850
12851 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12852
12853         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12854         
12855         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12856         (encode_method_ref): No need to handle generic method definitions specially.
12857
12858         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12859
12860         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12861         decode_klass_info.
12862
12863         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12864         encode_klass_info.
12865         (compile_method): Enable generic sharing.
12866
12867 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12870         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12871
12872         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12873         generic code.
12874
12875         * mini-trampolines.c: Fix a warning.
12876
12877         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12878         NEW_PCONST.
12879         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12880         (generic_class_is_reference_type): Remove unused function.
12881
12882         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12883         in the generic vtable trampoline case.
12884
12885         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12886         
12887         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12888         return an AOT method based on a vtable slot.
12889
12890         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12891
12892         * mini.c (mini_get_vtable_trampoline): Export this.
12893
12894 2007-11-22  Martin Baulig  <martin@ximian.com>
12895
12896         * debug-debugger.h
12897         (MonoDebuggerInfo): Move `debugger_version' up.
12898
12899 2007-11-22  Martin Baulig  <martin@ximian.com>
12900
12901         * mini-amd64.c
12902         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12903
12904         * mini-trampolines.c
12905         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12906         after compiling the method.
12907
12908 2007-11-20  Martin Baulig  <martin@ximian.com>
12909
12910         * debug-mini.c
12911         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12912         (mono_debugger_remove_breakpoint): Likewise.
12913         (mono_debugger_check_breakpoints): Likewise.
12914
12915         * debug-debugger.c: Implement the new breakpoint interface here.
12916
12917 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12920         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12921
12922         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12923
12924 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12927
12928         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12929         mini.c.
12930
12931         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12932         mini.c.
12933
12934         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12935         returning a vtype in a register.
12936
12937         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12938         here from the arch specific code.
12939
12940         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12941         mini.c.
12942
12943         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12944         (mono_arch_emit_prolog): Increment maximum prolog size.
12945
12946         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12947         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12948
12949         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12950         MonoGenericSharingContext.
12951
12952         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12953         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12954
12955 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12956
12957         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12958         which extract fields out of the runtime generic context.  Full
12959         sharing of the NEWARR opcode.
12960
12961 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12962
12963         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12964         --enable-minimal=ssa.
12965
12966 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12967
12968         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12969         mono_marshal_get_delegate_invoke () signature change.
12970
12971 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12972
12973         * mini.c: Removed the shared context in favor of the generic
12974         sharing context.  Allocate the MonoJitInfo structure with room for
12975         the generic sharing context if it's needed.
12976
12977         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12978         domain-internals.h now.
12979
12980         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12981
12982         * generic-sharing.c: Several changes for working without a shared
12983         context and instead operating on open types instead.
12984
12985 2007-11-12  David S. Miller  <davem@davemloft.net>
12986
12987        * inssel-sparc.brg: Fix double instruction emit.
12988
12989 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12990
12991         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12992         Get/Set/Address methods.
12993         
12994         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12995         mono_marshal_get_delegate_invoke signature change.
12996
12997 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12998
12999         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13000         This can happens with dynamic methods. Fixes the other bug in #322722.
13001
13002 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13003
13004         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13005         BX call sequence.
13006
13007         * mini-arm.c (arm_patch): Implement patching of BX call
13008         sequence. Fixes one of the bugs in #322722.
13009
13010 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13011
13012        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13013        under Linux.  We only need to flush every 32-byte cache line.    
13014
13015 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13016
13017         * mini.c:
13018         move_basic_block_to_end: Add branches when needed, eventually creating
13019         a new BB.
13020         optimize_branches: added a parameter that tells if it's ok to create
13021         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13022         and avoid calling move_basic_block_to_end when it's not ok.
13023         Fixes bug 318677.
13024
13025 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13026
13027         * mini.c: Abort inlining call to InitializeArray if something
13028         looks wrong.  Let the icall handle it, which now has proper safety
13029         checks.
13030
13031 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13032
13033         * mini.c (mono_spill_call): add support for soft-float.
13034
13035         * mini.c (mono_method_to_ir): add support for soft-float
13036         to inlined functions that return float.
13037
13038         * mini.c (mono_method_to_ir): add support for soft-float
13039         to cee_stsfld opcode on float fields.
13040
13041 2007-11-05  Geoff Norton  <gnorton@novell.com>
13042
13043         * mini-x86.h: Fix the structure access for X86 Leopard.
13044
13045
13046 2007-11-05  Martin Baulig  <martin@ximian.com>
13047
13048         * mini-trampolines.c
13049         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13050         after compiling the method to notify the debugger.
13051
13052 2007-11-05  Martin Baulig  <martin@ximian.com>
13053
13054         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13055
13056 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13059         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13060
13061 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13064         native-to-managed wrappers.
13065         
13066 2007-11-01  Geoff Norton  <gnorton@novell.com>
13067
13068         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13069         members.
13070
13071 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13072
13073         * mini.c, mini-x86.c: when getting back from unmanaged code
13074         to managed via a marshaled delegate we also need to set the
13075         right domain.
13076
13077 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13078
13079         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13080         for amd64.
13081
13082 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13083
13084         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13085         let the debugger or other external agents to tell the JIT when
13086         a sw breakpoint has been inserted in the code that the JIT needs
13087         to be able to inspect.
13088
13089 2007-10-31  Martin Baulig  <martin@ximian.com>
13090
13091         * debug-debugger.h
13092         (MonoDebuggerInfo): Remove `runtime_class_init'.
13093
13094 2007-10-30  Martin Baulig  <martin@ximian.com>
13095
13096         * debug-mini.h
13097         (mono_debugger_thread_created): Added `MonoThread *' argument.
13098         (mono_debugger_extended_notification): New public method.
13099         (mono_debugger_trampoline_compiled): New public method.
13100
13101         * debug-mini.c
13102         (MonoDebuggerThreadInfo): Added `thread' and
13103         `extended_notifications' fields.
13104
13105         * debug-debugger.c
13106         (debugger_executable_code_buffer): New static variable.
13107
13108         * debug-debugger.h
13109         (MonoDebuggerInfo): Added `executable_code_buffer',
13110         `executable_code_buffer_size', `breakpoint_info_area',
13111         `breakpoint_table' and `breakpoint_table_size'.
13112
13113 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13114
13115         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13116         that IP  either is an unused value or the vtable pointer. IMT 
13117         calls use vtable + offset now. Reduced by almost half the size
13118         of IMT entries.
13119
13120 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13121
13122         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13123         defines to access param registers. Replace long usage with
13124         gsize as sizeof(long) != sizeof(void*) on Win64.
13125
13126         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13127         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13128         instead of non-existant _GetAddressOfReturnAddress.
13129
13130         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13131         param registers. Save/restore %rdi and %rsi in MonoLMF.
13132
13133         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13134         param registers. Modify (throw_exception) signature to take 
13135         %rdi and %rsi on Win64. 
13136
13137         Code is contributed under MIT/X11 license.
13138
13139 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13140
13141         * helpers.c: unlink debugging output files.
13142
13143 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * mini.c: Move mono_create_ftnptr () to object.c.
13146
13147 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13148
13149         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13150         optional. This function can now be used to disassemble code generated
13151         outside the JIT such as trampolines and IMT thunks.
13152
13153         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13154
13155         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13156         vtable pointer from a ldr instruction.
13157
13158         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13159         new IMT call sequence.
13160
13161         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13162         call sequence for interface invocations.
13163
13164         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13165         for imt support. This function is empty since IMT on ARM requires no
13166         special handling on the IR side.
13167
13168         * mini-arm.c (mono_arch_find_imt_method): added, required for
13169         imt support.
13170
13171         * mini-arm.c (mono_arch_find_this_argument): added, required
13172         for imt support.
13173
13174         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13175         a ldr instruction to load a value stored in the code stream.
13176
13177         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13178         for imt support.
13179
13180
13181 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * mini.c (mini_init): Install the jump trampoline callback.
13184
13185 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13186
13187         * mini-trampolines.c: handle synchronized methods with the common
13188         vtable trampoline (bug #335601).
13189
13190 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13191
13192         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13193
13194         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13195         64 bit platforms.
13196
13197         * mini-ia64.h mini-ia64.c: Add support for IMT.
13198
13199         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13200         prolog. Fixes #331958.
13201
13202 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13203
13204         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13205
13206 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13207
13208         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13209         trampoline.
13210
13211 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13212
13213         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13214         trampoline.
13215
13216 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13217
13218         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13219         trampoline.
13220
13221 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13222
13223         * mini-trampolines.c: changed the magic rampoline to understand
13224         the common vtable trampoline method: the method to invoke is
13225         determined by the vtable displacement of the call.
13226
13227 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13228
13229         * mini.c, mini.h: register the common vtable trampoline if the
13230         architecture supports it.
13231
13232 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13233
13234         * cpu-amd64.md: use the correct max length for tls_get.
13235
13236 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13237
13238         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13239         CEE_STELEM_ANY. Fixes #333696.
13240
13241 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13242
13243         * exceptions-x86.c: provide more graceful handling of the case where
13244         we followed a bogus function pointer from managed code (bug #332866).
13245
13246 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13247
13248         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13249         replaces the generic_shared flag and will carry more information
13250         in the future.
13251
13252         * generic-sharing.c: Added mini_type_stack_size() which allows
13253         allows open types if given a generic sharing context.
13254         mini_get_basic_type_from_generic() takes a
13255         MonoGenericSharingContext* instead of a MonoCompile* now.
13256
13257         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13258         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13259         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13260         changes above.  Just passing arguments through to the right
13261         places.
13262
13263 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini-arm.c: unify the call emission to emit_code_seq().
13266
13267 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13268
13269         * tramp-arm.c: reduced the trampoline size.
13270
13271 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13272
13273         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13274         variable handling out of arch-specific code.
13275
13276 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13277
13278         * mini-arm.c: implemented fast delegate dispatch.
13279
13280 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13283         that fp elimination is turned off if the space required by locals is too
13284         big. Fixes #331958.
13285
13286 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13287
13288         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13289         ARM to the new style trampoline.
13290
13291 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13294
13295         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13296
13297 2007-10-09  Martin Baulig  <martin@ximian.com>
13298
13299         * debug-debugger.h
13300         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13301         `field_info_offset_offset'.     
13302
13303 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13304
13305         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13306         removed more internal usage of the r11 register and made it available
13307         to the register allocator.
13308
13309 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13310
13311         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13312         when sharing generics and treat type variables as references.
13313
13314 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13315
13316         * mini-ppc.c: started removing the internal uses of register r11
13317         to eventually allow the register allocator to manage it as an
13318         additional available register.
13319
13320 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13321
13322         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13323
13324 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13325
13326         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13327         specific trampolines as they are not performance critical as a jump
13328         target (maybe align as before only for AOT code?). This saves about
13329         200 KB of native code on x86 for monodevelop startup.
13330
13331 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13332
13333         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13334         monodevelop startup.
13335
13336 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13339
13340         * mini-sparc.h mini-sparc.c: Implement IMT support.
13341
13342         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13343         its smaller and doesn't clobber sparc_g1.
13344
13345         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13346
13347 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13348
13349         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13350
13351 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13352
13353         * mini-ppc.c: implemented fast delegate invocation.
13354
13355 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13356
13357         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13358
13359 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13360
13361         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13362         code to the new style trampoline in preparation for IMT support.
13363
13364 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13365
13366         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13367         systems already. This also reduces the specific trampiline sizes and
13368         prepares for the use of r12 as the IMT identifier register.
13369
13370 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13371
13372         * mini-mips.h: endianess fix (simplified from a patch by
13373         Thomas Kunze <thommy@tabao.de>, bug #323737).
13374
13375 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13376
13377         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13378         to access ucontext fields and enable netbsd support
13379         (partially from Magnus Henoch <mange@freemail.hu>).
13380
13381 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13382
13383         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13384         use the preprocessor from the CPP env var if it is set.
13385
13386 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13387
13388         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13389         code, before interface_offset gets used.
13390
13391 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13392
13393         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13394         mono_class_setup_vtable () before accessing klass->vtable.
13395
13396 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13397
13398         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13399         hackish.
13400
13401 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13402
13403         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13404         IMT slots (this saves hundreds of KB of memory in programs like
13405         IronPython and Monodevelop).
13406
13407 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13408
13409         * mini.c: print the delegate counter.
13410
13411 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13412
13413         * mini-x86.c: make it easier to enable the debugging code for IMT
13414         slots.
13415
13416 2007-09-28  Martin Baulig  <martin@ximian.com>
13417
13418         * debug-debugger.h
13419         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13420         `mono_method_klass_offset' and `mono_method_token_offset'.
13421
13422 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13423
13424         * mini.c: First generics sharing implementation.  Can only share
13425         in very simple cases.  If sharing doesn't work it falls back to
13426         dedicated compilation.
13427
13428         * mini.h: Flag in MonoCompile to specify whether generic
13429         compilation is shared.  Flags enum for marking which generic inst
13430         of a context is used.  Prototypes for helper functions.
13431
13432         * generic-sharing.c: Helper functions for generic method sharing.
13433
13434         * optflags-def.h: Optimization flag (gshared) for enabling generic
13435         method sharing added.
13436
13437         * Makefile.am: generic-sharing.c added.
13438
13439 2007-09-19 Daniel Nauck <dna@mono-project.de>
13440
13441         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13442
13443 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13444         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13445         fixes bug 325507.
13446
13447 2007-09-19  Martin Baulig  <martin@ximian.com>
13448
13449         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13450         mono_debug_cleanup() is now part of mono_cleanup().
13451
13452 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * driver.c (mono_main): Fix a warning.
13455
13456 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * aot-compiler.c: Optimize various parts when processing large assemblies.
13459         Fixes ##325568.
13460
13461         * mini.c (mono_patch_info_hash): Improve hash function.
13462
13463 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13464
13465         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13466         
13467         Code is contributed under MIT/X11 license.
13468
13469 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini.c (mini_init): Fix a leak.
13472
13473         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13474
13475 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13476
13477         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13478
13479 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13482
13483 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13486         variance tests.
13487
13488         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13489
13490         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13491
13492         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13493
13494         * aot-runtime.c (decode_patch_info): Ditto.
13495
13496 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13497
13498         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13499         static case. Cache delegates in architecture specific code, 
13500         based on number of parameters.
13501         
13502         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13503         in architecture specific code, based on number of parameters.
13504         
13505         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13506         caching happen in architecture specific code now.
13507         
13508         Code is contributed under MIT/X11 license.
13509
13510 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13511
13512         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13513         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13514         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13515
13516         Code is contributed under MIT/X11 license.
13517
13518 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13519         * mini.c: (mono_thread_abort) Fixed bug #82416.
13520
13521 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13522
13523         * mini.: hook the new managed GC allocation feature into the JIT.
13524
13525 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13526
13527         * mini.c: implementation for the new runtime tls opcode.
13528
13529 2007-09-11  Martin Baulig  <martin@ximian.com>
13530
13531         * debug-debugger.h
13532         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13533         `mono_method_inflated_offset'.
13534
13535 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13538         async exceptions into a method.
13539
13540         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13541         purpose of testing whenever the unwinder works at every instruction.
13542
13543 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13544
13545         * mini.c: check accessibility of method used in ldftn (fixes
13546         bug #82635).
13547
13548 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13549
13550         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13551
13552         * inssel.brg: Fix a warning.
13553
13554 2007-09-03  Martin Baulig  <martin@ximian.com>
13555
13556         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13557         now takes the `main_method' as argument.
13558
13559 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13562
13563 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13564
13565         * driver.c: include the cil-coff.h header on Windows.
13566         
13567         Code is contributed under MIT/X11 license.
13568
13569 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13570
13571         * mini.c, driver.c: don't include the cil-coff.h header.
13572
13573 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13574
13575         * mini.c: flag places that needs fixes fo soft-float support.
13576
13577 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
13578
13579         * mini.h, inssel-float.brg: fix soft-float constant loads on big
13580         endian systems (partially from Dean Jenkins, bug #81924).
13581
13582 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13583
13584         * mini.c (check_linkdemand): Remove embedded reference object in
13585         call to LinkDemandSecurityException.
13586         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
13587         with an IntPtr instead of a reference object.
13588
13589 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * mini.c (handle_initobj): Handle alignment properly.
13592
13593         * inssel.brg (mini_emit_memset): Ditto. 
13594
13595         * inssel.brg (mini_emit_memcpy): Ditto. 
13596
13597         * inssel-sparc.brg: Ditto.              
13598
13599         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
13600
13601 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
13602
13603         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
13604         exceptions raised in unmanaged code. Fixes part of #82594.
13605
13606 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13607
13608         * mini.c (mono_method_to_ir), declsec.c
13609         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
13610
13611 2007-08-22  Martin Baulig  <martin@ximian.com>
13612
13613         * debug-mini.h
13614         (MonoDebuggerThreadInfo): New typedef.
13615         (mono_debugger_thread_table): New global variable.
13616         (mono_debugger_thread_created): New public function.
13617         (mono_debugger_thread_cleanup): New public function.
13618
13619         * debug-debugger.h
13620         (MonoDebuggerInfo):
13621         - removed `get_current_thread' and `lookup_assembly'.
13622         - removed `data_table'.
13623         - added `thread_table'.
13624
13625         * mini.c
13626         (mono_thread_start_cb): Call mono_debugger_thread_created().
13627         (mono_thread_attach_cb): Likewise.
13628         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13629         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13630         initial domain.
13631
13632         * driver.c (mono_main): Move mono_debug_init() up, before calling
13633         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13634
13635 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13636
13637         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13638         together when passing several arguments of type double (gives a small
13639         speedup and saves a few bytes of generated code).
13640
13641 2007-08-20  Jb Evain  <jbevain@novell.com>
13642
13643         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13644
13645 2007-08-20  Jb Evain  <jbevain@novell.com>
13646
13647         * mini.c (mono_method_to_ir): throw MethodAccessException
13648         and FieldAccessException instead of InvalidProgramException.
13649
13650 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13651
13652         * mini.c: CoreCLR security checks.
13653
13654         * mini.h: Removed MonoSecurityMode (moved to
13655         metadata/security-manager.h) and mono_security_mode global var
13656         (replaced by set/get functions in security-manager.h).
13657
13658         * driver.c: Added "core-clr-test" security mode for testing.  Used
13659         set-function for setting security mode.
13660
13661 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13662
13663         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13664         the new jit_info_table.
13665
13666         * driver.c: Test code for the new jit_info_table (enabled by the
13667         define MONO_JIT_INFO_TABLE_TEST).
13668
13669 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13672         detection of call <REG> instruction sequence. Fixes build on freebsd.
13673
13674 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * mini-exceptions.c: Fix a warning.
13677
13678 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13679
13680         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13681         stack overflow handling code on amd64 too.
13682
13683         * mini-exceptions.c (mono_setup_altstack): Make this use 
13684         mono_thread_get_stack_bounds ().
13685
13686         * mini-x86.h: Disable sigaltstack on solaris x86.
13687
13688 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13691
13692 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13693
13694         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13695
13696 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13699
13700         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13701
13702 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13703
13704         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13705         due to alignment.
13706
13707 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13708
13709         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13710         to be emitted (bug #82281).
13711
13712 2007-08-01  Martin Baulig  <martin@ximian.com>
13713
13714         Merged the `debugger-dublin' branch.
13715
13716         * debug-debugger.h (MonoDebuggerInfo):
13717         Removed the `old_*' compatibility entries.
13718         Added `debugger_version' and `data_table'.
13719         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13720         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13721
13722         * debug-mini.c
13723         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13724         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13725         instead of a `gconstpointer'.
13726         (mono_debugger_insert_method_breakpoint): Return a
13727         `MonoDebugMethodAddressList *'.
13728
13729 2007-06-28  Martin Baulig  <martin@ximian.com>
13730
13731         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13732
13733 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13736         __builtin_frame_address () since it is broken on older gcc versions.
13737
13738 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13739
13740         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13741         on the stack overflow handling and made the managed stack overflows
13742         catchable in most cases using soft guard pages.
13743         * exceptions-x86.c: added code to restore the protection in the soft
13744         guard pages at the end of exception handling.
13745
13746 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13747
13748         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13749
13750 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13751
13752         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13753         exception handling.
13754
13755 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13756
13757         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13758         signal handling support until it has been ported to the new mechanism.
13759         * mini.c: fixed stack overflow detection and use the new
13760         architecture code  to handle signals on the altstack.
13761
13762 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13763
13764         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13765         stack overflows on the alt stack.
13766
13767 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13768
13769         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13770         stack overflows on the alt stack.
13771
13772 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13773
13774         * exceptions-ppc.c: cleanup preparing for altstack support.
13775
13776 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13777
13778         * exceptions-arm.c: cleanup preparing for altstack support.
13779
13780 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13781
13782         * mini.c (print_jit_stats): Output hazard pointer stats.
13783
13784 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13785
13786         * driver.c, mini.c: Replaced security mode flags with a single
13787         enum variable.
13788
13789 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13790
13791         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13792
13793 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13794
13795         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13796         (which doesn't do anything yet) for activating Core CLR
13797         (Silverlight) security.
13798
13799 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13800
13801         * mini-codegen.c: work around a possible gcc bug on arm.
13802
13803 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13804
13805         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13806         message for platforms that don't support AOT compilation.
13807
13808 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13809
13810         * mini.h, mini.c, driver.c: temporary smcs hack.
13811
13812 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13813
13814         * mini-arm.h, mini-arm.c: arm EABI fixes.
13815
13816 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13817
13818         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13819         case.
13820
13821         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13822         trampolines taking a method argument.
13823
13824         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13825
13826         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13827         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13828
13829         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13830         JIT compilation throws an exception. Fixes #82050.
13831
13832 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13833
13834         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13835         with the MONO_EXCEPTION_ defines.
13836
13837 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13840         #82117.
13841         
13842         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13843         the cause of an assertion.
13844
13845 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13846
13847         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13848         removed.
13849
13850 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13851
13852         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13853         assert. Should fix #82103.
13854
13855 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13856
13857         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13858         here too. Fixes #82095.
13859
13860         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13861         addresses.
13862
13863         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13864
13865         * mini-amd64.h: Enable IMT for amd64.
13866         
13867         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13868
13869 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13872
13873 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13874
13875         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13876         as soon as check_linkdemand sets an exception_type.
13877
13878 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13879
13880         * mini-x86.c: fixed offsets for IMT call sequence.
13881         * mini-x86.h: enable IMT again.
13882
13883 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13884
13885         * trace.c (mono_trace_enter_method): Decode MonoType too.
13886
13887         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13888
13889         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13890
13891         * mini-amd64.c: Add preliminary IMT implementation.
13892         
13893 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13894
13895         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13896         understand the new IMT-base interface invocation (thanks to
13897         Daniel Nauck for the report and the remote debugging session).
13898
13899 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13900
13901         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13902
13903 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13906
13907 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13908
13909         * mini-trampolines.c: implement AOT IMT support.
13910         * mini-x86.h: enable IMT support for wider testing.
13911
13912 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * inssel.brg (emit_imt_argument): Add aot support here.
13915
13916         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13917
13918 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13919
13920         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13921         of the IMT implementation, partially from massi, with my
13922         implementation of the bsearch sequence. Disabled by default until
13923         the AOT code is implemented.
13924
13925 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13926
13927         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13928
13929         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13930
13931 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13932
13933         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13934         arch-independent IMT JIT code from Massimiliano
13935         Mantione (massi@ximian.com) with small cleanups from me.
13936
13937 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13938
13939         * Makefile.am: fix svn invocation to get the svn revision to be
13940         independent of the local language (build fix).
13941
13942 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13943
13944         * mini.c (inline_method): Reset cfg->exception_type if the
13945         inlining is aborted.  Fixes: 82049.
13946
13947 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13948
13949         * mini.c: remove assert from exception handling code when exception_ptr
13950         is not set.
13951
13952 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13953
13954         * mini.c (mono_codegen): Add an assert.
13955
13956         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13957         enter and leave code.
13958         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13959
13960 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13961
13962         * mini-ppc.c: fixed memory corruption for localloc(0)
13963         (bug #81852).
13964
13965 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13966         
13967         * mini.c: Fix warnings.
13968
13969 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13970
13971         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13972         to emit better double->int conversions.
13973
13974 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13975
13976         * mini.c: the provided Min/Max optimizations are valid for unisgned
13977         ints.
13978
13979 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13980
13981         * 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
13982
13983 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13984
13985         * mini.c (mono_running_on_valgrind): Add support for reporting the
13986         method and  its boundaries to valgrind.
13987
13988 2007-06-28  Martin Baulig  <martin@ximian.com>
13989
13990         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13991
13992 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13993
13994         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13995
13996         * generic.2.cs: Add new test case.
13997
13998 2007-06-25  Martin Baulig  <martin@ximian.com>
13999
14000         Merged the `debugger-dublin' branch.
14001
14002         * debug-mini.c
14003         (mono_debugger_insert_method_breakpoint): New public method.
14004         (mono_debugger_remove_method_breakpoint): Likewise.
14005         (mono_debugger_check_breakpoints): New static method.
14006         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14007
14008         * debug-debugger.h (MonoDebuggerInfo):
14009         Renamed (to keep backward compatibility in the vtable):
14010         `insert_breakpoint' -> `old_insert_breakpoint'.
14011         `remove_breakpoint' -> `old_remove_breakpoint'.
14012         `create_string' -> `old_create_string'.
14013         `lookup_class' -> `old_lookup_class'.
14014         `lookup_type' -> removed; changed into a dummy field.
14015         `lookup_assembly' -> `old_lookup_assembly'.
14016         Added (same functionality, but different signature):
14017         `create_string', `lookup_class', `lookup_assembly'
14018         Added new:
14019         `get_method_addr_or_bpt', `remove_method_breakpoint',
14020         `runtime_class_init'.
14021
14022         * debug-debugger.c: Merged the `debugger-dublin' branch.
14023
14024 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14025
14026         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14027         well.
14028         (peephole_pass): Likewise.
14029
14030 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14031
14032         * driver.c: hopefully make setaffinity work also for ancient
14033         versions of linux.
14034
14035 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14036
14037         * driver.c : win32 build fix.
14038
14039 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14040
14041         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14042         processor if it is set.
14043
14044 2007-06-21  Martin Baulig  <martin@ximian.com>
14045
14046         * debug-mini.h: New file.
14047
14048         * debug-mini.c
14049         (mono_debugger_insert_breakpoint_full): Moved here from
14050         ../metadata/mono-debug-debugger.c.
14051         (mono_debugger_remove_breakpoint): Likewise.
14052         (mono_debugger_breakpoint_callback): Likewise.
14053
14054 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14055
14056         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14057         changes in MonoGenericClass.
14058
14059 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14062
14063 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14064
14065         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14066         removal of MonoGenericMethod.
14067
14068 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14069
14070         * mini-exceptions.c: hooks for the exception events profiling API.
14071
14072 2007-06-14  Randolph Chung  <tausq@debian.org>
14073
14074         * Makefile.ma: Add hppa target.
14075         * mini-arch.h: Include mini-hppa.h
14076         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14077         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14078         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14079
14080 2007-06-14  Randolph Chung  <tausq@debian.org>
14081
14082         * inssel.brg: Add rules for "chained" compare-branch operations so that
14083         a single compare op can affect multiple branches.  Adjust cost for
14084         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14085         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14086         cost for some rules so that they can more easily be overridden by
14087         per-arch rules (with fixes from lupus).
14088         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14089
14090 2007-06-13  Randolph Chung  <tausq@debian.org>
14091
14092         * mini-ops.h: Reorder branch ops so that they match the order of the
14093         corresponding CEE_* ops.  The code expects them this way.
14094         Add new ops for HPPA target.
14095         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14096
14097 2007-06-13  Randolph Chung  <tausq@debian.org>
14098
14099         * mini-exceptions.c: Handle cases where the stack grows towards
14100         larger addresses.
14101         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14102
14103 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14104
14105         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14106         counter.
14107         * driver.c: explain where a non-matching corlib is found.
14108
14109 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14110
14111         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14112
14113 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14114
14115         * mini-exceptions.c: Generate a method profile leave event during
14116         an exception to ensure that the profiler gets notified.
14117
14118 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14119
14120         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14121         branch.
14122
14123         * cpu-amd64.md: Add long_and/or/xor opcodes.
14124
14125 2007-06-06  Wade Berrier  <wberrier@novell.com>
14126
14127         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14128         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14129         length of instruction shr_imm (expected 8, got 10)
14130
14131 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14132
14133         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14134
14135 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14136
14137         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14138         MonoInternalHashTable again (fixed bug in the internal hash table
14139         code).
14140
14141 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14142
14143         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14144         Have to figure out what makes it crash the SWF regression.
14145
14146 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14147
14148         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14149
14150 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14151
14152         * mini.c: optimize out the type check when storing null in a
14153         reference array.
14154
14155 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14156
14157         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14158         MonoInternalHashTable.
14159
14160 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14161
14162         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14163         signed integer methods.
14164
14165 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14166
14167         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14168         permanently since the current approach doesn't work.
14169
14170 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14171
14172         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14173         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14174
14175 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14176
14177         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14178         the sreg2==rdx case.
14179         
14180         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14181         account if it contains a rex prefix.
14182         (peephole_pass): Handle OP_FMOVE as well.
14183
14184 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14185
14186         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14187         as it causes regressions.
14188
14189 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14192         static case as well.
14193
14194         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14195
14196         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14197         (mono_arch_get_this_arg_from_call): Ditto.
14198
14199         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14200
14201         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14202         invoke_impl field.
14203
14204         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14205         (mono_arch_get_this_arg_from_call): Ditto.
14206
14207         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14208         
14209         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14210         try to create optimized invoke code and use that for further invocations. 
14211         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14212
14213         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14214
14215 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14216
14217         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14218         sealed classes or methods.
14219         *devirtualization.cs: tests for the new optimization
14220
14221 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14222
14223         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14224         by the update_volatile () function.
14225
14226 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14227
14228         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14229         require it.
14230
14231         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14232
14233 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14234
14235         * mini.c: Add configure checks for header files.
14236         * mini-x86.c: Add configure checks for header files.
14237         * trace.c: Add configure checks for header files.
14238         * aot-runtime.c: Add configure checks for header files.
14239         * aot-compiler.c: Add configure checks for header files.
14240         * driver.c: Add configure checks for header files.
14241         * mini-codegen.c: Add configure checks for header files.
14242         
14243         Code is contributed under MIT/X11 license.
14244
14245 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14248         icompare_imm -128 + op_iclt. Fixes #81703.
14249
14250 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14251
14252         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14253
14254 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14255
14256         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14257         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14258         so that all isinst checks now use "interface_bitmap".
14259
14260 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14261
14262         * cpu-amd64.md (jmp): Fix a warning.
14263
14264         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14265
14266         * basic.cs: Add new regression test.
14267
14268         * basic.cs: Remove test which is now in basic-long.cs.
14269
14270         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14271
14272         * basic-long.cs: Add new test.
14273         
14274 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14275
14276         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14277
14278 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14279
14280         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14281
14282         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14283         places.
14284         
14285         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14286         throwing code a bit.
14287
14288         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14289         the exception throwing code a bit.
14290
14291         * mini-x86.c (get_call_info): Allocate result from a mempool.
14292
14293 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14296
14297         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14298
14299         * mini.h (MonoCompile): Add 'token_info_hash' field.
14300
14301         * mini.c: Save token->method associations during compilation so the AOT 
14302         compiler can use it.
14303         
14304         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14305         which reference generic classes and methods.
14306
14307 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14310
14311         * aot-compiler.c (compile_method): Fix a typo in a comment.
14312
14313         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14314
14315         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14316         everything generic.
14317
14318         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14319
14320 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * mini.h (MonoCompile): Add 'args' field.
14323
14324         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14325         into cfg->args.
14326
14327         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14328
14329 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14330
14331         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14332
14333         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14334
14335         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14336         opcodes for some opcodes.
14337
14338         * mini.h *.brg *.c: Use the new opcodes.
14339
14340 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14341
14342         * mini.h: Bumped aot revision.
14343
14344         * inssel.brg: modified code generation of type checks for interfaces
14345         to use the new "MonoClass.interface_bitmap" instead of the old
14346         "MonoClass.interface_offsets".
14347
14348 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14349
14350         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14351
14352 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14353
14354         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14355         64 bit platforms.
14356
14357 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14358
14359         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14360
14361 2007-04-27  Wade Berrier  <wberrier@novell.com>
14362
14363         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14364         mini.h) to fix build.
14365
14366 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14367
14368         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14369         
14370         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14371         causes the corlib unit tests to fail.
14372
14373 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14374
14375         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14376
14377         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14378
14379         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14380         opcodes to the comparison relations.
14381
14382         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14383         opcodes to their types.
14384         
14385         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14386
14387         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14388         it in cfg->arch.cinfo.
14389
14390         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14391
14392         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14393         cfg->cil_offset_to_bb.
14394
14395 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14396
14397         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14398         created becase of initlocals.
14399
14400 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14403         Sergey Tikhonov <tsv@solvo.ru>.
14404
14405 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14406
14407         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14408
14409 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14410
14411         * cpu-s390.md (break): Correct the length of break instruction.
14412
14413 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14414
14415         * mini.c: fix a couple of soft-float issues and comments.
14416
14417 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14418
14419         * trace.c (is_filenamechar): - is also a filename char.
14420
14421 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14422
14423         * mini-s390.c: Correct checking for enum type in return value processing.
14424
14425 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14426
14427         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14428         (version.h): Makefile is in the build directory.
14429
14430 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14431
14432         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14433
14434 2007-04-11  Martin Baulig  <martin@ximian.com>
14435
14436         * mini.c (can_access_member): Fix handling of generic classes;
14437         fixes #81259.
14438
14439 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14440
14441         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14442
14443 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14444
14445         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14446
14447 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14448
14449         * mini-codegen.c: make sure the right spill amount is
14450         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14451
14452 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14453
14454         * mini-ppc.c: fixes for the fp_branch_nan test.
14455
14456 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14457
14458         * basic.cs: Comment out new test which still fails on ia64.
14459
14460 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14461
14462         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14463
14464 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14467
14468 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14469
14470         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14471         on 64 bit machines. Fixes part of #80738.
14472
14473         * basic.cs: Add regression test.
14474
14475 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14476
14477         * inssel.brg basic.cs: Revert previous change to fix build.
14478
14479         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14480         platforms.
14481         
14482         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14483
14484         * basic.cs: Add new regression test.
14485
14486 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14487
14488         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14489         many arguments.
14490
14491 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14492
14493         * cpu-s390x.md: Correct length of break instruction.
14494
14495 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14496
14497         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14498         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14499
14500 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14501
14502         * *.c: Begin WIN64 port.
14503         * mini.c:  Use correct register in profiler.
14504         * mini-amd64.c: No inline assembly on Win64.
14505         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14506         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14507         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14508         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14509         mono_arch_ip_from_context for Win64.
14510         
14511         Contributed under MIT/X11 license.
14512
14513 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14514
14515         * exceptions-amd64.c (seh_handler): Ditto.
14516
14517         * exceptions-x86.c (seh_handler): Fix a memory leak.
14518
14519 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14522         mini-s390x.c: fixed peephole optimizations to deal
14523         correctly with 1 and 2 byte reload avoidance.
14524
14525 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14526
14527         * cpu-s390.md, cpu-s390x.md: update localloc length.
14528
14529 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14530
14531         * cpu-g4.md: added missing descriptions.
14532
14533 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14534
14535         *  Makefile.am: Add support so the tail tests are not executed on
14536         PowerPC as that is a known limitation of the PowerPC port.
14537
14538 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14539
14540         * runmdesc.bat:  Move to msvc directory.
14541         
14542 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14543
14544         * runmdesc.bat:  Run executable that was produced by the current
14545         target and sent via an argument.
14546         
14547 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14550         #81102.
14551
14552         * generics.2.cs: Add regression test.
14553
14554 2007-03-09  Wade berrier  <wberrier@novell.com>
14555
14556         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14557
14558 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14559
14560         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14561         AOT code depends on this.
14562
14563 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * mini.c: more precise tracking of types in the eval stack
14566         (part of fix for bug #81044).
14567
14568 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14569
14570         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14571
14572         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14573
14574 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14577
14578         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
14579
14580 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
14581
14582         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
14583         a pointer on 64 bit systems. Fixes #80190.
14584
14585         * iltests.il: Add new regression test.
14586
14587 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14588
14589         * mini.c: inline a constant for Environment.IsRunningOnWindows.
14590
14591 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
14592
14593         * trace.c: Remove an erroneous alignemnt check when tracing.
14594           Fixes --trace on OSX86.
14595
14596 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini-$(arch).h: initialize SP in context for all the archs.
14599
14600 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
14601
14602         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
14603         regressions in the thread tests.
14604
14605 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
14606
14607         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
14608         - fixed implementation of LOCALLOC opcode
14609         - implemented non-un compare for floats
14610         - code cleanup
14611         - implementation of FDIV and CKFINITE opcodes
14612         - fixes for latest mono updates
14613         - additional arch opcodes
14614
14615 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * Makefile.am: simplify and merge rules for cross-compilation.
14618
14619 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14620
14621         * local-propagation.c: Actually *apply* the fix for bug 80591...
14622
14623 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14624
14625         * mini-exceptions.c: backuot part of the last change
14626         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14627
14628 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14629         * inssel.brg: Fix bug 59286.
14630
14631
14632 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14633
14634         * mini-exceptions.c: patch from Zoltan to correctly check for
14635         stack boundaries (using the stack register, not the frame register),
14636         fixes bugs #80724, #79717.
14637
14638 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14639
14640         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14641         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14642
14643         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14644         presence of frame pointer elimination.
14645
14646 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14647         
14648         * mini-x86.h: NetBSD UCONTEX_REG defines.
14649
14650 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14651
14652         * inssel-amd64.brg: Fix amd64 build.
14653
14654 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14657         on amd64.
14658
14659 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14660
14661         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14662         ends.
14663
14664         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14665
14666 2007-01-30 Mark Mason <mason@broadcom.com>
14667
14668            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14669            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14670            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14671            beginning support for CEE_JMP [not quite working yet]
14672            * tramp-mips.c: LMF handling now works
14673         
14674 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14677
14678         * mini.h (NULLIFY_INS): New macro.
14679
14680 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14681
14682         * mini.c: statistical profiler fix for windows, patch
14683         from Tor Lillqvist (tml@novell.com).
14684
14685 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14686         * local-propagation.c: Fix bug 80591.
14687
14688 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14689
14690         * Makefile.am: put back the --export-dynamic option as with
14691         the previous gmodule flags (thanks to Robert Jordan).
14692
14693 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14696
14697         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14698         simplify and speed up the local register allocator. Also rename some fields
14699         like iassign->vassign.
14700         
14701         * regalloc.c: Remove some functions which are no longer used since their
14702         inlined version is in mini-codegen.c.
14703         
14704         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14705
14706         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14707
14708 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14709
14710         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14711         narrowing. Fixes #80622.
14712
14713         * iltests.il: Add new regresssion test. 
14714
14715 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14716
14717         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14718         debug-debugger.c, debug-debugger.h: warning fixes.
14719         * driver.c: updated copyright year and made it fit in one line.
14720
14721 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14722
14723         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14724
14725 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14726
14727         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14728
14729         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14730
14731         * iltests.il: Add new test for bug #80507.
14732
14733 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14734
14735         * mini-arm.h: use soft-float also on vfp for now.
14736
14737 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14738
14739         * mini.c: fix some more soft-float issues.
14740
14741 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14742
14743         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14744
14745 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14746         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14747         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14748         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14749
14750 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14751
14752         * mini-arm.c: typo fix.
14753
14754 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14755
14756         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14757
14758 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14759
14760         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14761         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14762
14763         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14764
14765         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14766
14767         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14768         
14769         * inssel.brg: Fix a warning.
14770
14771         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14772
14773         * abcremoval.c ssa.c ssapre.c: Update after this change.
14774         
14775         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14776
14777         * dominators.c (df_set): Use mono_bitset_union_fast.    
14778
14779 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14780
14781         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14782         mini-codegen.c: reduce relocations and memory usage for the cpu
14783         description.
14784
14785 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14788
14789         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14790         to reduce their size.
14791
14792 2007-01-19 Mark Mason <mason@broadcom.com>
14793
14794         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14795         * mini-mips.c: more configuration macros, support long conditional branches, additional
14796         asserts, fix epilog instrumentation.
14797         * mini-mips.h: use standard stack walk
14798         * cpu-mips.md: increase size of div, rem and conditional branches
14799         
14800 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14801
14802         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14803         to cpu spec data.
14804
14805 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14806
14807         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14808         (compile_method): Ditto.
14809
14810         * aot-runtime.c (decode_klass_info): Ditto.
14811
14812         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14813         needed by the code generated by inssel.brg. Also fix a warning.
14814
14815 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini.c: deal with enums that become genericinsts by
14818         being nested in a generic class (bug #79956).
14819
14820 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14821
14822         * mini.c: match the generic definition to check for
14823         private access with generic types (bug #78431).
14824
14825 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14826
14827         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14828         to make life easier for people cross-compiling that insist on not
14829         using scratchbox.
14830
14831 2007-01-17 Mark Mason <mason@broadcom.com>
14832
14833         * inssel-long.brg: patch to deal with mips missing flags
14834         * inssel-long32-mips.brg: implement overflow checks
14835         * insset-mips.brg: implement overflow checks
14836         * mini-mips.h: implement conditional exception handling
14837         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14838           Remove unused code, minor cleanups.
14839         * exceptions-mips.c: minor cleanups
14840         * mini-ops.h: add mips conditional exception ops
14841         * cpu-mips.md: add mips conditional exception ops
14842
14843         
14844 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14845
14846         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14847         to deal with mips missing of flags.
14848
14849 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14850
14851         * exceptions-ppc.c: execute fault handlers.
14852
14853 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14854
14855         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14856
14857 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.c: handle also floating point values in initialize_array.
14860
14861 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14864         array initialization and make it conditional on the intrins option.
14865
14866 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14867
14868         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14869         relocations and put the patch info names close to the enum definition.
14870
14871 2007-01-15 Mark Mason <mason@broadcom.com>
14872
14873         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14874
14875 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14876
14877         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14878
14879 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14880
14881         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14882
14883 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14884
14885         * Makefile.am: distribute the mips sources.
14886
14887 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14888
14889         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14890         directly.
14891
14892 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14893
14894         * cpu-x86.md: back out for now as this triggers other regressions.
14895
14896 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14897
14898         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14899         to eax:edx, so ecx can't get allocated to them (bug #80489).
14900
14901 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14902
14903         * mini.c, mini-exceptions.c: enabled running fault handlers
14904         (bug #80469).
14905
14906 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14907
14908         * driver.c: If nothing fail, do not use the string "failed",
14909         because it makes it very annoying to view test result logs on the
14910         web. 
14911
14912 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14913
14914         * debug-debugger.c (mono_debugger_main): Rename "main" to
14915         "main_method" to prevent a warning.
14916
14917         Remove a warning for unused field.
14918
14919 2006-12-28  Martin Baulig  <martin@ximian.com>
14920
14921         * debug-debugger.c
14922         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14923
14924 2006-12-22  Martin Baulig  <martin@ximian.com>
14925
14926         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14927         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14928         seperate `.mdb_debug_info' section, so we can access it from the
14929         debugger even if the binary is stripped.
14930
14931         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14932         from the `.mdb_debug_info' here to prevent the linker from
14933         removing that section.
14934
14935         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14936         mdb-debug-info64.s.
14937
14938 2006-12-19  Robert Jordan  <robertj@gmx.net>
14939
14940         * mini-x86: enable the code to return small structures in
14941         registers for FreeBSD as well. Fixes bug #80278.
14942         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14943
14944 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14945
14946         * mini-x86.c: align the stack when calling the profiler
14947         function instrumenting the prolog (on OSX).
14948
14949 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14950
14951         * mini.c: emit a break opcode where Debugger.Break () is called.
14952
14953 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14954
14955         * mini.c (mono_method_to_ir): Provide useful information on this
14956         assert, to prevent others from debugging like I did.
14957
14958 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini.c: enable code which was incorrectly commented
14961         (bug #80235).
14962
14963 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14964
14965         * mini-x86.c: enable on OSX, too, the code to return small
14966         structures in registers.
14967
14968 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14969
14970         * mini-x86.c: remove the use of the dynamic code manager here, too.
14971
14972 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14973
14974         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14975         mono_debugger_create_notification_function() to use
14976         mono_global_codeman_reserve () instead of a dynamic code manager.
14977
14978 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14979
14980         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14981         ves_array_element_address() jit icall and use a generated
14982         managed method instead (which is about 4 times faster for a rank 3
14983         array access).
14984
14985 2006-11-29  Mark Mason  <mason@broadcom.com>
14986
14987         * basic-calls.cs: additional tests for passing
14988         structures as function arguments.
14989
14990 2006-11-29  Mark Mason  <mason@broadcom.com>
14991
14992         * mini-mips.h: disable custom exception handling
14993         * mini-mips.c: throw/rethrow should use jalr to call
14994         exception stubs.  Fixed bug with passing structures
14995         by value. More support for tracing floating point
14996         functions.
14997
14998 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini.c: fixed typo in the soft-float ldind.r4 handling
15001         (bug #80086).
15002
15003 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15004
15005         * mini.c, mini.h, driver.c: added --runtime command line
15006         option to select a different runtime than the autodetected one.
15007         * jit.h: added API for embedders to initialize with a specific
15008         runtime version.
15009
15010 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15011
15012         * mini.c: handle also boxing of r4 values (bug #80024).
15013
15014 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15015
15016         * mini-ppc.c: force indirect calls until we reserve
15017         enough address space for all the generated code.
15018
15019 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15020
15021         * exceptions-arm.c: workaround bugs in the libc definition
15022         of struct ucontext.
15023
15024 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15025
15026         * inssel.brg: fixes from me and Mark Mason.
15027
15028 2006-11-23  Dick Porter  <dick@ximian.com>
15029
15030         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15031         semaphore display now we've fixed the initial value
15032
15033 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15034
15035         * inssel.brg: partially revert the last change to fix the build.
15036
15037 2006-11-21  Mark Mason  <mason@broadcom.com>
15038
15039         * inssel.brg: Add and use compare-and-branch macros to support
15040         architectures that do not have condition code registers (ie. MIPS).
15041         * *-mips.{c,brg,md}: Fix copyright statements
15042
15043 2006-11-20  Mark Mason  <mason@broadcom.com>
15044
15045         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15046         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15047         * mini.h: Added declaration for mono_print_ins()
15048         * mini-codegen.c: added ins_spec initializer for MIPS
15049         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15050         vreg to be virtual and hreg to be non-virtual.
15051         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15052         is not yet working/implemented correctly.
15053         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15054         non-static, fixup calls to print_ins() from other parts in the file.
15055
15056 2006-11-20  Mark Mason  <mason@broadcom.com>
15057
15058         * basic-calls.cs: added tests for passing structures as arguments
15059         to calls.
15060
15061 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15062
15063         * inssel-long32.brg: optimize signed division by power of two.
15064
15065 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15066
15067         * mini-arm.c: added support for interworking with thumb code
15068         (mono must be still be built using the ARM instruction encoding).
15069
15070 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15071
15072         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15073         verifier has different rules for it.   Fixes a few verifier issues
15074         in the test suite.
15075
15076         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15077         at the end, so people know what happened.
15078
15079 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15080
15081         * brach-opts.c: in optimize_exception_target() make sure we
15082         are in a catch clause (fixes bug #79871).
15083
15084 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15085
15086         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15087         more soft-float support fixes.
15088
15089 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15090
15091         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15092         that are passed half on the stack and half in registers.
15093
15094 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15095
15096         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15097         more mips integration work from Mark E Mason 
15098         <mark.e.mason@broadcom.com>.
15099
15100 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15101
15102         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15103         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15104         tramp-mips.c: added sources for the mips port, not
15105         integrated in the build yet. Contributed by
15106         Mark E Mason <mark.e.mason@broadcom.com>.
15107
15108 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15109
15110         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15111
15112 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15113
15114         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15115         put the soft-float rules in its own file since it seems to
15116         break s390 compilation.
15117
15118 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15119
15120         * mini-arm.c: fixed wrnings.
15121
15122 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15123
15124         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15125         inssel-arm.brg: ARM support for soft-float.
15126
15127 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15128
15129         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15130         loads and stores of 32 bit fp values.
15131
15132 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15133
15134         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15135
15136         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15137         works. Fixes #79852 and #79463.
15138
15139 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15140
15141         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15142         more soft-float support WIP and fixes.
15143
15144 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15145
15146         * mini-arm.c: some VFP updates.
15147
15148 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15149
15150         * mini-exceptions.c: 0 is a valid local var offset in some
15151         architectures, don't assert (bug #78508).
15152
15153 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15154
15155         * exceptions-arm.c: fixed off by one error in stack walk code.
15156
15157 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15158
15159         * mini.h, mini.c: more precise tracking of type load exceptions.
15160
15161 2006-11-03  Robert Jordan  <robertj@gmx.net>
15162
15163         * Makefile.am: [WIN32] Add monow.exe target.
15164         * driver.c: [WIN32] Don't detach the console when debugging.
15165         Fixes bug #79797.
15166         
15167 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15168
15169         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15170
15171 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15172
15173         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15174
15175         * driver.c (mini_regression): Fix --regression with AOT.
15176
15177         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15178
15179 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15182
15183         * mini-sparc.h: Don't use sigaction on sparc/linux.
15184
15185         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15186
15187         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15188
15189         * mini-exceptions.c: Add proper include files for getpid ().
15190
15191 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15192
15193         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15194         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15195         method.
15196
15197         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15198         name cache to reduce its size.
15199
15200         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15201
15202 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15203
15204         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15205         the mono_lmf TLS variable.
15206
15207         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15208         trampoline lmf frames.  
15209
15210         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15211
15212 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15213
15214         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15215         the mono_lmf TLS variable.
15216
15217         * mini-exceptions.c: Access the LMF structure through accessors.
15218
15219         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15220         variable instead of in jit_tls->lmf.
15221
15222         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15223         
15224         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15225         trampoline lmf frames.
15226
15227         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15228
15229 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15230
15231        * mini.c trace.c mini-x86.c: Revert these too.
15232         
15233        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15234        signature change.
15235
15236 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15237
15238         * genmdesc.c: removed now dead code.
15239
15240 2006-10-09  Robert Jordan <robertj@gmx.net>
15241
15242         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15243
15244 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15245
15246         * mini.h: do not leave gaps in the opcode values.
15247
15248 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15249
15250         * jit-icalls.h: flag functions as internal here, too.
15251
15252 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15253
15254         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15255         functions with the internal attribute.
15256
15257 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15258
15259         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15260
15261 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15262
15263         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15264         for soft-float.
15265
15266 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15267
15268         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15269         tail calls as on other platforms.
15270
15271         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15272
15273         * iltests.il: Add a few tailcall tests.
15274
15275 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15276
15277         * driver.c: fix loop for old compilers (bug #79521).
15278
15279 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15280
15281         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15282
15283         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15284
15285         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15286         metadata without any code.
15287
15288         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15289         more precise debugging information using gdb.
15290
15291 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * inssel-ia64.brg: Make the helper methods static.
15294
15295 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15296
15297         * inssel-x86.brg: make the helper methods static.
15298
15299 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15300
15301         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15302
15303 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15304
15305         * mini.c: updates for monoburg changes.
15306         * inssel.brg: make a few helper functions static as they should.
15307
15308 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15309
15310         * Makefile.am: Move mini-codegen.c to common_sources.
15311
15312 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15313
15314         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15315         instructions.
15316         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15317         mini-ppc.h: port to use the common local register allocator.
15318
15319 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * mini.h: Remove the comment too then.
15322
15323 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15324
15325         * mini.h: put back backend.data which is to be used shortly and
15326         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15327         pointers on 4 byte boundaries it'd have much bigger issues running
15328         and you can ifdef it out anyway.
15329
15330 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15331
15332         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15333         MonoInst size by 4 bytes on 64 bit machines.
15334
15335 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15336
15337         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15338         replacement with more meaningful field names. Arch maintainers, please
15339         check the assigned names are good enough for your arch.
15340
15341 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15342
15343         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15344         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15345
15346 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15347
15348         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15349         relocations and memory requirements, put the optimization flags
15350         definitions in their own file.
15351
15352 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15353
15354         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15355
15356         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15357
15358 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15359
15360         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15361
15362 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15363
15364         * inssel.brg: use the correct function to get the size of an item
15365         in an array, given an element class.
15366         * aot-compiler.c: do not access class->class_size directly.
15367
15368 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15369
15370         * mini.h, debug-mini.c: added a debugging function to print
15371         info about local variables and arguments in a jitted method.
15372
15373 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15374
15375         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15376
15377         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15378
15379 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15380
15381         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15382         inner and outer loops when passing vtypes.
15383
15384 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15385
15386         * mini-ppc.c: take into account the cpu errata for cache flushing
15387         which caused some random errors (bug #79381).
15388
15389 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15390
15391         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15392         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15393
15394 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15395
15396         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15397         loaded.
15398
15399         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15400         freebsd ports tree.
15401
15402         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15403         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15404
15405         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15406         displacement.
15407
15408 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15409
15410         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15411
15412 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15413
15414         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15415         macro does not have to be changed during debugging.
15416
15417         * 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>.
15418
15419         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15420
15421         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15422         
15423         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15424         MONO_ARCH_NO_EMULATE_MUL is defined.
15425
15426         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15427
15428         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15429
15430         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15431
15432         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15433         
15434 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15435
15436         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15437         stuff to mini-exceptions.c where it is used.
15438
15439         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15440         setup code, the real one is in mini-exceptions.c.
15441
15442         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15443         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15444         some changes from the freebsd ports tree.
15445
15446         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15447         constants.
15448         
15449         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15450
15451 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15452
15453         * mini.c: on Linux, check for /proc to be mounted
15454         (bug# 79351, novell bug#201204).
15455
15456 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15457
15458         * mini.c: handle cases where pthread_attr_getstack() behaves
15459         incorrectly (bug #78096).
15460
15461 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15462
15463         * mini-arm.c: support larger stack frames (bug #79272).
15464
15465 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15466
15467         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15468
15469         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15470         tokens.
15471
15472         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15473         mono_class_from_name () to find a class from its name.
15474
15475         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15476
15477 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15478
15479         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15480
15481 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15482
15483         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15484
15485 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15486
15487         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15488         callinfo->trampoline.
15489
15490         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15491         fixes #79271.
15492         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15493         future.
15494
15495 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15498
15499 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15500
15501         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15502         stats.method_trampolines, it is already done by the generic trampoline code.
15503
15504         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15505         
15506 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15507
15508         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15509
15510         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15511
15512         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15513
15514         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15515         
15516         * mini.c (print_jit_stats): Print new stats.
15517
15518         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15519
15520 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15521
15522         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15523         Address on two dimensional arrays. Fixes #78729.
15524
15525         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15526
15527         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15528         a method.
15529
15530         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15531
15532         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15533         #79130.
15534         
15535         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15536         a race condition.
15537         (mini_get_ldelema_ins): Ditto.
15538
15539 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15542         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15543         Fixes #79213.
15544
15545 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15546
15547         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15548         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15549
15550         * exceptions-s390x.c: Cosmetic change.
15551
15552         * tramp-s390.c: Fix warning.
15553
15554         * cpu-s390.md: Correct length of mul_imm.
15555
15556 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15557
15558         * aot-compiler.c: added binary writer with ELF backend
15559         implementation (only on Linux/x86 for now).
15560
15561 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15562
15563         * Makefile.am: Don't run net 2.0 AOT tests.
15564
15565         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15566         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15567
15568         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15569
15570 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15571
15572         * aot-compiler.c: simplified and refactored the asm-writing code
15573         to allow different backends.
15574
15575 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15576
15577         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
15578
15579         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
15580         little. Share patches of type TYPE_FROM_HANDLE as well.
15581
15582         * mini.c (mono_patch_info_equal): New helper function.
15583         (mono_patch_info_hash): Ditto.
15584
15585         * aot-compiler.c (emit_method_code): Fix s390 build.
15586
15587         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
15588         is not handled because it is stored as a flag and not as a type ctor. Fixes
15589         #79016.
15590
15591 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * aot-compiler.c: Fix computation of GOT slot statistics.
15594         
15595         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
15596         Also remove support for not PIC AOT.
15597
15598         * mini.h: Bump AOT file format version.
15599
15600         * objects.cs: Add a test for #78990.
15601
15602         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
15603         (peter.dettman@iinet.net.au). Fixes #79087.
15604
15605         * basic-long.cs: Add a test for the above.
15606
15607 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
15608
15609         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
15610         
15611         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15612         code somewhat.
15613
15614 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15615
15616         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15617         exceptions.
15618
15619 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15620
15621         * mini.c: Don't verify COM proxy invoke calls
15622         
15623
15624 2006-08-10  Dick Porter  <dick@ximian.com>
15625
15626         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15627         which process is holding semaphores locked.
15628
15629 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * mini-ia64.c mini-amd64.c: Fix #79027.
15632
15633         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15634
15635         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15636
15637         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15638         implicit arguments in a vararg call. Fixes #79027.
15639
15640 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15641
15642         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15643         (mono_get_array_new_va_signature): Ditto.
15644
15645 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15646
15647         * aot-runtime.c: Call init_plt lazily.
15648
15649         * inssel-long.brg: Fix unsigned long->int conversion.
15650
15651         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15652
15653         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15654         that most data is now in the .rss/.data section.
15655
15656 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15659
15660         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15661
15662         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15663
15664         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15665
15666         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15667         virtual call. Fixes #79010.
15668
15669         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15670         and use the result as the this argument in the real call.
15671
15672         * generics.2.cs: Add a new test for #79010.
15673         
15674 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15675
15676         * mini-x86.c: Fix a warning.
15677
15678         * aot-compiler.c: Add a bunch of statistics.
15679
15680         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15681
15682 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15683
15684         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15685
15686 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * 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>.
15689
15690 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15691
15692         * mini.c (mono_method_to_ir): Obtain the original method in the
15693         CIL stream and use this to perform validation.
15694
15695         Fixed: #78816
15696
15697 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15698
15699         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15700         (mono_arch_call_opcode): Ditto.
15701
15702         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15703         #78826.
15704
15705         * mini.c (mono_patch_info_dup_mp): New helper function.
15706         
15707         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15708         compilation. Fixes #78827.
15709
15710 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15711
15712         * declsec.c: Use original security informations for
15713           MONO_WRAPPER_MANAGED_TO_MANAGED.
15714
15715 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15716
15717         * mini.c: Allow Com Interop methods/classes and
15718         don't verify COM wrapper calls
15719         
15720
15721 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15722
15723         * inssel-long32.brg: Fix long->i4 checked conversion.
15724
15725         * exceptions.cs: Add a test for the above.
15726
15727 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15728
15729         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15730
15731         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15732         leaks.
15733
15734         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15735         #78775.
15736
15737 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15738
15739         * mini.c: Fix solaris/x86 exception handling.
15740
15741         * Makefile.am: Get rid of $(ICU_LIBS).
15742
15743 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15744
15745         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15746         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15747         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15748
15749         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15750
15751         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15752         this function causes a SIGSEGV.
15753
15754 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15755
15756         * mini.c: Remove unused solaris/x86 includes.
15757
15758 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15759
15760         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15761
15762 2006-06-20  Jb Evain  <jbevain@gmail.com>
15763
15764         * cpu-g4.md: fix max length of start_handler instruction.
15765
15766 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15767         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15768
15769 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15770         * ssa.c: Fixed bug 78653 for SSA based deadce.
15771         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15772         MonoInst.flags, used in SSA based deadce.
15773         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15774         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15775
15776 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15777
15778         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15779         it can end up using non executable memory on ppc64 systems
15780         running ppc32 userspace (fix from Johannes Berg).
15781
15782 2006-06-14  Dick Porter  <dick@ximian.com>
15783
15784         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15785         4.1.1
15786
15787 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15788         * mini.c: Made so that inline is locally disabled if it would
15789         trigger a .cctor, because too many apps depend on this behavior
15790         (which seems to be also the one of the MS CLR).
15791
15792 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15795         No idea why this worked before.
15796
15797         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15798         which branch to outer exception clauses since they could skip the
15799         inner finally clauses. Fixes #78633.
15800
15801         * exceptions.cs: Add a test for the above.
15802
15803         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15804         Fixes #78629.
15805
15806         * iltests.il: Add a test for the above.
15807
15808 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15811         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15812
15813         * iltests.il: Add a test for the above.
15814
15815 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15816
15817         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15818         
15819         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15820         methods as instrinsics.
15821
15822 2006-06-09  Wade Berrier <wberrier@novell.com>
15823
15824         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15825         (simple-cee-ops.h ssapre-mini-ops.h)
15826
15827 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15828
15829         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15830         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15831         instruction).
15832         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15833         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15834
15835 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15836
15837         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15838
15839 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15840
15841         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15842         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15843         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15844         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15845         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15846         of opcodes, so that bug 78549 should not happen again.
15847         * ssapre.c: Updated to use the renamed files.
15848
15849 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15850
15851         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15852         in OP_ATOMIC_EXCHANGE_I4.
15853
15854 2006-06-07  Wade Berrier <wberrier@novell.com>
15855
15856         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15857         in mono_debugger_create_notification_function)
15858
15859 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15860
15861         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15862         
15863         * mini.c (type_from_stack_type): Disable some changes which do not
15864         seem to work.
15865
15866         * driver.c: Reenable opts.
15867
15868         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15869         of the evaluation stack.
15870         
15871         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15872         evaluation stack trace at entry to the bblock.
15873
15874         * mini.c (merge_stacks): New function to perform verification of stack merges.
15875         Turned off by default.
15876
15877         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15878         STACK_MP.
15879         
15880 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15881
15882         * local-propagation.c: Fixed bug 78549.
15883
15884 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15887
15888 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15889
15890         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15891         tramp-arm.c, tramp-ia64.c
15892         (mono_debugger_create_notification_function): Update signature to
15893         new signature and use new protocol for creating the notification
15894         function.  
15895
15896         Should fix the build.
15897
15898 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15899
15900         * exceptions-ppc.c (mono_jit_walk_stack)
15901         (ves_icall_get_frame_info): Fix the build
15902
15903 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15904
15905         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15906
15907 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15908
15909         * il2tests.2.il: New file for generics CIL tests.  Add test for
15910         #78019.
15911         * Makefile.am: Update.
15912
15913         Fix #78019
15914         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15915         to nullable types.
15916
15917 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15918
15919         * aliasing.c: Fixed bug 78311.
15920
15921 2006-05-29  Martin Baulig  <martin@ximian.com>
15922
15923         * mini-exceptions.c (mono_find_jit_info): When computing the
15924         native offset, check whether we're actually inside the method's
15925         code; call mono_debug_print_stack_frame() to format the frame.
15926         (ves_icall_System_Exception_get_trace): Call
15927         mono_debug_print_stack_frame() to format the stack frame.
15928         (ves_icall_get_trace): Update to the new debugging API.
15929         (mono_jit_walk_stack_from_ctx): Likewise.
15930         (ves_icall_get_frame_info): Likewise.
15931
15932         * mini.c (get_method_from_ip): Use the new debugging API.
15933         (mono_print_method_from_ip): Likewise.
15934
15935         * exceptions-ppc.c
15936         (mono_jit_walk_stack): Use the new debugging API.
15937         (ves_icall_get_frame_info): Likewise.   
15938
15939 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15942
15943 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15944
15945         * mini.c: Added "limitator" to inline for debugging.
15946
15947 2006-05-24  Martin Baulig  <martin@ximian.com>
15948
15949         * debug-debugger.c (mono_debugger_init): Create a private,
15950         malloc()-based code manager for the notification function and
15951         intentionally leak it on exit.  This fixes the crash-on-exit race
15952         condition.
15953
15954         * tramp-amd64.c
15955         (mono_debugger_create_notification_function): Added
15956         `MonoCodeManager *' argument.
15957
15958         * tramp-x86.c
15959         (mono_debugger_create_notification_function): Added
15960         `MonoCodeManager *' argument.
15961
15962 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15963
15964         * aliasing.c: Fixed 64 bit issue.
15965         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15966         default since all known bugs are fixed (one more time!).
15967
15968 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15969
15970         * mini.c: write barrier support.
15971
15972 2006-05-23  Martin Baulig  <martin@ximian.com>
15973
15974         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15975         check at the top of the file.
15976
15977 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15978
15979         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15980         reverting changes without reason and without changelog entries.
15981
15982 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15983
15984         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15985         to a few opcodes. Fixes #78439.
15986
15987         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15988         consistency with other archs.
15989
15990         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15991
15992 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15993
15994         * debug-debugger.c: fix the build.
15995
15996 2006-05-17  Martin Baulig  <martin@ximian.com>
15997
15998         * debug-debugger.c
15999         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16000         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16001         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16002         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16003
16004 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16005
16006         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16007
16008 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16009
16010         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16011         MONO_TYPE_GENERICINST.
16012         
16013         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16014         MONO_TYPE_GENERICINST.
16015
16016 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16017
16018         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16019         #78325.
16020
16021 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16022
16023         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16024         mempool.
16025         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16026
16027 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16030         mono_trace_cleanup ().
16031
16032         * iltests.il: Fix problem with the newly added test.
16033
16034         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16035         due to register constraints, free up the previous hreg. Fixes #78314.
16036
16037         * iltests.il: Add new test for #78314.  
16038
16039         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16040         Interlocked.Add. Fixes #78312.
16041
16042         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16043         
16044 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16045
16046         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16047
16048 2006-05-05  Martin Baulig  <martin@ximian.com>
16049
16050         * debug-mini.c (mono_debug_open_block): New method.
16051
16052         * mini-amd64.c
16053         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16054         the beginning of each basic block.
16055
16056         * mini-x86.c
16057         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16058         the beginning of each basic block.
16059
16060 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16061
16062         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16063         default until I understand why they break the build on amd64.
16064
16065 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16066
16067         * mini.c (mini_cleanup): Call mono_cleanup ().
16068
16069         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16070         errors.
16071
16072 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16073
16074         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16075         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16076         default since all known bugs are fixed, and I cannot reproduce bug
16077         77944... I'm asking Matt Hargett to test again after this commit.
16078
16079 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16080
16081         * mini-codegen.c: Fixed typo that thrashed inline.
16082
16083 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16084
16085         * dominators.c (compute_dominators): Avoid using a worklist since
16086         it is not correct in some cases. Instead, iterate over all bblocks as
16087         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16088
16089 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16090
16091         * mini.c (mono_jit_compile_method_inner): Use
16092         mono_prepare_exception_from_error that resets the value
16093         internally.
16094
16095 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16096
16097         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16098         
16099 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16100
16101         * aliasing.c: Fixed bug 78210.
16102
16103 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16104
16105         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16106         default until all their problems (or the ones they trigger) are fixed.
16107
16108 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16109
16110         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16111         
16112         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16113         as loaded only after resolving patches since that could invoke the same method.
16114
16115         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16116
16117         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16118         functions.
16119
16120         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16121         AOT loader.
16122
16123         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16124         stack.
16125
16126         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16127         made from AOT code through the PLT table.
16128
16129         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16130         holding the plt offset when a call is made to the aot plt trampoline.
16131         
16132 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16133
16134         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16135         amd64 AOT support.
16136
16137         * Makefile.am (common_sources): Fix build breakage.
16138
16139         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16140         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16141         intra-assembly calls if possible.
16142         
16143         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16144
16145         * mini-trampolines.c: Handle PLT entries.
16146
16147         * mini.c: Avoid creating a GOT var for calls.
16148
16149         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16150         from mscorlib code.
16151
16152         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16153         from mscorlib code.
16154
16155         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16156         AOT code.       
16157
16158         * mini.h: Bump AOT file format version.
16159         
16160         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16161         covers more cases.
16162
16163 2006-04-25  Martin Baulig  <martin@ximian.com>
16164
16165         * driver.c: Disable copyprop, consprop and inline when running
16166         inside the debugger.
16167
16168 2006-04-25  Martin Baulig  <martin@ximian.com>
16169
16170         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16171         with `get_current_thread' and added `detach'.
16172         (MonoDebuggerMetadataInfo): Added `thread_size',
16173         `thread_tid_offset', `thread_stack_ptr_offset' and
16174         `thread_end_stack_offset'.
16175
16176 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16177
16178         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16179         aot-runtime.c.
16180
16181         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16182         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16183
16184         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16185
16186         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16187
16188         * aot.c: Add support for ADJUSTED_IID.  
16189
16190 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16191
16192         * aot.c (emit_method_order): Don't align method_order_end.
16193
16194         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16195         the interface ID changes.
16196
16197 2006-04-21  Dick Porter  <dick@ximian.com>
16198
16199         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16200         cleaning up a thread.  Fixes the new part of bug 77470.
16201
16202 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16203
16204         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16205         to managed wrapper.
16206                      
16207 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16208
16209         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16210         
16211         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16212         SIGSEGV. Fixes #78072.
16213
16214         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16215         unregister our SIGABRT handler.
16216
16217 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16218
16219         * mini.c: Disabled inline where it can alter the call stack in a
16220         way visible from managed code.
16221         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16222         default.
16223
16224 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16225
16226         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16227         on other platforms. Fixes #78089.
16228
16229 2006-04-13  Martin Baulig  <martin@ximian.com>
16230
16231         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16232         determine whether we're inside the debugger.
16233
16234         * debug-debugger.h
16235         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16236
16237 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16238
16239         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16240         handler clauses. Fixes #78024.
16241
16242         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16243         in the CALL_MEMBASE opcodes. Fixes #78088.
16244         (mono_arch_get_vcall_slot_addr): Ditto.
16245
16246 2006-04-10  Martin Baulig  <martin@ximian.com>
16247
16248         * debug-debugger.c: The thread handling code has now been moved
16249         into ../metadata/threads.c.
16250
16251 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16252
16253         * driver.c (mono_main): Fix --with-gc=none build.
16254
16255         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16256         (mono_spillvar_offset_float): Ditto.
16257         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16258         hreg, not when its !global, since on ia64, there is a third category: stacked
16259         registers.      
16260
16261 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16262
16263         * mini.c: set MonoInst->klass for load field address and a few other
16264         places.
16265
16266 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16267
16268         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16269
16270 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16271
16272         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16273         the branch opt changes.
16274
16275 2006-04-06  Dick Porter  <dick@ximian.com>
16276
16277         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16278         
16279         * wapihandles.c (mini_wapi_seminfo): 
16280         * driver.c (mono_main): Add semaphore info option
16281
16282 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16283
16284         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16285         branch optimization changes. Fixes #78009.
16286
16287 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16288
16289         * mini.c: ignore accessibility of methods in managed->native wrappers.
16290
16291 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16292
16293         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16294         
16295         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16296
16297 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16298
16299         * mini.c: Modify the branch optimizations to preserve the invariant that
16300         the entries inside the in_bb and out_bb arrays are unique.
16301         (mono_unlink_bblock): Avoid creation of new arrays.
16302
16303 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16306         change (#77992).
16307
16308 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16309
16310         * mini.c (optimize_branches): Remove the "optimizations" in
16311         the cbranch1/cbranch2 -> branch cases which were causing several
16312         problems in the past. Fixes #77986.
16313
16314 2006-03-31  Chris Toshok  <toshok@ximian.com>
16315
16316         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16317         default optimizations :(
16318
16319 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16320
16321         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16322         branch.
16323
16324 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16325
16326         * local-propagation.c: Added comments to structs and removed
16327         "Mono" prefixes from local tree mover types.
16328
16329 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16330
16331         * Makefile.am (arch_sources): Define this for each architecture so 
16332         libmono_la_SOURCES is defined in one place.
16333
16334 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16335
16336         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16337         from handles/.
16338
16339 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16340
16341         * driver.c: print the GC name supplied by configure.
16342
16343 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16344
16345         * local-propagation.c: Added tree mover, and moved here all the
16346         local propagation code from mini.c
16347         * mini.c: Added support for treeprop, and moved all the local
16348         propagation code to local-propagation.c
16349         * mini.h: Added support for treeprop
16350         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16351         treeprop, inline and deadce by default
16352         * Makefile.am: Added local-propagation.c
16353
16354 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16355
16356         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16357
16358 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16359
16360         * debug-debugger.c: make it compile without the Boehm GC.
16361
16362 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16363
16364         * mini.c: fixed issue with mismatch when an icall is registered
16365         with multiple names but same address.
16366
16367 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16368
16369         * declsec.c, mini-exceptions.c: use write barrier to set reference
16370         fields of managed objects.
16371
16372 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16373
16374         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16375         (can_access_internals): Fix a warning.
16376
16377         * mini.c (print_method_from_ip): Rename this to 
16378         mono_print_method_from_ip so it gets exported.
16379
16380         * trace.c: Deal with strings inside StringBuilder's containing garbage
16381         and fix memory leaks. Fixes #77848.
16382
16383 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16384
16385         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16386         fixes #77787.
16387
16388 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16389         
16390         * mini-s390.c: Remove OP_X86_TEST_NULL.
16391
16392 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * mini.c: use the correct GetHashCode() for the moving collector.
16395
16396 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16397
16398         * liveness.c: Regalloc spill cost tuning.
16399
16400 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16401         
16402         * mini-s390x.h: Correct S390_LONG macro.
16403
16404         * mini-s390x.c: Cleanup unused code.
16405
16406 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16407
16408         * jit-icalls.h: New file.
16409
16410         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16411         icalls and include that instead of including jit-icalls.c.
16412
16413         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16414         OP_X86 opcodes.
16415
16416 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16417
16418         * mini.c: when checking for member accessibility, also check for
16419         friend assemblies and for explicit interface implementations.
16420
16421 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16422
16423         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16424
16425         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16426
16427         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16428         common cases are done first.    
16429
16430         * mini-ops.h: Only define platform specific opcodes on the given platform.
16431
16432         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16433         branch.
16434         
16435 2006-03-14  Martin Baulig  <martin@ximian.com>
16436
16437         Revert Paolo's change from r57348:
16438
16439         * mini.h: don't use gboolean for bitfields.
16440         * mini.c: verifier changes for fields and methods accessibility.
16441
16442 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16443
16444         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16445
16446         * mini-s390x.c: Fix conv_r_un.
16447
16448         * cpu-s390, cpu-s390x.md: Fix lengths.
16449
16450 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16451
16452         * mini.c: nested types have access to all the nesting
16453         levels, not just the enclosing types.
16454
16455 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16456
16457         * mini.c: added a few more verification checks.
16458
16459 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16460
16461         * liveness.c: Merge optimizations from the linear-il branch.
16462
16463 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16464
16465         * mini-ia64.c (emit_call): Add a comment.
16466
16467         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16468
16469         * tramp-ia64.c: Fix some warnings.
16470
16471 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16472
16473         * mini.h: don't use gboolean for bitfields.
16474         * mini.c: verifier changes for fields and methods accessibility.
16475
16476 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16477
16478         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16479         lazy icall wrapper changes.
16480
16481         * dominators.c: Replace all the dominator algorithms with faster
16482         ones from the linear-il branch.
16483
16484         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16485         the mempool.
16486
16487         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16488         common cases are done first.
16489
16490         * mini-amd64.c: Fix some warnings.
16491
16492         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16493         from the mempool.
16494
16495         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16496         added code.
16497
16498         * mini.h: Add a missing prototype.
16499
16500 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16501
16502         * mini.c: Compile icall wrappers lazily.
16503
16504         * mini-codegen.c: Use printf instead of g_print since its much faster.
16505
16506         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16507         function.
16508
16509         * mini.c (optimize_branches): Cache the negative result from 
16510         remove_block_if_useless ().
16511
16512         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16513         Also fix some bblock linking issues.
16514
16515         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16516         assembly files.
16517
16518         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16519
16520         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16521         accessed fields first, for better cache behavior.
16522         
16523 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16524
16525         * mini.c: speedup IList<T> array accesses.
16526
16527 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16528
16529         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16530         inline_costs counter. Fixes #77190.
16531
16532 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16533
16534         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16535         trace messages. Fixes #77706.
16536
16537 2006-03-04  Martin Baulig  <martin@ximian.com>
16538
16539         * tramp-amd64.c, tramp-x86.c
16540         (mono_debugger_create_notification_function): Use
16541         mono_global_codeman_reserve() to allocate a buffer at runtime and
16542         return it.
16543
16544         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16545
16546         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16547         notification function at runtime and then call `initialize' in the
16548         `MONO_DEBUGGER__debugger_info' vtable.
16549
16550 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16551
16552         * iltests.il: Fix a visibility problem.
16553
16554 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16555
16556         * driver.c, mini.c: add hooks for the counters API.
16557
16558 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16559
16560         * driver.c: show disabled options.
16561
16562 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16563
16564         * linear-scan.c: always use cost-driven selection.
16565
16566 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16567
16568         * jit-icalls.c (helper_compile_generic_method): Revert change from
16569         2006-02-24.
16570
16571 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16572
16573         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16574
16575 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16576
16577         * inssel.brg: style fixes, mostly to force the updated monoburg
16578         to run for people using svn.
16579
16580 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
16581
16582         * mini.c: match monoburg changes.
16583
16584 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16585
16586         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
16587         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
16588         declaration in the header file.
16589
16590 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16591
16592         * helpers.c: reduce relocations and mem usage.
16593
16594 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
16595
16596         * mini.h, mini-codegen.c: disable logging features if
16597         requested by configure.
16598
16599 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
16600
16601         * mini.c: tiny verifier changes.
16602
16603 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
16606         cpu-pentium.md: stack alignment changes for osx/x86,
16607         partially from Geoff Norton <gnorton@customerdna.com>.
16608
16609 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16610
16611         * jit-icalls.c (helper_compile_generic_method): Update to changes
16612         in metadata/class.c.
16613
16614 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16615         
16616         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16617         
16618         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16619         interface calls with large offsets.
16620
16621 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16622
16623         * jit-icalls.c (helper_compile_generic_method): Document the
16624         special-case we depend on so that we can inflate the method twice
16625         with the same context with no bad side-effects.
16626
16627 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini-x86.c, mini-amd64.c: fix for case when xen support
16630         is disabled.
16631
16632 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16633
16634         * mini-x86.c, mini-amd64.c: generate code to access tls items
16635         in a faster way for Xen systems.
16636
16637 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16638
16639         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16640         updates and compilation fixes for the OSX/x86 port, mostly from
16641         Geoff Norton <gnorton@customerdna.com>.
16642
16643 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16644
16645         * inssel.brg: faster interface call implementation
16646         to sync with the interface_offsets MonoVTable changes.
16647
16648 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16649
16650         * mini.c: more verification checks.
16651
16652 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16653
16654         * mini.c: added a few more verification checks.
16655
16656 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16657
16658         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16659         facility on the processor and use it if available.
16660
16661 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16662
16663         * driver.c, aot.c, mini.c: throw exception if the IL code is
16664         invalid or unverifiable.
16665
16666 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16667
16668         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16669         m.StructField.
16670
16671 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16672
16673         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16674
16675 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16676
16677         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16678         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16679         handling of instantiated generic valuetypes.
16680
16681 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16682
16683         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16684         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16685         instead.
16686
16687         * generics.2.cs: Revert the nullable reftypes tests.
16688
16689 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16690
16691         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16692         using __builtin_frame_address (1) as it doesn't work in the presence
16693         of optimizations. Hopefully fixes #77273.
16694
16695         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16696         -> generics.cs change as it doesn't work with some automake versions.
16697
16698 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16699
16700         * mini.c: handle systems that sue a different way to
16701         retrieve the stack address of the current thread.
16702
16703 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16704
16705         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16706         it specially in the makefile.
16707
16708         * generics.2.cs: Add tests for nullable reference types.
16709
16710 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16711
16712         * mini.c: always handle the case when mono_jit_init()
16713         is called in a thread different from the main thread,
16714         confusing libgc (bug #77309).
16715
16716 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16717
16718         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16719
16720 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16721
16722         * mini.c: change optimize_branches () to use a single loop
16723         and introduce a new optimization to simplify some range checks.
16724
16725 2006-02-03  Martin Baulig  <martin@ximian.com>
16726
16727         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16728         and merged with debugger_thread_manager_add_thread().
16729         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16730         inform the debugger about the main thread.
16731
16732 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16733
16734         * basic.cs: Add test for div.un/rem.un constant folding.
16735
16736 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16737
16738         * cpu-s390x.md: correct int_xor_imm length
16739
16740 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16741
16742         * generics.2.cs: New test for #77442.
16743
16744         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16745         #77442.
16746
16747 2006-02-02  Martin Baulig  <martin@ximian.com>
16748
16749         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16750         <mono/metadata/mono-debug-debugger.h>   
16751
16752         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16753
16754 2006-02-02  Martin Baulig  <martin@ximian.com>
16755
16756         * debug-debugger.h: New header file for debug-debugger.c.
16757
16758         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16759         function is a separate thread anymore; add support for attaching.
16760
16761 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16762
16763         * tramp-x86.c: Fix a warning.
16764
16765 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16766
16767         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16768         on very large methods.
16769
16770         * aot.c (load_patch_info): Fix a warning.
16771
16772 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16773
16774         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16775         mini-ops.h: alu membase optimizations.
16776
16777 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16778
16779         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16780         to speedup StringBuilder.
16781
16782 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16783
16784         * dominators.c (mono_compute_natural_loops): Fix detection of
16785         loop body start blocks.
16786
16787         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16788
16789 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16792         #75145.
16793
16794 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16795
16796         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16797
16798 2006-01-25  Martin Baulig  <martin@ximian.com>
16799
16800         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16801         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16802         started to cleanup this file a little bit.
16803
16804 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16805
16806         * mini.c: optimize a codepath frequently happening in generics code.
16807
16808 2006-01-23  Martin Baulig  <martin@ximian.com>
16809
16810         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16811
16812         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16813         functions directly.
16814
16815         * driver.c: debug-debugger.c is only available if
16816         `MONO_DEBUGGER_SUPPORTED' is defined.   
16817
16818 2006-01-23  Martin Baulig  <martin@ximian.com>
16819
16820         * debug-debugger.c: Only enable this on platforms where the Mono
16821         Debugger is working (x86 and x86_64).
16822
16823 2006-01-21  Martin Baulig  <martin@ximian.com>
16824
16825         The Mono Debugger is now using the normal `mono' instead of the
16826         `mono-debugger-mini-wrapper' when executing managed code.
16827
16828         * debug-debugger.c: New file; previously known as
16829         debugger/wrapper/wrapper.c.
16830
16831         * debug-mini.c (mono_init_debugger): Removed.
16832
16833         * driver.c (mono_main): Added new `--inside-mdb' command line
16834         argument which is used when running inside the debugger.
16835
16836 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16837
16838         * liveness.c (mono_analyze_liveness): Remove some unused data
16839         structures.
16840
16841 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16842
16843         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16844
16845 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16846
16847         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16848         depends on implementation details of monobitset.
16849
16850         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16851         Fixes #77271.
16852
16853 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * liveness.c: Update after monobitset changes.
16856
16857 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16858
16859         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16860
16861 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16862
16863         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16864
16865         * mini-s390x.c: Remove warning messages.
16866
16867 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16868
16869         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16870
16871 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * generics.2.cs: Add ldelem/stelem_any test.
16874
16875 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16876
16877         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16878
16879 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16880
16881         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16882         
16883 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16884
16885         * generics.2.cs: Reenable vtype tests.
16886
16887         * inssel-x86.brg: Remove an icorrect valuetype rule.
16888
16889 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16890
16891         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16892         initial support for OP_ABS.
16893
16894 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16895
16896         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16897
16898 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16899
16900         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16901         conversion and implement LADD/LSUB.
16902
16903         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16904         architectures.
16905
16906 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16907
16908         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16909
16910         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16911         architectures.
16912
16913 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16914
16915         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16916         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16917         (stack walk problem).
16918
16919 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16920
16921         * aot.c (mono_aot_load_method): Fix a warning.
16922
16923 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16924
16925         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16926
16927 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16928
16929         * iltests.il: Add test for #77148.
16930
16931         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16932         #77148.
16933
16934 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16935
16936         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16937
16938 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16939
16940         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16941         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16942
16943         * basic-long.cs: Add lconv-to-r4/r8 tests.
16944
16945 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16946
16947         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16948
16949         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16950         here as on other archs.
16951
16952 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16953
16954         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16955
16956 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16957
16958         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16959         
16960         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16961
16962         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16963         instrument_prolog; Add memory_barrier instruction.
16964
16965 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16966
16967         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16968
16969 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16970
16971         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16972
16973         * aliasing.c inssel.brg: Fix warnings.
16974
16975         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16976         could skip initialization of some parts of memory.
16977
16978         * mini.c mini-ia64.c: Fix warnings.
16979
16980         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16981
16982 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16983
16984         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16985         a crash seen on sparc.
16986
16987         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16988         
16989         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16990
16991 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16992
16993         * mini-ops.h: Add s390_backchain instruction
16994
16995         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16996
16997         * cpu-s390.md: Add s390_backchain instruction
16998
16999         * mini-s390.c: Significant ABI changes
17000
17001         * mini-s390.h: Cater for zero length structures
17002
17003 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17004
17005         * mini-s390.c: ABI fixes
17006
17007         * inssel-s390.brg: Remove debug statements
17008
17009         * cpu-s390.md: Fix length of ATOMIC_xx operations
17010
17011 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17012
17013         * basic-float.cs: Add float<->long conversion tests.
17014
17015 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17016
17017         * mini-s390.c: Fix LOCALLOC processing.
17018
17019         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17020
17021 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17022
17023         * iltests.il: Add tests for some opcodes not covered by the other
17024         tests.
17025
17026 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17027
17028         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17029         register loading for Tail processing; Correct trace output.
17030
17031         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17032
17033         * cpu-s390.md: Correct size of jmp instruction. 
17034
17035 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17036
17037         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17038
17039 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17040
17041         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17042           Bring s390 up to current level.
17043
17044 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17045
17046         * generics.2.cs: Disable the newly added tests as they do not work yet.
17047         
17048         * generics.2.cs: Add valuetype tests.
17049
17050 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * basic-long.cs: Add i4->u8 test.
17053
17054         * objects.cs: Add tests for JIT intrinsic.
17055
17056         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17057         optimizations lost by a mistake.
17058
17059 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17060
17061         * basic-long.cs: Remove a test moved to objects.cs.
17062
17063         * arrays.cs: Add more array tests.
17064
17065 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17066
17067         * arrays.cs: Add new tests for multi-dimensional arrays.
17068
17069 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17070
17071         * Makefile.am (test_sources2): Add generics.2.cs.
17072         (EXTRA_DIST): Add test_sources2.
17073
17074 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17075
17076         Support for boxing and unboxing nullable types as well as the
17077         isinst operation on nullables, per the CLI ammendment.
17078
17079         * inssel.brg (CEE_ISINST): Special case for nullable
17080
17081         * mini.c (handle_unbox_nullable): new method
17082         (handle_box): Special case for nullable types
17083         (mono_method_to_ir): Call handle_unbox_nullable in correct
17084         places.
17085
17086         * generics.2.cs: New test suite
17087
17088         * Makefile.am: Support for regression tests with generics.
17089
17090 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17091
17092         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17093         allocated to registers. Fixes #76800.
17094
17095 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17096
17097         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17098
17099 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17100
17101         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17102         of platforms.
17103
17104 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17105
17106         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17107         objects.cs.
17108
17109         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17110         
17111         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17112 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17113
17114         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17115         single precision before storing to a single precision location.
17116
17117 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17118
17119         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17120
17121 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17122
17123         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17124         correct files.
17125
17126         * basic.cs: Remove test_0_byte_compares test which was moved to
17127         objects.cs a long time ago.
17128
17129 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17130
17131         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17132
17133 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17134
17135         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17136         handlers are called.
17137
17138         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17139         throwing code.
17140
17141          * mini-ia64.c: Add support for the throw->branch exception 
17142         optimization.   
17143
17144         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17145
17146 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17147
17148         * mini.c: Enabled "fastpath" deadce :-)
17149         
17150 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17151
17152         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17153         alias analysis pass to support it.
17154         * mini.h: Likewise.
17155         * ssa.c: Likewise.
17156         * liveness.c: Likewise (liveness computation can use aliasing
17157         information to be more accurate).
17158         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17159         moreover made so that "--compile-all" uses the given optimization
17160         flags and not the default ones.
17161         * aliasing.c: Alias analysis (new file).
17162         * aliasing.h: Likewise.
17163         * Makefile.am: added "aliasing.c" and "aliasing.h".
17164         
17165 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17166
17167         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17168         OP_L opcodes.
17169
17170 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17171
17172         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17173         fp >= end_of_stack exit condition, as it is not needed, and it might
17174         become true for fp eliminated frames.
17175
17176 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17177
17178         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17179         coded offsets.
17180
17181 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17182
17183         * mini-arm.c: fixed alignment of doubles/longs to match
17184         the C ABI (bug #76635).
17185
17186 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17187
17188         * aot.c: fix compilation with --enable-minimal=aot.
17189
17190 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17191
17192         * mini-arm.c: fixed compatibility with the new
17193         floating point emulator package for compares.
17194
17195 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17196
17197         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17198
17199 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17200
17201         * mini-exceptions.c (print_stack_frame): Output to stderr.
17202         (mono_handle_native_sigsegv): Ditto.
17203
17204 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17205
17206         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17207         OP_LCONV_TO_OVF_I implementation.
17208
17209         * mini-amd64.c: Add support for the throw->branch exception 
17210         optimization.
17211
17212         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17213         when the catch clause catches a more general exception, i.e. Object.
17214
17215 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17216
17217         * cpu-ia64.md: Remove unused opcodes.
17218
17219         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17220         specific defines for architectures defining USE_SIGACTION.
17221
17222         * mini-ia64.c: Fix some warnings.
17223
17224         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17225         version seemed to skip a frame.
17226
17227 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17228
17229         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17230         only calls which are made to native code use this flag.
17231
17232 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17233
17234         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17235         varargs methods as well.
17236         
17237         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17238         which have save_lmf set. Reorganize methods prologs a bit.
17239
17240         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17241         debugger to the proper place.
17242
17243 2005-10-29  Martin Baulig  <martin@ximian.com>
17244
17245         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17246         when running inside the debugger until the debugger has support
17247         for it.
17248
17249 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17250
17251         * mini.h: Fix a warning.
17252
17253 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17254
17255         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17256         we expose publicly, this returns the string.
17257
17258 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17259
17260         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17261         with fp elimination.
17262
17263 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17264
17265         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17266         native stacktrace using the glibc 'backtrace' function if available.
17267
17268 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17271
17272         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17273         handle SIGSEGVs received while in native code.
17274
17275         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17276         code, call mono_handle_native_sigsegv which will abort the runtime
17277         after printing some diagnostics, instead of converting it into a
17278         confusing NullReferenceException.
17279
17280 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17281
17282         * cpu-pentium.md: Remove unused opcodes.
17283
17284 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17285
17286         * mini-amd64.h (MonoLMF): Add rsp field.
17287
17288         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17289         the lmf too.
17290
17291 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17292
17293         * mini-codegen.c (get_register_spilling): Fix some warnings.
17294
17295 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17296
17297         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17298         elimination during exception handling. Enable fp elimination by
17299         default.
17300
17301         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17302         elimination.
17303
17304 2005-10-16  Martin Baulig  <martin@ximian.com>
17305
17306         * mini-exceptions.c
17307         (mono_debugger_run_finally): New public method for the debugger.
17308
17309 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17310
17311         * debug-mini.c (mono_debug_init_method): Fix warning.
17312
17313         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17314         the 'exname' parameter const to fix some warnings.
17315
17316 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17317
17318         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17319         introduced by the previous patch.
17320
17321 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17322
17323         * basic-float.cs: Add test for precision of float arithmetic.
17324
17325         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17326         when loading/storing single values from/to memory.
17327
17328         * mini.c (mono_jit_compile_method_with_opt): Create the function
17329         pointers in the correct domain.
17330
17331 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17332
17333         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17334         introduced by previous patch.
17335         
17336         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17337         when out_filter_idx is NULL.
17338
17339         * mini-exceptions.c: Don't run filter clauses twice during exception
17340         handling. Fixes #75755.
17341
17342 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17343
17344         * aot.c: Add support for ldflda wrappers.
17345
17346         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17347         #75902.
17348
17349 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17350
17351         * mini.c, mini.h: do not consider exception handlers blocks when
17352         setting up interface variables.
17353
17354 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17355
17356         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17357
17358 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17359
17360         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17361         causes a regression.
17362
17363         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17364
17365 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17366
17367         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17368         of the OP_P definitions.
17369
17370         * TODO: Add a proposal for dealing with the CEE/OP mess.
17371
17372         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17373         optimizations from the x86 port.
17374
17375         * cpu-amd64.md: Ditto.
17376
17377         * basic.cs basic-long.cs: Add tests.
17378
17379 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17380
17381         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17382         Patrik Torstensson's implementation of my exception-handling
17383         optimization idea, when the exception object is not used
17384         (bug #62150).
17385
17386 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17387
17388         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17389         of the mul_imm optimizations from the old jit.
17390
17391 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17392
17393         * mini.c, liveness.c: patch by Patrik Torstensson and
17394         Zoltan Varga to improve performance in methods with
17395         exception clauses.
17396
17397 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17398
17399         * driver.c: Remove 'Globalization' entry from --version.
17400
17401 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17402
17403         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17404         there is a profiler interested in JIT events.
17405
17406         * aot.c: Load profile files produced by the AOT profiling module, and
17407         reorder methods based on the profiling info. Add a 'method_order' table
17408         to the AOT file to make mono_aot_find_jit_info work with the reordered
17409         methods.
17410
17411         * mini.h: Bump AOT file version info.
17412
17413 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17414
17415         * mini-arm.h: work around what looks like a gcc bug when optimizations
17416         are enabled.
17417
17418 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17419
17420         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17421         conditionals.  Use ...
17422         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17423
17424 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17425
17426         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17427         to determine the amount of memory to copy when passing valuetypes.
17428
17429         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17430         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17431
17432 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17433
17434         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17435         information about aot.
17436
17437 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17438
17439         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17440         macros. This will allow a deadlock debugger to easily be plugged
17441         in.
17442
17443 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17444
17445         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17446
17447 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17448
17449         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17450         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17451         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17452         ($(arch_built)) [CROSS_COMPILING]: Error out.
17453
17454 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17455
17456         * aot.c: Add support for the no_special_static flag for classes.
17457
17458 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17459
17460         * Reapply reverted patches.
17461
17462         * *: Revert r50174 as well.
17463
17464         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17465
17466 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17467
17468         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17469
17470 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17471
17472         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17473         part of the SIG_HANDLER_SIGNATURE.  
17474
17475 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17476
17477         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17478         statistics.
17479
17480         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17481         introduced by previous patch.
17482
17483 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17484
17485         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17486         saved registers too.
17487
17488         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17489         upon the information returned by get_call_info ().
17490         
17491         * mini-x86.c (add_float): Fix stack size calculation.
17492         (mono_arch_call_opcode): Rewrite this so it works based up the
17493         information returned by get_call_info ().
17494         (mono_arch_get_this_vret_args): Ditto.
17495
17496 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17497
17498         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17499         in cinfo to determine the registers which need to be used.
17500
17501 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17502
17503         * driver.c (mono_main): Add --server and --desktop flags. 
17504
17505 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17508         registers as global registers.
17509
17510         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17511         longer needed with the new register allocator.
17512
17513         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17514
17515         * cpu-ia64.md: Remove unused opcodes.
17516         
17517         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17518         
17519 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17520
17521         * cpu-amd64.md: Remove unused opcodes.
17522
17523         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17524         needed with the new register allocator.
17525
17526         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17527         reg-reg moves.
17528
17529 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17530
17531         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17532
17533 2005-09-16  Martin Baulig  <martin@ximian.com>
17534
17535         * exceptions-amd64.c
17536         (throw_exception): Don't call mono_debugger_throw_exception() if
17537         we're a rethrow - see the FIXME in the code.
17538
17539 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17540
17541         * mini.c (mono_init_exceptions): This only works on some architectures.
17542         
17543 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17546         on ia64.
17547
17548         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17549
17550         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17551         now in mini-exceptions.c.
17552
17553 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17556         now in mini-exceptions.c.
17557
17558 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17559
17560         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17561         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17562
17563         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17564         code into mini-exceptions.c. Add some assertions to it.
17565
17566 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17567
17568         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17569         (<software@solmersa.com>). Fix as errors on windows.
17570
17571 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17572
17573         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17574         method info into the LMF.
17575
17576 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17577         
17578         * mini-ia64.c: Add proper unwind info for method epilogs.
17579
17580         * exceptions-ia64.c: Add some code to help debugging.
17581         
17582         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
17583
17584         * mini-exceptions.c: Fix warning.
17585
17586 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17587
17588         * mini.c: Really fix build.
17589
17590         * mini-x86.c mini-amd64.c: Fix build.
17591
17592 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
17595
17596         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
17597         some Interlocked methods as intrinsics.
17598
17599         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
17600         for Thread methods as well.
17601
17602         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
17603
17604         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
17605
17606         * mini-ia64.c mini-x86.c mini-amd64.c 
17607         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
17608         OP_MEMORY_BARRIER.
17609         
17610         * mini.c (mono_init_exceptions): Fix build breakage.
17611
17612 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17613
17614         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17615         of instructions. Use the new ia64_unw_op macros for emitting unwind
17616         info.
17617
17618         * mini.c (mono_init_exceptions): Initialize exception handling
17619         related trampolines at startup.
17620
17621 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17622
17623         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17624
17625 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17626
17627         * mini.c: Handle type loading errors gracefully during compilation and
17628         throw the appropriate exception.
17629
17630 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17631
17632         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17633         for the mono binary.
17634
17635 2005-09-09  Martin Baulig  <martin@ximian.com>
17636
17637         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17638         the release.
17639
17640 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17641
17642         * mini-arm.h: use emulation for conv.r.un for the release.
17643
17644 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17645
17646         * mini-arm.c, objects.cs: more fixes and tests for them.
17647
17648 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini-arm.c: align structures to at least 4 bytes to be able
17651         to keep our current optimized memcpy.
17652
17653 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17654
17655         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17656
17657 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17658
17659         * mini.c: ignore SIGPIPE.
17660
17661 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17662
17663         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17664
17665         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17666
17667 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17668
17669         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17670
17671 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17672
17673         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17674         exception handling support.
17675         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17676         patch by Brian Koropoff <briank@marakicorp.com>).
17677
17678 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17679
17680         * mini.c: revert another 'optimization' which breaks when
17681         items on the eval stack need to be saved at a basic block end
17682         (bug #75940).
17683
17684 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17685
17686         * jit-icalls.c: for arrays, ensure we always provide
17687         lower bounds.
17688
17689 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17690
17691         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17692         
17693         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17694
17695 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17696
17697         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17698         arguments in their original register.
17699
17700 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17701
17702         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17703         memset/memcpy.
17704
17705         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17706         when ssapre is enabled.
17707
17708         * inssel-long.brg: Fix bug in previous patch.
17709
17710         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17711         multiplication by a constant.
17712
17713 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17714
17715         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17716         icc.
17717
17718         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17719         saving registers.
17720
17721 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17722
17723         * inssel-arm.brg: apply changes tested by Brian Koropoff
17724         <briank@marakicorp.com>.
17725
17726 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17727
17728         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17729         
17730 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17731
17732         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17733         to the same register if dreg is just a base register.
17734         (print_ins): Improve printing of membase opcodes.
17735
17736         * inssel-x86.brg: Add optimized ldind(reg) rules.
17737
17738         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17739
17740 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17741
17742         * mini.c: when running under valgrind, set the stack bottom for
17743         the GC at the actual approximate stack for the app (fixes running
17744         mono with valgrind).
17745
17746 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17747
17748         * mini.c: do no break at the first valuetype to init found
17749         (fixes bug #75791).
17750
17751 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17752
17753         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17754
17755 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17756
17757         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17758
17759 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17760
17761         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17762
17763 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17764
17765         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17766
17767         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17768         code.
17769
17770         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17771         code.
17772
17773         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17774         methods.
17775
17776 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17777
17778         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17779
17780 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17781
17782         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17783         in the tail recursion optimization.
17784
17785         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17786         debug info into the assembly file.
17787
17788         * iltests.il: Add test for filter regions.
17789
17790         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17791         initial stack of filter regions. Fixes #75755.
17792
17793 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17794
17795         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17796         stack requirements.
17797
17798 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17801         the check for an already compiled method on non-ia64 platforms.
17802         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17803         proper domain.
17804
17805         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17806
17807         * inssel-x86.brg: Add some optimized call rules.
17808
17809 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17810
17811         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17812         method here.
17813
17814         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17815         mono_arch_patch_delegate_trampoline.
17816
17817         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17818
17819         * mini-trampolines.c: Fix build.
17820
17821         * mini-amd64.h: Add delegate trampolines.
17822
17823         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17824
17825         * inssel-amd64.brg: Add optimized call rules.
17826         
17827         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17828
17829         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17830
17831 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17832
17833         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17834         change.
17835
17836         * mini-ia64.c: Remove LMF fixmes.
17837
17838         * mini-ia64.h: Remove most fields from LMF.
17839
17840         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17841
17842         * mini-trampolines.c: Add support for IA64 function descriptors.
17843
17844         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17845         for IA64 function descriptors.
17846
17847 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17848
17849         * tramp-arm.c: patch the vtable for virtual calls. Added
17850         support code to register/unregister the LMF.
17851         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17852         more LMF work.
17853
17854 2005-08-19  Dick Porter  <dick@ximian.com>
17855
17856         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17857         bit value if needed.
17858
17859 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17860
17861         * mini.c (mini_get_method): Move handling of wrapper data here.
17862
17863         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17864
17865         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17866         virtual.
17867
17868         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17869         bblock->code does not remain empty.
17870
17871 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17872
17873         * arrays.cs: Add regression test for #75832.
17874
17875         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17876         rules. Fixes #75832.
17877
17878         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17879         instruction scheduling.
17880
17881 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17882
17883         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17884
17885 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17888
17889         * mini-codegen.c: Fix VC build.
17890
17891         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17892
17893 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17894
17895         * mini.h: fix signature for mono_register_opcode_emulation.
17896
17897 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * mini.c: Get rid of most of the helper_sig_... constants using
17900         mono_create_icall_signature ().
17901
17902 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17903
17904         * jit-icalls.c (helper_ldstr): New helper function.
17905
17906         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17907
17908         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17909         throw, load the string using a helper call instead of creating a string object.
17910
17911         * aot.c: Update after LDSTR changes.
17912
17913         * mini.h: Bump AOT file version.
17914         
17915         * aot.c: Save class size info into the AOT file. Print more statistics during
17916         compilation.
17917
17918         * mini.h: Bump AOT file version.
17919
17920         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17921         ordering of disasm cases. Fixes #74957.
17922
17923 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17924
17925         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17926         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17927         the generic code needed for the ARM port.
17928
17929 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17930
17931         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17932         inssel-arm.brg: more ARM features and fixes.
17933
17934 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17935
17936         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17937         ARM port work in progress.
17938
17939 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17940
17941         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17942
17943         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17944
17945         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17946
17947         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17948
17949         * *-ia64.*: Ongoing IA64 work.
17950         
17951         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17952
17953 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17954
17955         * TODO: Remove out-of-data todo stuff.
17956
17957         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17958         dead code.
17959
17960         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17961
17962         * mini.h: Bump corlib version.
17963
17964 2005-07-27  Martin Baulig  <martin@ximian.com>
17965
17966         * mini-codegen.c
17967         (create_copy_ins): Added `const unsigned char *ip' argument; set
17968         `copy->cil_code' from it.
17969
17970 2005-07-27  Martin Baulig  <martin@ximian.com>
17971
17972         * mini-exceptions.c (mono_handle_exception): Don't call
17973         mono_debugger_handle_exception() for filters.
17974
17975 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17976
17977         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17978         as well.
17979
17980 2005-07-26  Martin Baulig  <martin@ximian.com>
17981
17982         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17983
17984         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17985         helper_compile_generic_method() if the method is actually virtual
17986         and non-final.
17987
17988 2005-07-26  Martin Baulig  <martin@ximian.com>
17989
17990         * mini.c
17991         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17992         public; this is now accessed directly by the debugger.
17993         (mono_generic_trampoline_code): Removed.
17994
17995         * debug-mini.c
17996         (mono_debug_init_method): Also add interncalls and wrappers.
17997
17998 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18001
18002 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18005
18006 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18007
18008         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18009
18010 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18013         getting TLS offsets on AMD64 too.
18014
18015 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18016
18017         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18018
18019 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18020
18021         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18022         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18023
18024 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18025
18026         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18027
18028         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18029         to mini.c.
18030
18031         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18032         mono_sparc_is_virtual_call ().
18033         
18034         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18035
18036         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18037         trampoline parameters.
18038
18039         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18040         
18041         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18042         to mono_arch_get_vcall_slot_addr.
18043
18044         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18045         trampoline code.
18046
18047         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18048
18049 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18050
18051         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18052
18053 2005-07-19  Martin Baulig  <martin@ximian.com>
18054
18055         * exceptions-amd64.c (throw_exception): Call
18056         mono_debugger_throw_exception() here like we're doing it on i386.
18057
18058 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18059
18060         * mini-ia64.c: Add optimized TLS access support.
18061
18062 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18063
18064         * mini-exceptions.c: Ongoing IA64 work.
18065
18066         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18067
18068         * mini.c: Use the default optimization set when embedding. Fixes
18069         #75194.
18070
18071 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18072
18073         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18074         of trampolines to a separate file.
18075
18076         * mini-trampolines.c: New file.
18077
18078         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18079         separate file.
18080         
18081         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18082         amd64/ia64 code.
18083
18084         * mini-codegen.c: Fix cygwin build.
18085
18086 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * mini.c: Add some minor changes needed by the IA64 port.
18089
18090         * *-ia64.*: Ongoing IA64 work.
18091
18092 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18093
18094         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18095         trampolines into arch-independent and arch-dependent parts.
18096
18097         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18098
18099 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18100
18101         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18102
18103         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18104         the xp-regalloc-branch for amd64.
18105
18106         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18107         xp-regalloc-branch for x86.
18108
18109 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18110
18111         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18112
18113 2005-07-06  Martin Baulig  <martin@ximian.com>
18114
18115         * mini.c
18116         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18117         (mono_jit_runtime_invoke): Likewise.
18118
18119 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18120
18121         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18122         on x86 too.
18123         
18124         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18125         without loading their metadata. Reorganize the file format so exception handling+
18126         debug info is kept separate from normal method info. Create MonoJitInfo 
18127         structures for methods lazily.
18128
18129         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18130         loading metadata.
18131         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18132
18133         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18134
18135         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18136         in AOT code.
18137
18138         * mini.h: Bump AOT file version.
18139
18140 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18141
18142         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18143
18144 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18145
18146         * Makefile.am (check-local): Call semdel-wrapper.
18147
18148 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18149
18150         * mini-x86.c: Revert the last change as it seems to break the build..
18151
18152 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18155         
18156         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18157
18158 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18159
18160         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18161         outside of the macro, so strange stuff doesn't happen with gcc4
18162         (NEW_AOTCONST_TOKEN): Likewise.
18163
18164 2005-06-28  Martin Baulig  <martin@ximian.com>
18165
18166         * mini.c (mini_class_is_system_array): New static method; use this
18167         instead of `klass->parent == mono_defaults.array_class' everywhere
18168         since this also works for the new generic array class.
18169
18170 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18171
18172         * inssel.brg: Remove warnings.
18173
18174 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18175
18176         * mini-ia64.c: Ongoing IA64 work.
18177
18178         * basic-float.cs: Add float->i1 conversion test.
18179
18180         * iltests.il: Add conv.u4 test.
18181
18182 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18183
18184         * inssel-long.brg: Fix bug caused by last change.
18185
18186 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18187
18188         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18189         BSDs.  Allows the x86 JIT to work on OSX86
18190
18191 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18192
18193         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18194         u4->i8 conversion.
18195
18196         * mini-ia64.c: Ongoing IA64 work.
18197
18198 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18199
18200         * mini-ia64.c: Ongoing IA64 work.
18201
18202         * driver.c: Clean up jit_code_hash as well when using --regression.
18203
18204         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18205
18206         * basic-long.cs: Add tests for long->u4 conversion.
18207
18208 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18209
18210         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18211         that we do not depend on undefined C behavior: the order stuff
18212         gets evaluated within an expression. Fixes mono when compiled on
18213         GCC 4.
18214
18215 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18216
18217         * *-ia64.*: Ongoing IA64 work.
18218
18219         * aot.c: Lower memory usage while loading AOT methods.
18220
18221         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18222
18223         * mini.h: Bump AOT file format version.
18224
18225 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18226
18227         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18228
18229 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18230
18231         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18232         not on callee assembly). Fixed some comments.
18233
18234 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18235
18236         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18237         it gets proper disassembly.
18238         (emit_method_info): Remove some dead code.
18239
18240         * mini.c (mini_method_compile): Allways allocate the GOT var in
18241         mono_method_to_ir for emulating opcodes.
18242
18243 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18244
18245         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18246         before freeing the code memory. Fixes #74990.
18247
18248         * objects.cs: Add regression test for #74992.
18249
18250         * liveness.c: Extend live ranges of arguments to the beginning of the
18251         method. Fixes #74992.
18252
18253         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18254         so it points into the faulting instruction.
18255
18256 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18257
18258         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18259
18260         * *-ia64.*: Ongoing IA64 work.
18261
18262         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18263
18264 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18265
18266         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18267
18268         * *-ia64.*: Ongoing IA64 work.
18269
18270 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18271
18272         * basic-long.cs: Add tests for add/sub.ovf.
18273
18274         * basic.cs: Add tests for sub.ovf.
18275
18276         * *-ia64.*: Ongoing IA64 work.
18277
18278 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18279
18280         * *-ia64.*: Ongoing IA64 work.
18281
18282         * basic.cs: Add conv.ovf.i4.un test.
18283
18284 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18285
18286         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18287         
18288 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18289
18290         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18291
18292 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18293
18294         * *-ia64.*: Ongoing IA64 work.
18295
18296 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18297
18298         * trace.[ch]:
18299         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18300
18301 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18304
18305 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18306
18307         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18308
18309         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18310         of a call is callable by a near call.
18311
18312 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18313
18314         * mini-ia64.c: Ongoing IA64 work.
18315
18316 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * genmdesc.c: Make the generated array non-static.
18319
18320         * inssel-long.brg: Fix LSHR_IMM rule.
18321
18322         * *-ia64.*: Ongoing IA64 work.
18323
18324         * *-ia64.*: Ongoing IA64 work.
18325
18326 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * *-ia64.*: Ongoing IA64 work.
18329
18330         * *-ia64.*: Ongoing IA64 work.
18331         
18332         * mini-ia64.c: Ongoing IA64 work.
18333
18334         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18335
18336 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18337
18338         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18339         
18340         * objects.cs basic-long.cs: Move some tests to objects.cs.
18341
18342 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * *-ia64.*: Ongoing IA64 work.
18345
18346         * iltests.il: Add a new test.
18347
18348         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18349         newobj. Fixes #75042.
18350
18351 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18352
18353         * *-ia64.*: Ongoing IA64 work.
18354         
18355         * *-ia64.*: Ongoing IA64 work.
18356         
18357         * *-ia64.*: Ongoing IA64 work.
18358
18359         * basic.cs objects.cs: Move tests accessing static variables as well.
18360
18361         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18362
18363 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18364
18365         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18366
18367         * driver.c: Always print failed tests.
18368
18369         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18370         frame pointer.
18371
18372         * *ia64*: Ongoing IA64 work.
18373
18374 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * basic.cs: Add tests for add.ovf. Fix warnings.
18377
18378 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18379
18380         * driver.c (mono_main): Avoid crash if no argument is passed to
18381         --break;  Do not use g_error, but f_printf.   And fix all other
18382         ocurrences of the same crash.
18383
18384 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18387         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18388         Fixes #74742.
18389
18390 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18391
18392         * *-ia64.*: Add beginnings of IA64 backend.
18393
18394         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18395
18396 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18397
18398         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18399         Fixes #74925.
18400
18401         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18402
18403         * mini-amd64.c: Fix a warning.
18404
18405 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18406
18407         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18408         in float_neg. Fixes #74897.
18409
18410         * mini-amd64.c (emit_call): Fix another near call bug.
18411
18412 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18413
18414         * declsec.c: Keep the appdomain information in the structure. Added a 
18415         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18416         value gets overwritten).
18417         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18418         an MonoAppDomain member to MonoSecurityFrame.
18419         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18420         used in the stack walk. Now use a MonoArray which grow (double) when
18421         it gets full.
18422
18423 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18424
18425         * mini.c: Re-enabled runtime cleanup, since running threads should
18426         now properly stop when exiting.
18427
18428 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18429
18430         * mini-codegen.c: New file contaning the arch-independent local
18431         register allocator. Not used by any architectures yet.
18432
18433         * mini.h linear-scan.c: Merge some changes from the 
18434         mini-xp-local-regalloc branch.
18435
18436 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18437
18438         * mini-amd64.c (emit_call): Fix calls to native functions when the
18439         runtime is compiled as a shared library. Fixes #74756.
18440
18441         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18442         on a literal field. Fixes #74751.
18443
18444 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18445
18446         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18447
18448 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18449
18450         * objects.cs: Add missing null casting test.
18451
18452 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18453
18454         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18455         in wrapper methods. Also rename 'address' variable to 'offset'.
18456
18457 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18458
18459         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18460         warnings.
18461         
18462         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18463
18464         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18465         work on windows.
18466
18467 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18468
18469         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18470
18471 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18472
18473         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18474         just the last bytes.
18475
18476 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18477
18478         * aot.c (mono_compile_assembly): Fix warning.
18479
18480         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18481         by the _MSC_VER stuff.
18482
18483 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * inssel-long.brg: Fix #74588.
18486
18487         * cpu-amd64.md: Fix #74591.
18488
18489         * iltests.il: Add new regression tests.
18490
18491 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18492
18493         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18494         valuetype.
18495
18496 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18497
18498         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18499
18500         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18501         from Bill Middleton <flashdict@gmail.com>.
18502
18503 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * arrays.cs: Add new regression test. Fix warnings.
18506
18507 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18508
18509         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18510         and leakage in CKFINITE.
18511
18512         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18513         this to a null op since it is called on amd64 too.
18514
18515         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18516
18517         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18518         body since this is not used on amd64.
18519         
18520         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18521
18522         * mini-amd64.c: Remove obsolete fixmes.
18523
18524         * mini.c (print_method_from_ip): Fix debugging support.
18525
18526 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18527
18528         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18529         so that expressions that don't give much gain are not reduced.
18530         * ssapre.h: Likewise.
18531
18532 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18533
18534         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18535
18536         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18537
18538         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18539
18540 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18543
18544         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18545
18546 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18547
18548         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18549         stack touching.
18550
18551         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18552
18553         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18554
18555         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18556
18557         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18558         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18559
18560         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18561
18562         * mini-x86.c: Fix up stack overflow handling.   
18563
18564         * exceptions.cs: Add new regression test.
18565
18566 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18567
18568         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18569         mono_jit_thread_attach.
18570
18571         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18572
18573 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18574
18575         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18576         avoid calling constructors using callvirt.
18577
18578         * inssel.brg: Fix #74073.
18579
18580 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18581
18582         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
18583         compilation with non-GCC compilers.
18584         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
18585         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
18586
18587 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
18588
18589         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
18590         klass->interface_offsets (will likely fix bug#74073).
18591
18592 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18593
18594         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
18595
18596 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
18599         to amd64_div_reg_size ().
18600         
18601         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
18602
18603 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18604
18605         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
18606
18607 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18608
18609         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
18610
18611 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18612
18613         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18614         
18615         * mini.c (mono_precompile_assembly): Load and precompile referenced
18616         assemblies as well. Fixes #74015.
18617
18618 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18619
18620         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18621
18622 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18623
18624         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18625         a lot of checks and (anyway) permissions cannot work until corlib is 
18626         loaded.
18627
18628 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18629
18630         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18631
18632 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18633
18634         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18635         calls (fixes bug#72824).
18636
18637 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18638
18639         * mini.c: fix tail recursion elimination (see test in bug#73936).
18640
18641 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18644         some fp functions in sse2 mode.
18645
18646 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18649
18650 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * mini.h mini.c: Add mono_get_jit_tls_key ().
18653
18654         * mini-x86.c: Enable fast TLS support on windows.
18655
18656 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18657
18658         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18659         * mini.c: Check for p/invoke method when generating code. If a
18660         p/invoke method, or it's class, isn't decorated with [Suppress
18661         UnmanagedCodeSecurity] then generate code to call System.Security.
18662         UnmanagedDemand (only if the security manager is active).
18663
18664 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18667         last change as it seems to cause strange crashes.
18668         
18669 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18670
18671         * *.c: handle unsafe function pointers where needed.
18672
18673 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18674
18675         * mini.c (mono_jit_free_method): Remove the fixme too.
18676
18677 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18678
18679         * mini.c: As discussed, make the code actually free the delegate
18680         thunk now, to enable the debugging of delegate problems, use
18681         MONO_DEBUG=1 when running Mono. 
18682
18683         This takes also care of parts of the leaks as seen by Joe.
18684
18685 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18688         thread_tls_offset calculation.
18689
18690 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18691
18692         * declsec.c: Reworked linkdemand checks for icall. The previous code
18693         was using the declaration code (untrusted) and didn't work as expected
18694         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18695         specific case.
18696
18697 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * iltests.il: Add new localloc test.
18700
18701         * mini-amd64.c: Handle large stack allocations the same way as on
18702         windows if stack overflow handling is working.
18703         
18704         * mini-amd64.c: Allocate the signal stack using mmap.
18705
18706         * mini.c (sigsegv_signal_handler): Fix reading of context.
18707
18708         * mini-exceptions.c: Fix up stack overflow handling.
18709
18710         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18711
18712         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18713
18714         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18715
18716         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18717
18718         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18719         tramp_init functions as they are no longer needed.
18720
18721 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18722
18723         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18724         
18725         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18726
18727         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18728         
18729         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18730         support that now.
18731
18732         * mini-ops.h: Add OP_LMUL_IMM.
18733
18734         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18735         long mul/div opcodes as intrinsic.
18736
18737         * mini-amd64.c (emit_call): Handle the case when the callee might be
18738         an AOT method.
18739
18740 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18741
18742         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18743         extra safe.
18744         
18745         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18746
18747         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18748
18749 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18750
18751         * mini.c (mono_codegen): Don't leak here, to help people running
18752         monogrind.
18753
18754 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18755
18756         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18757         conversions in sse2 mode.
18758
18759         * basic-float.cs: Add regression test.
18760         
18761         * mini-amd64.c: Reenable sse2.
18762
18763 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18764
18765         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18766
18767 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18768
18769         * driver.c: Copyright text should include 2005.
18770         
18771 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * cpu-amd64.md (load_membase): Fix more max lengths.
18774
18775 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * cpu-amd64.md (load_membase): Fix max length.
18778
18779         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18780
18781         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18782
18783         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18784         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18785
18786         * basic-float.cs: Add rounding regression test.
18787
18788         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18789
18790 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18791
18792         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18793         structures in registers for pinvoke wrappers.
18794
18795 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18796
18797         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18798
18799 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18802         wrapper to mono_jit_thread_attach.
18803
18804         * mini.c (mini_jit_thread_attach): New jit icall.
18805
18806         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18807         native->managed wrappers.
18808
18809         * exceptions.cs: Add new regression test.
18810
18811         * mini.c (optimize_branches): Check regions in the cbranch to throw
18812         block case as well. Fixes #73242.
18813
18814 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18815
18816         * mini.c: thread safety fixes.
18817
18818 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18821         patching stuff, since delegates use jump trampolines so there is
18822         no caller.
18823
18824         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18825         jump trampolines.
18826         
18827         * tramp-amd64.c: Fix build.
18828
18829         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18830         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18831
18832         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18833         Rename this to mono_arch....
18834         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18835
18836         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18837
18838         * mini-amd64.c (emit_call): If both the caller and the callee is
18839         guaranteed to have 32 bit addresses, emit a normal call.
18840
18841         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18842
18843         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18844         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18845         method_ptr inside delegates.
18846
18847 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18850         invalidated. Fixes #73001.
18851
18852         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18853
18854         * mini-x86.c: Only use stdcall for pinvokes on windows.
18855
18856 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18857
18858         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18859         * mini-x86.c: remove unreliable __thread var offset detection,
18860         use the correct accessors and enable by default.
18861
18862 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18863
18864         * mini.c (mono_jit_free_method): Fix memory leak.
18865
18866 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18869
18870 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * cpu-amd64.md: Fix lengths of atomic opcodes.
18873
18874 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18875
18876         * driver.c: try to not imply using ICU is any good.
18877
18878 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18879
18880         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18881         functions as inline ops.
18882
18883         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18884         some Interlocked functions as inline ops.
18885
18886         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18887
18888         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18889
18890         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18891
18892         * mini.c: Add support for OP_NOT_TAKEN.
18893
18894         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18895         structures in registers for pinvoke wrappers.
18896
18897         * mini-amd64.c: Fix warnings.
18898
18899 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18900
18901         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18902
18903         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18904
18905         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18906         address instead of loading the address from it.
18907
18908         * mini-x86.c: Add support for returning small structs in registers
18909         on Win32. Fixes part of #70864.
18910         
18911 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * trace.c (get_token): Improve error checking.
18914
18915 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18916
18917         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18918
18919 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18920  
18921         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18922         it can be reused for MonoClass.
18923         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18924         _LINKDEMAND.
18925
18926 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18927
18928         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18929         instead of a MonoReflectionMethod. The method information wasn't used
18930         when displaying SecurityException details (but will be now).
18931
18932 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18933
18934         * Makefile.am : windows build fix.
18935
18936 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18937
18938         * iltests.il: Add new regression test.
18939
18940         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18941         #72522.
18942
18943 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18944  
18945         * mini.c: Moved linkdemand check into helper function check_linkdemand
18946         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18947         LDFTN, LDVIRTFTN).
18948
18949 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18950
18951         * declsec.c: Added statistics counter for different kinds of 
18952         LinkDemands.
18953         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18954         (and commented) declaration.
18955         * mini.c: Added statistics counter for security Demand code 
18956         generation. Added display of security statistics.
18957
18958 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18959
18960         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18961         Fix compilation errors under gcc-2.95.
18962
18963 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18964
18965         * mini.c, driver.c: Use the new jit trampoline hashtable
18966
18967 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18968
18969         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18970
18971 2005-02-11  Martin Baulig  <martin@ximian.com>
18972
18973         * debug-mini.c (mono_debug_close_method): Free the line number array.
18974
18975 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18978         icalls.
18979
18980         * mini.h: Bump AOT file format version. 
18981
18982 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18983
18984         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18985         APTC and P/Invoke.
18986         * declsec.h: Added macros to get/set lazyly initialized security 
18987         informations about assemblies. Added new enum for different type of
18988         possible LinkDemand violation. Added function to check LinkDemands.
18989         * mini.h: Added a field to MonoCompile to hold any security violation
18990         detected when JITting a method (so it can be thrown later).
18991         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18992         and CEE_CALLVIRT. Added code to throw exception at the end of
18993         mini_method_compile (note: the exception is unhandled right now).
18994
18995 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18996
18997         * mini.c, jit-icalls.c: use the managed implementation of
18998         memset for initobj and memset, to avoid managed <-> unmanaged
18999         transitions.
19000
19001 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19004         optimization if it would need a GOT var.
19005
19006         * basic.cs: Add tests for constant propagation and switch statements.
19007
19008         * ssa.c: Fix out-of-range constant propagation and switch statements.
19009
19010 2005-02-09    <vargaz@freemail.hu>
19011
19012         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19013
19014 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19017
19018 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19019
19020         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19021
19022 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19023
19024         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19025         arithmetic operations.
19026
19027 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19028
19029         * mini-ppc.c: add a workaround for broken user code that
19030         DllImports vararg functions with non-vararg signatures.
19031
19032 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19033
19034         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19035         meaningfull error message for assemblies written in Managed C++.
19036
19037         * tramp-amd64.c mini-amd64.h: Add support for 
19038         create_trampoline_from_token ().
19039
19040         * aot.c mini-x86.c abcremoval.c: Applied patch from
19041         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19042
19043 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19044
19045         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19046         which takes a MonoImage/token as parameter instead of a MonoMethod.
19047
19048         * aot.c: Use the new trampoline for initializing vtables.
19049
19050         * aot.c: Add support for ldfld/stfld_remote wrappers.
19051
19052         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19053         rules for compare <MEM>, IMM.
19054
19055         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19056
19057         * aot.c: Handle inherited finalizers correctly.
19058
19059 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * inssel.brg (stmt): Add a missing _setup_... ().
19062
19063         * aot.c: Save some parts of the class state to the AOT file and use it
19064         to recompute that state when a class is initialized.
19065
19066         * mini.c: Install AOT hooks into the runtime.
19067
19068         * mini.h: Bump AOT file format version.
19069         
19070         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19071         Fixes #72148.
19072
19073         * iltests.il: Add new test.
19074
19075 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19076
19077         * mini.c: fix typo.
19078
19079 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19080
19081         * mini.c: setup the statistical profiler in the thread attach
19082         callback to cope with the new single thread code.
19083
19084 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19085
19086         * mini-ppc.c: ensure we have enough room for the profiler
19087         calls (fixed bug#72084).
19088
19089 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19090
19091         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19092         it.
19093
19094 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19095
19096         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19097
19098 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19099
19100         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19101         to succesfully execute parrotbench).
19102         * ssapre.h: Likewise.
19103
19104 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19105
19106         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19107         variable for stores to method arguments (fixes a SSAPRE issue).
19108
19109 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19110
19111         * mini.c: handle value types in dup, fixes gen-112.cs.
19112
19113 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19116         sequence for calls in dynamic methods to avoid thunks.
19117
19118 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19119
19120         * mini.c: correctly remove dynamic methods from the hashtable.
19121
19122 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19123
19124         * driver.c: Disabled SSAPRE until fix the bug that appears
19125         in IronPython's parrotbench.
19126
19127 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19128
19129         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19130
19131         * mini.c (mono_method_to_ir): Revert the previous change.
19132         
19133         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19134         when AOT compiling.
19135
19136         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19137         mono_jit_info_table_find () etc. when running under valgrind.
19138
19139         * inssel.brg: Fix warnings.
19140
19141         * mini-exceptions.c: Fix warnings.
19142
19143 2005-01-31  Martin Baulig  <martin@ximian.com>
19144
19145         * driver.c (compile_all_methods_thread_main): Don't try to compile
19146         generic methods or anything which has type parameters.
19147
19148 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19149
19150         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19151
19152         * TestDriver.cs: Add --verbose flags.
19153
19154         * graph.c ssa.c: Fix 64 bit warnings.
19155         
19156         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19157         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19158         Fix 64 bit warnings.
19159
19160         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19161         variable not spotted by gcc.
19162         
19163         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19164         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19165         X86_COMPARE_MEMBASE opcodes.
19166
19167         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19168
19169 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19170
19171         * *: MonoMethod->signature might be NULL now. You *MUST* use
19172         mono_method_signature.
19173
19174 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * driver.c (compile_all_methods_thread_main): Compile the methods
19177         without invoking cctors.
19178
19179 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19180
19181         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19182         * basic-calls.cs: test for the above.
19183
19184 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19185
19186         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19187         MonoJitInfo changes.
19188
19189 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19190
19191         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19192         eagerly if it contains dynamic methods.
19193         
19194         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19195
19196         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19197         trace, it is now computed by an icall from trace_ips.
19198         
19199         * mini-exceptions.c: Fix a warning.
19200
19201 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini-exceptions.c: don't bother getting stack trace info if
19204         it's not going to be used.
19205
19206 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19207
19208         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19209         ssapre-mini-ops.h.
19210
19211 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19212
19213         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19214
19215         * aot.c: Avoid calling mono_method_get_header () if not needed.
19216
19217         * mini.h: Bump AOT file format version.
19218         
19219         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19220
19221         * mini.c (mono_print_tree): Print more info for calls.
19222
19223 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19224
19225         * declsec.h: Remove warning by adding missing include for marshal.h
19226
19227 2005-01-26  Martin Baulig  <martin@ximian.com>
19228
19229         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19230         `ip' twice.
19231
19232 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19233
19234         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19235         flags.
19236
19237         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19238
19239         * aot.c (mono_compile_assembly): Fix a warning.
19240
19241 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19242
19243         * declsec.c: Look for security attributes on the original MonoMethod 
19244         (and not the wrapped one). This fix permissions on icalls.
19245
19246 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19249
19250         * mini.c (mono_allocate_stack_slots): Add a fixme.
19251
19252         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19253
19254 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19255
19256         * inssel.brg: optimize casts of sealed types (more
19257         optimizations waiting for fixes in remoting).
19258
19259 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19260
19261         * inssel.brg (stmt): Add another dummy rule.
19262
19263         * driver.c: Fix warnings.
19264
19265         * driver.c (mono_main): If running under valgrind, instruct glib to use
19266         the system allocation functions so valgrind can track the memory
19267         allocated by the g_... functions.
19268
19269         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19270
19271         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19272
19273         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19274
19275         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19276         variables in try regions.
19277
19278         * mini.c (mini_method_compile): Don't disable optimizations on large
19279         methods when AOT compiling.
19280
19281         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19282         allocate stack slots. Not yet used.
19283
19284 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19285
19286         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19287
19288 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19289
19290         * mini-ppc.c: make the branch info relative as the code
19291         buffer can be reallocated.
19292
19293 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19294
19295         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19296         * driver.c: Removed the AOT/security restriction. Now initialize the
19297         security manager (in metadata) if --security is used.
19298         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19299         rather than the pointer to declarative security, when AOT is used.
19300
19301 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19302
19303         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19304         basic blocks, reduced intrinsic exception throwing code size.
19305
19306 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19307
19308         * driver.c (mini_usage): Reorder the usage screen.
19309
19310 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19311
19312         * mini.c (mono_resolve_patch_target): Fix warning.
19313
19314 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19317         previous patch.
19318
19319         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19320
19321         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19322         breaks the amd64 build.
19323
19324         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19325         register allocation. Fixes #71454.
19326
19327         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19328
19329         * arrays.cs: Add new regression test.   
19330
19331 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19332
19333         * ssapre.c: Turned usage of snprintf to GString.
19334         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19335         (I left it on by mistake in my previous commit).
19336
19337 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19338
19339         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19340         on cond branch optimization (fixes bug# 71515).
19341
19342 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19343
19344         * abcremoval.c: Fixed bug 71062.
19345         * abcremoval.h: Likewise.
19346
19347 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19348
19349         * mini.c: Added a new functionality to optimize_branches, the removal
19350         of useless basic blocks, and fixed some problem in the removal of
19351         critical edges; some utility functions added for both purposes.
19352         * ssapre.c: Added complex expression support, and fixed bug 70637.
19353         * ssapre.h: Likewise.
19354         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19355         enabled in SSAPRE.
19356         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19357         * driver.c: Re-enabled SSAPRE.
19358
19359 2005-01-19  Martin Baulig  <martin@ximian.com>
19360
19361         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19362         the result of mono_get_method_constrained().
19363
19364 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19365
19366         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19367         manager.
19368
19369 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19370
19371         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19372         be detected.  Fixes #59296.
19373
19374 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19375
19376         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19377         which can happen. Fixes #71361.
19378
19379 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19382         manager.
19383
19384 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19385
19386         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19387         appdomain-unload.exe to fail.
19388         
19389         * mini.c: Fix some memory leaks.
19390
19391 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19392
19393         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19394         Fixed bug and sped up some codepaths.
19395
19396 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * mini.c: Fix some memory leaks.
19399
19400         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19401         conversion.
19402
19403         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19404
19405         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19406         #71320.
19407
19408         * iltests.il: Add regression test for #71320.
19409
19410 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19411
19412         * mini.c (mono_codegen): Fix installation of profiler hooks.
19413
19414         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19415
19416 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19417
19418         * mini.h, mini.c, cfold.c: optimize access to enum
19419         readonly fields, too. Eval conditional branches if possible
19420         to perform unreachable code removal in more cases.
19421
19422 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19425
19426         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19427         code manager.
19428
19429         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19430         WinXP DEP. Fixes #71244.
19431
19432 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19433
19434         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19435
19436 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19439
19440 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19441
19442         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19443         changes.
19444
19445         * mini.h: Bump AOT version.
19446
19447         * mini.h (MonoCompile): Change exvar to a hash table.
19448
19449         * mini.c: Allocate a separate exvar for each handler block.
19450
19451         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19452
19453         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19454         ex var with the pending exception and only throw if the two are equal.
19455         Fixes #68552.
19456         
19457         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19458
19459         * mini-x86.c: Fix warnings.
19460
19461         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19462         used by all the ports now.
19463
19464         * aot.c: Add write-symbols and save-temps options.
19465
19466 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19469
19470 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19471
19472         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19473         operations.
19474
19475         * tramp-s390.c: Check vtable slot belongs to the domain.
19476
19477         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19478         as per other platforms.
19479
19480         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19481
19482 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19483
19484         * driver.c: we don't run the Main() code in a subthread anymore.
19485
19486 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19487
19488         * mini.c: added experimental rtc support in the statistical
19489         profiler: if the user has the permission, more accurate statistics
19490         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19491         The MONO_RTC value must be restricted to what the linux rtc allows:
19492         power of two from 64 to 8192 Hz.
19493
19494 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19497
19498 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19499
19500         * mini-ppc.c: better icache flush for smp.
19501
19502 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19503
19504         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19505
19506         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19507         amd64 port, not yet used.
19508
19509 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19512         a struct type.
19513
19514 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19515
19516         * driver.c: Added --security option to activate the security manager.
19517         Right now this will allow code generation for declarative demands and
19518         is disabled when AOT is specified.
19519         * mini.c: Add code generation for declarative security demands.
19520         * mini.h: Add mono_use_security_manager as an extern gboolean.
19521
19522 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19525         emitting more dense assembly code.
19526
19527         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19528         exception throwing stuff.
19529
19530 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19531
19532         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19533         dead code.
19534
19535         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19536         left in by mistake.
19537
19538         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19539         fixed.
19540
19541         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19542
19543         * tramp-*.c: Only patch vtable slots if the object is in the current
19544         domain. Fixes appdomain-unload.exe.
19545
19546         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19547         
19548         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19549         x86 branch.
19550
19551 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * mini.c (reverse_branch_op): New helper function.
19554
19555         * mini.c (optimize_branches): Run the new optimization only on 
19556         platforms which support it. Also reverse all kinds of branches.
19557
19558         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19559
19560         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19561         a throw statement.
19562
19563         * mini.c (optimize_branches): Reverse not-equals branches if the false
19564         bblock is a throw. This happens a lot of time with argument checking in
19565         corlib.
19566
19567         * mini.c (mono_codegen): Add support for placing basic blocks after
19568         the function epilogue.
19569
19570         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19571         function epilogue.
19572         
19573 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19574
19575         * mini.c (setup_stat_profiler): Only set this up if the platform
19576         supports ITIMER_PROF.
19577
19578 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
19581         previous patch.
19582
19583         * inssel.brg: Fix a warning.
19584
19585 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19586
19587         * mini.c: added support for statistical profiler 
19588         (run with: --profile=default:stat).
19589
19590 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
19593
19594         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
19595
19596         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
19597         related to global registers from the amd64 port.
19598
19599 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19600
19601         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
19602
19603         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
19604         with global registers.
19605         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
19606
19607         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
19608
19609 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * debug-mini.c (encode_value): Fix off-by-one.
19612
19613         * aot.c (encode_value): Likewise.
19614
19615         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19616
19617 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19620         AOT.
19621
19622         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19623         
19624         * aot.c (emit_method_info): Increase size of temp buffer.
19625
19626         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19627         the AOT case.
19628
19629 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * aot.c (emit_method_info): Fix build.
19632         
19633         * aot.c: Further rework of the AOT file format to reduce the size of
19634         the method info data.
19635
19636         * mini.h: Bump AOT file format version.
19637
19638 2004-12-27  Martin Baulig  <martin@ximian.com>
19639
19640         * mini.c (mini_get_method): New static method; call
19641         mono_get_method_full() and mono_get_inflated_method().
19642         (mono_method_to_ir): Use mini_get_method() instead of
19643         mono_get_method_full(). 
19644
19645 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19646
19647         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19648
19649 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19650
19651         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19652
19653         * inssel-amd64.brg: Add some optimization rules.
19654
19655 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19656
19657         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19658         standard not GC'd stuff is fine.
19659
19660 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19661
19662         * aot.c: Rework the AOT file format to get rid of most of the global
19663         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19664
19665         * mini.h: Bump AOT file format version.
19666         
19667 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * mini.h: Bump AOT file format version.
19670
19671         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19672         address is inside a GOT.
19673
19674         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19675
19676         * cpu-pentium.md: Increase the maximum size of some instructions which
19677         might involve a got access.
19678         
19679         * mini.c (get_method_from_ip): Another debug helper function.
19680
19681         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19682         when got var accesses are created during the decompose phase.
19683
19684         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19685
19686         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19687         argument mini_compile_method and to MonoCompile, and use this to
19688         determine whenever a given method is compiled for AOT. This allows the
19689         other methods compiled during AOT compilation to be free of AOT stuff,
19690         so the backends does not need to add special support for them by
19691         creating a fake GOT etc.
19692
19693         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19694         longer needed.
19695
19696 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19697
19698         * mini.c (mono_method_to_ir): It turns out that some of the
19699         x-appdomain wrappers are lax with types, so just ignore this for
19700         all wrappers.
19701
19702         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19703         at the vtable->klass. If it is non-shared code we can just use the
19704         vtable.
19705
19706 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19707
19708         * mini-ppc.c: access MonoDomain from tls, too.
19709
19710 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19711
19712         * declsec.c: Removed unused variable (and related warning ;-)
19713
19714 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19715
19716         * iltests.il: New test for LDELEMA on an array of ref types.
19717
19718         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19719         all ldelema's on reftypes.
19720         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19721         it was the wrong place to put it.
19722
19723         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19724         register to pop to make this cleaner, at the request of Paolo.
19725
19726 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19727
19728         * mini-ops.h (OP_GETHASHCODE): New op.
19729
19730         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19731
19732         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19733         operation.
19734
19735         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19736         by 25%.
19737         
19738         * mini-x86.c (mono_arch_output_basic_block): Rather than
19739
19740         add ebp, 4
19741
19742         Emit
19743
19744         pop edx
19745
19746         The first is 3 bytes while the second is 1. This saves 36 kb on
19747         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19748         see a small boost because of icache locality.
19749
19750         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19751
19752 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19753
19754         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19755         started code sharing with the generic code.
19756
19757 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19758
19759         * mini-ppc.c, cpu-g4.md: added code for direct access to
19760         tls data slots.
19761
19762 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19763
19764         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19765          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19766         to OP_TLS_GET.
19767
19768 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19769
19770         * declsec.c|h: Added functions to cache the declarative stack modifiers
19771         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19772         structure.
19773         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19774         created. Register internal calls for System.Security.SecurityFrame::
19775         _GetSecurityFrame and _GetSecurityStack.
19776         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19777         the definitions for the new stack walk/callback mechanism.
19778         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19779         first security frame for LinkDemands and InheritanceDemands) and
19780         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19781         from lupus.
19782         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19783         walk initialization (lupus).
19784
19785 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19786
19787         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19788         idiom.
19789         (handle_loaded_temps): Do not create a temporary variable for
19790         things that we know are temps. They will never be modified.
19791         (mono_spill_call): Set MONO_INST_IS_TEMP
19792         (mono_emulate_opcode): ditto
19793         (emit_tree): ditto
19794         (mono_method_to_ir.CEE_DUP): ditto
19795
19796 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19797
19798         * mini.c (type_to_eval_stack_type): Make this handle the void type
19799         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19800         (emit_tree): use ip_in_bb to special case some common idioms
19801         Update all callers to pass in the IP.
19802         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19803
19804         This gives us a nice 2% speedup in mcs bootstrap.
19805
19806         * mini-x86.c (peephole_pass): Peephole pass to make
19807         mov  [foo], eax
19808         push [foo]
19809
19810         into
19811
19812         mov [foo], eax
19813         push eax
19814
19815         * mini.c (ip_in_bb): new method.
19816         (mono_method_to_ir): use this method rather than doing the hash
19817         lookup ourselves.
19818
19819         * linear-scan.c (mono_linear_scan): When expiring actives, you
19820         don't need to keep around variables that expire on this
19821         instruction. This makes it so that:
19822              a = b + 1
19823         will turn into:
19824              store (ebx add (ebx, 1))
19825         which will become
19826              add ebx, 1
19827
19828 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19831         combination to avoid doing two copies. Fix up problems with previous
19832         patch.
19833
19834         * mini.c: Fix 64 bit warnings.
19835
19836         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19837
19838 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19839
19840         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19841         changes from the x86 code.
19842
19843         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19844
19845 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19848         throwing code to reduce its size, unify the AOT and non-aot code and 
19849         get rid of relocations in the AOT case.
19850
19851         * mini-x86.h mini.c exceptions-x86.c 
19852         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19853         raise corlib exceptions which doesn't require relocations in the 
19854         caller.
19855
19856         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19857
19858 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19859
19860         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19861         needed.
19862
19863         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19864         in the AOT case.
19865
19866 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19867
19868         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19869         with add function when used from Inc/dec atomic 
19870         functions. Re-enabled optimization on x86.
19871         * mini-ops.h: renamed atomic_add functions to
19872         allow _add to match the Interlocked::Add and
19873         _add_next to match Interlocked::Inc/Dec.
19874
19875 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19876
19877         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19878         linking of BBs to the end BB, and enabled SSAPRE also with
19879         consprop and copyprop (which was prevented by that bug).
19880
19881 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19882
19883         * mini-x86.c: disabling the Interlocked optimizing code. 
19884
19885 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19888         file version check.
19889         
19890 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19891
19892         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19893         interlocked optimization due lack of support on x86, rewrote 
19894         exchange to take into account that base may be in eax.
19895         
19896         xsp works again; activated Interlocked optimizing code.
19897         
19898 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19901
19902 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * mini-ops.h: Add new opcodes.
19905
19906         * mini.h: Add new patch types. Add got_var to MonoCompile.
19907
19908         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19909         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19910         make it work with all kinds of patchable code.
19911
19912         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19913         address of the GOT, and referencing entries in the GOT.
19914
19915         * mini.c: Add code to load the GOT address if needed by an opcode.
19916
19917         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19918         independent AOT code on the x86 using an elf-style Global Offset Table.
19919
19920 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19921
19922         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19923
19924 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19925
19926         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19927         when running xsp.
19928
19929 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19930
19931         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19932         of Interlocked:Increment/Decrement/Add as inline ops.
19933         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19934
19935 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19936
19937         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19938         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19939
19940 2004-12-12  Duncan Mak  <duncan@ximian.com>
19941
19942         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19943         again. `patch_info->table_size' is no longer valid after Zoltan's
19944         commit #37636.
19945
19946 2004-12-12  Martin Baulig  <martin@ximian.com>
19947
19948         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19949         if we are the "real" method, ie. not an inlined method inside it.
19950
19951 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19952
19953         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19954         before we look in the special fields table. This fixes
19955         ../tests/thread-static-init.cs.
19956
19957 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19958
19959         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19960         for Array get_Rank and get_Length. Fixes bug #70465.
19961
19962 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19965         separate structure to reduce the size of MonoJumpInfo.
19966
19967 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19968
19969         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19970
19971 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19972
19973         * mini.c (mini_get_inst_for_method): Changed to allow ports
19974         to return a MonoInst instead of opcode 
19975         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19976         
19977         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19978         Allow ports to return a created MonoInst instead of op-code, will enable
19979         new optimizations.
19980         (renamed mini_get_opcode_for_method to better reflected the functionality)
19981
19982 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19983
19984         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19985
19986 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19989         Fixes #69985.
19990
19991 2004-12-08  Martin Baulig  <martin@ximian.com>
19992
19993         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19994         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19995
19996 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19999         correctly.
20000
20001         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20002         arithmetic.
20003
20004 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20005
20006         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20007
20008 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20009
20010         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20011         bug introduced by the previous patch.
20012
20013 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20014
20015         * mini-ppc.c, objectc.cs: handle large structs passed by value
20016         (fixes bug #69972).
20017
20018 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20019
20020         * mini-ppc.c: OP_ARGLIST implementation from
20021         Geoff Norton  <gnorton@customerdna.com>.
20022
20023 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20024
20025         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20026         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20027
20028 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20029
20030         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20031
20032 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20033
20034         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20035         support.
20036
20037 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini-sparc.c: Zero out localled-ed memory.
20040
20041         * iltests.il: Add tests for zeroing out localloc-ed memory.
20042
20043 2004-12-04  Martin Baulig  <martin@ximian.com>
20044
20045         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20046         mono_method_get_signature_full().       
20047
20048 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20049
20050         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20051         and some utility functions (always for SSAPRE), integrated SSAPRE.
20052         * mini.h: Likewise.
20053         * driver.c: Added ssapre option.
20054         * ssa.c: Small fix on OP_ARG handling.
20055         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20056         * Makefile.am: Likewise.
20057
20058 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20061         now in the xp code.
20062
20063         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20064         icall.
20065
20066 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20067
20068         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20069         
20070         * cpu-s390.md : Increase instruction length of oparglist.
20071
20072         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20073
20074 2004-11-30  Martin Baulig  <martin@ximian.com>
20075
20076         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20077         virtual generic methods.  We call a special helper_compile_generic_method()
20078         icall to retrieve the method from the vtable, inflate and compile
20079         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20080
20081         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20082
20083 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20086
20087 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20090         Fixes #69929.
20091
20092 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20093
20094         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20095         platforms with PIC aot.
20096
20097 2004-11-28  Martin Baulig  <martin@ximian.com>
20098
20099         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20100         Fixes gen-112.cs.
20101
20102 2004-11-28  Martin Baulig  <martin@ximian.com>
20103
20104         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20105         the result of mono_type_get_underlying_type() to check whether
20106         we're byref.
20107
20108 2004-11-26  Martin Baulig  <martin@ximian.com>
20109
20110         * mini.c
20111         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20112         in the g_assert().
20113
20114 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20117         the same way as the other arguments so they won't get clobbered.
20118
20119         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20120         calls through R11 since it is clobbered by the trampoline code.
20121
20122 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20123
20124         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20125         pick up in-tree mscorlib.dll.
20126
20127 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20128
20129         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20130
20131         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20132         runtime data/code are now stored in a table similar to the GOT in ELF. 
20133         This allows the code itself to be position independent.
20134
20135         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20136         loading changes.
20137
20138         * aot.c: Attach ELF type (object/function) directives to all global
20139         symbols.
20140
20141         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20142
20143         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20144
20145         * mini-amd64.h: Turn on PIC AOT code.
20146
20147         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20148         returning the offset within an OP_AOTCONST instruction where the GOT
20149         offset needs to be added.
20150
20151         * mini.h: Bump AOT file format version.
20152
20153 2004-11-25  Martin Baulig  <martin@ximian.com>
20154
20155         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20156         uninflated generic methods.
20157
20158 2004-11-25  Martin Baulig  <martin@ximian.com>
20159
20160         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20161
20162 2004-11-24  Martin Baulig  <martin@ximian.com>
20163
20164         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20165         original klass (this only applies for generic instances).
20166
20167 2004-11-24  Martin Baulig  <martin@ximian.com>
20168
20169         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20170         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20171         that array).
20172
20173 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20176         localloc. Fixes #69678.
20177
20178         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20179         
20180 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20181
20182         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20183         used SSE registers on pinvoke calls. Fixes #69774.
20184
20185 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20186
20187         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20188         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20189
20190 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20191
20192         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20193         Refer directly to the mcs/ tree.
20194
20195 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20196
20197         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20198         Check if a trampoline for a synchronized method is required. 
20199
20200 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20201
20202         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20203         with localloc if needed. Throe arithmetric exception in
20204         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20205         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20206
20207 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20208
20209         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20210         types before switching on type.  Fixes #69622.
20211
20212 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20213
20214         * Makefile.am (check-local): New.  Integrate into 'make check'.
20215         (MCS,RUNTIME): Define using in-tree mono and mcs.
20216         (ILASM): New.
20217         (%.exe): Use $(ILASM).
20218
20219 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20220
20221         * mini-ppc.c: adjust initial prolog size (bug #69691).
20222
20223 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20224
20225         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20226         #69664.
20227
20228 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20229
20230         * Makefile.am (clean-local): Rename from 'clean'.
20231
20232 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20233
20234         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20235         to mono_arch_is_int_overflow. 
20236         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20237         SIGFPE events.
20238
20239 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20240
20241         * declsec.c|h: New files to support declarative security attributes.
20242         Added function to check if a method has (applicable) security.
20243         * mini.c|h: Add check for declarative security attributes in
20244         mono_method_check_inlining.
20245         * Makefile.am: Added declsec.c and declsec.h to the build.
20246
20247 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20248
20249         * mini.c, mini.h: update to keep dynamic code info per-domain.
20250
20251 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20254         (mini_init): Get rid of it from here too.
20255
20256 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20257
20258         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20259         implemented OP_RETHROW (patch by Geoff Norton
20260         <gnorton@customerdna.com>).
20261
20262 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20263
20264         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20265         between appdomains.  Fixes appdomain-unload on PPC.
20266
20267 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20268
20269         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20270         mini-exceptions.c: handle the new wrapper types.
20271         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20272         token value as a MonoClass* when compiling a wrapper.
20273         mono_jit_create_remoting_trampoline now takes an additional
20274         MonoRemotingTarget parameter.
20275         
20276 2004-11-10  Martin Baulig  <martin@localhost>
20277
20278         * mini.c (mono_method_to_ir): Use `generic_container->context'
20279         rather than creating a new one.
20280
20281 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20282
20283         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20284
20285         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20286
20287 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20290         the experimental aot cache stuff.
20291
20292 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20293
20294         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20295         mini-exceptions.c: update to exception clause structure changes.
20296
20297 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * exceptions-x86.c (throw_exception): Fix warnings.
20300
20301         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20302         for OP_RETHROW.
20303
20304 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20305
20306         * exceptions-sparc.c (get_throw_exception): Really fix this.
20307
20308 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20309
20310         * tramp-*.c: we no longer support icalls without wrappers, so
20311         a bit of code can be removed here
20312
20313 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20314
20315         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20316         patch.
20317
20318         * cpu-sparc.md: Add op_rethrow.
20319
20320         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20321
20322         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20323
20324         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20325         * mini-ops.h: Add OP_RETHROW.
20326
20327         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20328
20329         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20330
20331 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20332         
20333         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20334         Makes the output much easier to read
20335
20336 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20337
20338         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20339         prevents another huge leak when compiling with ssa. Secondly, the
20340         performance of doing this rather than freeing the lists is much
20341         better. GList does a lock every time you allocate a list link,
20342         so that it can use a memory pool. So, it is better to just use
20343         a memory pool of our own.
20344         
20345         * ssa.c, linear-scan.c: replace g_list_remove_link with
20346         g_list_delete.  The remove one does not free the GList, so we were
20347         leaking memory. On -O=all --compile-all with corlib, this cut down
20348         3 MB of allocations.
20349
20350 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20353
20354         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20355
20356         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20357         into a new function mono_create_jit_trampoline ().
20358
20359 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20360
20361         * trace.c (get_spec): Allow tracing of classes without a namespace.
20362
20363 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20364
20365         * mini.c: Fix pointer overwrite in mini_method_compile.
20366
20367 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20368
20369         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20370         The darwin ABI needs some special handling for 1 and 2 byte structs
20371         Lets use lbz/lhz instead of lwz everywhere.
20372         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20373         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20374         Use stb/sth for the former, and put the latter always on stack instead of in
20375         argument registers.
20376
20377 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * trace.c (is_filenamechar): Add '_'.
20380
20381 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20382
20383         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20384
20385         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20386
20387 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20390         depends on libmonogc. Fixes #68805.
20391
20392 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20393
20394         * mini.c (mono_jit_free_method): Provide extra information for
20395         this error.  Currently this leaks, but will be turned into a
20396         developer option in the future.
20397
20398 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20401
20402 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20403
20404         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20405         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20406         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20407
20408 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20411         trampolines for AOT code.
20412
20413 2004-10-22    <vargaz@freemail.hu>
20414
20415         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20416         constructed types. Fixes #68136.
20417
20418 2004-10-21  Martin Baulig  <martin@ximian.com>
20419
20420         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20421         if it returns true, unwind the stack to the call instruction.
20422
20423 2004-10-21    <vargaz@freemail.hu>
20424
20425         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20426
20427         * mini.h: Bump AOT version number.
20428
20429         * objects.cs: Add another test for unbox trampolines.
20430
20431         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20432         valuetype methods.
20433
20434 2004-10-20    <vargaz@freemail.hu>
20435
20436         * driver.c: Add SHARED to the set of optimizations tested.
20437
20438         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20439
20440         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20441         used by CEE_NEWARR.
20442
20443         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20444
20445 2004-10-20  Martin Baulig  <martin@ximian.com>
20446
20447         * mini-exceptions.c (mono_handle_exception): Call
20448         mono_debugger_handle_exception() to tell the debugger about
20449         catch/finally clauses.
20450
20451 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20452
20453         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20454
20455         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20456         #68447.
20457
20458 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20459
20460         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20461         methods as their native size, fixed bug #57543, #57545.
20462         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20463         This saves a temporary register and mullw call down into 1 (minor perf
20464         increase for cases like sum = sum * 5;  This use to translate into:
20465             li r11,5
20466             mullw r28,r28,r11
20467         It now translates to
20468             mulli r28,r28,5
20469
20470 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20471
20472         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20473         #68388.
20474
20475 2004-10-11  Martin Baulig  <martin@ximian.com>
20476
20477         * mini.c (mono_method_to_ir): If we're a generic method, get the
20478         MonoGenericContainer from our MonoMethodNormal and create a
20479         MonoGenericContext from it.
20480
20481 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20482
20483         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20484
20485         * basic-long.cs: Add test for checked i8->i2 cast.
20486
20487 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20488
20489         * inssel-ppc.brg: added a couple of speedup rules.
20490
20491 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20492
20493         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20494         to speed up rebuilds.
20495
20496 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20497
20498         * mini-s390.c: Minor fix to OP_OR_IMM.
20499
20500 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20501
20502         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20503         better. Fixes appdomain-unload.exe on sparc.
20504
20505 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20506
20507         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20508         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20509         see bug 67324.
20510
20511 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20512
20513         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20514
20515 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20516
20517         * mini.c: Always generate a field read/write wrapper for members
20518         of the class MarshalByRefObject since the actual instance could
20519         be a CBO.
20520
20521 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20522
20523         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20524
20525 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * driver.c mini.h trace.c: Move the setting of the main assembly into
20528         a separate function called mono_trace_set_assembly () and call it after
20529         actually loading the main assembly. Fixes #66872.
20530
20531 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20532
20533         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20534         using the code manager.
20535
20536 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20537
20538         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20539
20540 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * cpu-amd64.md: Fix bug in previous patch.
20543         
20544         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20545         #66650.
20546
20547 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20548
20549         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20550         mini-exceptions.c: updates for changed stack walk interface.
20551
20552 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20553
20554         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20555
20556 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20557
20558         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20559
20560 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20563         since assemblies can't be unloaded.
20564         
20565 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * cpu-amd64.md: Fix more instruction lengths.
20568
20569         * cpu-amd64.md: Fix lengths of some instructions.
20570
20571 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20572
20573         * inssel.brg: Make the array ldelema check aot friendly.
20574
20575 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20576
20577         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
20578
20579         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
20580
20581 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * mini-x86.c: Fix build.
20584
20585         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
20586         mono_type_get_underlying_type () helper function to simplify code.
20587         
20588 2004-09-09  Martin Baulig  <martin@ximian.com>
20589
20590         * mini-amd64.c: Don't access `type->data.klass' directly, call
20591         mono_class_from_mono_type() instead since the type may be a
20592         generic instance.
20593
20594 2004-09-09  Martin Baulig  <martin@ximian.com>
20595
20596         * mini-amd64.c (get_call_info): Fix support for generic instances.
20597         (add_valuetype): Use mono_class_from_mono_type() to get the class
20598         since we can be a generic instance.
20599
20600 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
20601
20602         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
20603
20604 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20605
20606         * liveness.c: reset spill costs on each scan: bug 62107
20607
20608 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
20609
20610         * exceptions-sparc.c (mono_arch_find_jit_info): remove
20611         unnecessary line that doesn't compile
20612
20613 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20614
20615         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20616         trampolines, make them call an error function so people can fix their
20617         code.
20618
20619 2004-09-06  Martin Baulig  <martin@ximian.com>
20620
20621         * mini.c (mono_method_to_ir): When initializing locals, handle a
20622         generic instances like a valuetype if it's a valuetype and like a
20623         class if it's a class.
20624
20625 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20626
20627         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20628         stack. Fixes #64674.
20629
20630         * exceptions.cs: Add test for unwinding of call arguments.
20631
20632 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20633
20634         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20635         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20636         set the carry/borrow flag). The sparc and s390 implementations
20637         can now use optimized versions (and simplify the code). ppc bugfixes.
20638
20639 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20642
20643 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20644
20645         * inssel-amd64.brg: Remove leftover 32 bit rule.
20646
20647         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20648
20649 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20652         mono_arch_find_jit_info functions into a new function. Fix a memory
20653         leak.
20654
20655         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20656         refactored code.
20657         
20658 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20661         as well.
20662         
20663         * exceptions.cs: Add array size tests.
20664
20665         * mini.c: Allocate a separate icall wrapper for each arity of 
20666         mono_array_new_va. Fixes #59509.
20667
20668         * exceptions.cs: Add testcase for 64578.
20669
20670         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20671
20672         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20673         
20674 2004-09-02  Martin Baulig  <martin@ximian.com>
20675
20676         * mini.c (mono_method_to_ir): When initializing the locals, call
20677         handle_initobj() on the generic instance itself, not its
20678         underlying type.
20679
20680 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20681
20682         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20683         MonoJitInfo for dynamic methods.
20684
20685         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20686
20687         * mini.c: Add support for freeing JIT data for dynamic methods.
20688         
20689 2004-09-01  Martin Baulig  <martin@ximian.com>
20690
20691         * mini-x86.c (is_regsize_var): Added support for generic
20692         instances.
20693         (mono_arch_emit_prolog): Make this compile again, use
20694         `x86_push_imm_template (code)'.
20695
20696 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20697
20698         * mini-x86.c: make all push_imm instructions that get
20699         patched always emit the long form
20700
20701 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20704         in a per-domain hash.
20705
20706         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20707         types.
20708
20709 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20712         work.
20713         
20714         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20715         work.
20716
20717         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20718         Beginnings of SSE2 support.
20719
20720         * exceptions.cs: Add more tests for checked int<->uint casts.
20721
20722 2004-08-28  Martin Baulig  <martin@ximian.com>
20723
20724         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20725         generic instances.
20726
20727         * mini.c
20728         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20729         Handle generic instances recursively.
20730
20731 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20732
20733         * iltests.il: test for conv.u8 on a constant
20734
20735 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20736
20737         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20738         LCONV_x4 (shrun_32 (membase)).
20739
20740 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20741
20742         * inssel-x86.brg: c&p rules for push/setret of long
20743
20744 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20745
20746         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20747         compare (regvar, base)
20748
20749         * inssel-x86.brg: more burg love
20750
20751         * inssel.brg: more cleanup
20752
20753         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20754
20755 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20756
20757         * basic-long.cs, basic-calls.cs: new tests for optimization.
20758
20759 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20760
20761         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20762         patch.
20763
20764 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20765
20766         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20767         
20768 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20769
20770         * inssel.brg (mini_emit_memcpy): use 
20771         NO_UNALIGNED_ACCESS to disable memcpy optimization
20772
20773 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * mini-amd64.c: Handle generic types in various places.
20776
20777         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20778
20779 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20780
20781         * mini.c (handle_box): Fix warning.
20782
20783         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20784
20785         * mini-amd64.h: Enable the emit_state optimization.
20786
20787         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20788
20789         * mini-amd64.c: Add some new 64 bit peephole opts.
20790
20791         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20792
20793         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20794
20795         * mini-amd64.c: Register allocator fixes.
20796
20797         * mini.c: Add an optimization to emit_state to avoid allocation of new
20798         registers on some platforms.
20799
20800 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20801
20802         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20803
20804         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20805         allocation. Fixes #63085.
20806
20807         * basic-long.cs: Add new regression test.
20808
20809         * mini-amd64.c: Register allocator improvements.
20810
20811 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * mini-amd64.c (read_tls_offset_from_method): Add another code
20814         sequence.
20815
20816         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20817         instruction sequence for nullifying class init trampolines.
20818
20819         * objects.cs: Add new regalloc test.
20820
20821         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20822
20823 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20824
20825         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20826         
20827         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20828         arguments.
20829
20830         * driver.c: Fix profiling after TLS changes.
20831         
20832         * driver.c (mono_main): Set mono_stats.enabled if needed.
20833
20834         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20835         CEE_BOX.
20836
20837 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20838
20839         * mini-x86.c: use a 1 op rather than a 2 op tls access
20840         instruction -> faster.
20841
20842 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20843
20844         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20845         x86 backend.
20846
20847 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20848
20849         * exceptions-sparc.c (throw_exception): fix typo
20850
20851 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20852
20853         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20854         set tree->dreg correctly with tls. Allow any
20855         register to be used.
20856
20857         * mini-x86.c (read_tls_offset_from_method): add new code
20858         generation pattern seen with GCC.
20859
20860
20861 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20862
20863         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20864         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20865         exceptions-sparc.c: fix some performance issues in exception
20866         handling and setting of the stack trace for exceptions that were
20867         already thrown.
20868
20869 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20870
20871         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20872         x86 backend.
20873         
20874         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20875         registers.
20876
20877 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20878
20879         This patch inlines tls access, when possible.
20880         
20881         * mini.h: new arch functions for TLS intrinsics.
20882         All platforms updated with a stub.
20883
20884         * mini.c: use the new intrinsics
20885
20886         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20887         arch specific intrinsic for tls variables
20888
20889 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20892         under windows.
20893
20894 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20895
20896         * mini.c: thread local allocation
20897
20898 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20899
20900         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20901
20902         * Makefile.am: Link against the static version of libmonogc.
20903         
20904         * Makefile.am: Link the static versions of the convenience libraries
20905         into the mono executable.
20906
20907         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20908
20909 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20912         on integer overflow.
20913
20914         * mini-amd64.c: Reorganize function call code.
20915
20916         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20917
20918 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20919
20920         * inssel-x86.brg: use xor eax,eax.
20921         
20922         * basic.cs: new tests
20923
20924 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20927         in exception throwing code.
20928         
20929 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20930
20931         * inssel-x86.brg: use xor esi,esi.
20932
20933 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20934
20935         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20936         can trace methods compiled during mini_init () too.
20937
20938         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20939         CEE_CONV_U4.
20940
20941 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20942
20943         * Makefile.am: static link on x86 (r=zoltan)
20944
20945 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20948         code since it causes some programs to fail.
20949
20950 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20953
20954 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20955
20956         * mini.c: ovfops_op_map - add STACK_OBJ case for
20957         CONV_I 
20958         * basic.cs: add test_0_pin_string as test
20959         case for above.
20960
20961 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20962
20963         * Makefile.am: build C# if srcdir != builddir
20964
20965 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20966
20967         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20968         fall-through blocks.
20969
20970 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20971
20972         * driver.c: enable loop by default again and include abcrem in -O=all.
20973
20974 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * iltests.il: Add some localloc tests.
20977
20978         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20979
20980         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20981         Fixes #62574.
20982
20983         * inssel-amd64.brg: Add some optimizations.
20984
20985         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20986         for gcc-3.4.
20987
20988         * Makefile.am: Statically link mono against libmono on AMD64.
20989         
20990         * mini-amd64.c inssel-amd64.brg: Optimizations.
20991
20992 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20993
20994         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20995
20996         * tramp-amd64.c: Patch calling code in trampolines.
20997
20998 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * mini-amd64.c: pinvoke struct passing fixes.
21001
21002 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21003
21004         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21005         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21006
21007 2004-08-05  Duncan Mak  <duncan@ximian.com>
21008
21009         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21010         CEE_LDELEM_ANY.
21011
21012 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21013
21014         * mini-amd64.c (emit_move_return_value): Move return value for normal
21015         calls too.
21016
21017 2004-08-05  Martin Baulig  <martin@ximian.com>
21018
21019         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21020         `type->type'; just modify `type' itself when dealing with enums
21021         and generic instances.
21022         (check_call_signature): Make `simple_type' a `MonoType *'.
21023
21024 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21025
21026         * mini.c: Use OP_PADD to add offsets to addresses.
21027
21028         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21029
21030 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21031
21032         * mini-sparc.c (mono_arch_emit_epilog): fix check
21033         for folding last op into restore instruction
21034
21035 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21036
21037         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21038         helper methods using the code manager.
21039         
21040         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21041
21042         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21043
21044 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21045         
21046         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21047           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21048
21049         * mini-s390.c: fix tail processing
21050
21051 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21052
21053         * mini-ppc.c: mul.ovf.un exception name fix.
21054
21055 2004-08-03  Martin Baulig  <martin@ximian.com>
21056
21057         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21058         instances; before jumping to `handle_enum', also modify `ptype'.
21059
21060 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21061
21062         * cpu-sparc.md: fcall maximal length too small.
21063
21064 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21065
21066         * mini-amd64.c mini.h: Add initial support for passing/returning 
21067         structures to/from pinvoked methods.
21068
21069 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21070
21071         * mini-ppc.c: reg allocator fix.
21072
21073 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21076
21077         * inssel.brg: Optimize memset on 64 bit machines.
21078
21079         * mini-amd64.c: Fix some vararg cases.
21080
21081 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21082
21083         * mini-s390.c: Corrected macro in emit_float_to_int
21084
21085         * s390-abi.cs: Tests to exercise the s390 ABI
21086
21087 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21088
21089         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21090         caller saved regs.
21091
21092         * basic.cs: Add a test for add.ovf.un.
21093
21094 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21095
21096         * mini-sparc.c: add case for OP_IDIV_UN
21097
21098 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21099
21100         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21101         
21102         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21103
21104 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21105
21106         * basic.cs: regression tests.
21107
21108         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21109         regressions.
21110
21111 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * basic.cs: Add a new test.
21114
21115         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21116         and AOT. Various fixes and optimizations.
21117
21118         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21119
21120 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21121
21122         * mini-ppc.c: make sure temp regs are not used for global reg
21123         allocation.
21124
21125 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21126
21127         * cpu-sparc.md: conv_i8 fix for 64bits
21128
21129         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21130
21131 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21132         
21133         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21134         add opcode for cmp BYTE PTR [eax], imm.
21135
21136         * inssel.brg: Make memcpy and memset takes bases.
21137
21138 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21139
21140         * *-amd64.*: More AMD64 work.
21141         
21142 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21143
21144         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21145         add a compare-not-equal opcode.
21146         
21147 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21148
21149         * mini.c: Use mono_init_from_assembly instead of mono_init.
21150         
21151 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21154
21155         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21156
21157         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21158
21159         * inssel.brg: 64 bit fixes.
21160
21161         * mini.h (MonoCallInst): Add some AMD64 specific data.
21162
21163         * mini.h: Add some OP_P opcodes.
21164
21165 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21166
21167         * basic.cs: tests for 61797 and 61740
21168
21169 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21170
21171         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21172         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21173
21174 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21175
21176         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21177
21178         * *-amd64*.*: Ongoing AMD64 work.
21179
21180 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21181
21182         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21183
21184         * *-amd64*: Ongoing AMD64 work.
21185
21186         * mini-arch.h: Add AMD64 support.
21187
21188         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21189
21190         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21191
21192         * mini-ops.h: Add new opcodes.
21193
21194         * Makefile.am: Add AMD64 support.
21195
21196         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21197         rules into the inssel-long*.brg files.
21198
21199         * *-amd64.*: Add beginnings of AMD64 backend.
21200
21201 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21202
21203         * mini.c (print_dfn): commenting out the code that prints
21204         the cil. With -O=deadce, this makes -v -v crash.
21205         
21206         * cpu-pentium.md: make checkthis have a length of 2
21207
21208 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21209
21210         * mini-sparc.h: fix implementations of __builtin
21211         functions for Sun compiler for V9.
21212
21213 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21214
21215         * mini.c: use the new stelem.ref wrapper
21216         * exceptions.cs, arrays.cs: new stelem.ref tests
21217
21218 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21219
21220         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21221         new XSP should work with these changes).
21222
21223 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21224         
21225         * inssel-{long32,x86,}.brg: trivial optimizations.
21226         
21227 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21228
21229         * mini.c: load value when emitting box operation in
21230         constrained calls.
21231
21232 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21233
21234         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21235         is one byte shorter than cmp DWORD PTR [eax], 0.
21236
21237 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21238
21239         * inssel-ppc.brg: arguments on the stack are always
21240         relative to the stack pointer (spotted by Neale Ferguson).
21241
21242 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21243
21244         * exceptions-x86.c: delay appending the method name to the trace until
21245         after mono_jit_info_table_find is called, as this gets the real
21246         MonoMethod.
21247
21248 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21249
21250         * aot.c: register roots
21251
21252 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21253
21254         * aot.c : I could just use PLATFORM_WIN32 flag.
21255
21256 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21257
21258         * aot.c : Reverting the previous fix. This time it broke linux build.
21259
21260 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21261
21262         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21263
21264 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21265
21266         * mini.c (handle_stack_args): Remove some more debugging code.
21267         
21268         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21269
21270         * driver.c mini.h aot.c: Allow additional options to be specified with
21271         --aot and pass them to mono_compile_assembly.
21272
21273         * aot.c: Add experimental code to AOT compile all loaded assemblies
21274         on demand and save the code into a cache in the filesystem.
21275
21276         * aot.c: Add support for more wrapper methods.
21277         
21278         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21279         58863.
21280
21281         * cpu-*.md: Remove removed opcodes.
21282
21283         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21284         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21285         related icalls to marshal.c.
21286
21287 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21288
21289         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21290
21291         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21292
21293         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21294
21295 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21296         * liveness.c: If liveness is recomputated we need to reset the information
21297         for each variable. This way, if the liveness range has been narrowed
21298         by optimizations that happened after the last computation, we can return
21299         a smaller range.
21300         
21301         For example, if you have
21302         
21303         {
21304                 int i = 0;
21305                 
21306                 // Tons of code that does not affect i
21307                 
21308                 i = foo ();
21309                 ...
21310         }
21311         
21312         i = 0 is dead code and will be removed by SSA. However, when
21313         linear scan gets to the code, i will still appear to be live
21314         throughout the entire block. This prevents good register allocation.
21315
21316 2004-07-06  Martin Baulig  <martin@ximian.com>
21317
21318         * debug-mini.c (mono_debug_init_method): Allow
21319         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21320         (mono_debug_add_icall_wrapper): New method.
21321
21322         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21323
21324 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21325
21326         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21327         optimization.
21328
21329 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21330
21331         * aot.c (mono_aot_load_method): Fix loading of debug info.
21332
21333 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * aot.c: Add logging support.
21336
21337 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         * mini.h: Add prototype for mono_print_method_from_ip.
21340
21341         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21342
21343         * inssel.brg: 64 bit fixes.
21344
21345         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21346         inssel-long32.brg.
21347
21348         * Makefile.am: Add SPARC64 support.
21349
21350 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * aot.c: Fix alignment problems on 32 bit platforms.
21353
21354 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21357         SPARC64.
21358
21359         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21360         problems.
21361
21362         * mini.h: Bump AOT file version. Some 64 bit fixes.
21363
21364 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21365
21366         * inssel-sparc.brg: Add new rule to avoid register moves.
21367
21368         * inssel.brg: Add ldind_to_load_membase helper function.
21369
21370 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21371
21372         * mini.c: OffsetToStringData intrinsic.
21373         
21374 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21377
21378         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21379         regression tests.
21380
21381         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21382 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21383
21384         * mini.c: reinstated mono_compile_get_interface_var()
21385         on x86, too, since the change breaks the Gtk# build there as well.
21386
21387 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21388
21389         * driver.c: remove loop from the default optimizations: it seems to
21390         interact badly with some of the other options (see bug #60613).
21391
21392 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21393
21394         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21395         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21396
21397 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21398
21399         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21400         vararg-using methods.
21401
21402 2004-06-21  Martin Baulig  <martin@ximian.com>
21403
21404         * mini/mini-exceptions.c
21405         (mono_handle_exception): Added `gpointer original_ip' argument.
21406         After calling mono_unhandled_exception(), call
21407         mono_debugger_unhandled_exception() and if that returns true,
21408         restore the context and return.
21409
21410 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21411
21412         * mini-ppc.c: prefer the use of relative branches so
21413         they won't need to be patched in aot code (patch from Patrick Beard).
21414
21415 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21416
21417         * aot.c: patch from Patrick Beard to make the output assembly
21418         more correct for the MacOSX assembler. Small tweak to
21419         generate sane images on Linux/PPC, too.
21420
21421 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21422
21423         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21424         case until bug #59509 is fixed (shows up in #60332).
21425
21426 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21427
21428         * mini.c: make sure the needed wrappers are compiled, too, with
21429         precomp.
21430
21431 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21432
21433         * driver.c: remove NPTL reference in --version output.
21434
21435 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21436
21437         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21438         generate valid assembly for the Mach-O assembler.
21439
21440 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21441
21442         * driver.c: don't include abcrem in the all optimization specifier
21443         since it slows down jit compilation too much for now.
21444
21445 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21446
21447         * mini.c: use BIGMUL only if both operands have the same signage.
21448         * iltests.il: Test for bug 60056. (errors related to signage in
21449         BIGMUL).
21450
21451         r=lupus.
21452
21453 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21454
21455         * mini.c, aot.c: memory leak fixes.
21456
21457 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21458
21459         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21460
21461 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21462
21463         * Makefile.am: remove the -static hack completely, it links in
21464         statically glib as well.
21465
21466 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21467
21468         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21469         * exceptions.cs: make it compile with new mcs/csc.
21470
21471 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21472         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21473         and added relevant test case.
21474
21475 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21476
21477         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21478         regressions in gtk-sharp.
21479
21480 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21481
21482         * exceptions.cs: New regression tests.
21483
21484         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21485
21486 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21487
21488         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21489
21490 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21491
21492         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21493
21494         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21495
21496 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21497
21498         * mini.c (mono_jit_runtime_invoke): Init class in this
21499         method instead of trusting mono_jit_compile_method to
21500         do the work (because wrappers can be in object class)
21501
21502 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21503
21504         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21505
21506         * basic-long.cs: New regression test.
21507
21508 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21509
21510         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21511         and div/rem checks.
21512
21513 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21514
21515         * Makefile.am: fix miguel's change to build mono statically against
21516         libmono (track build dependencies).
21517
21518 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21519
21520         * cfold.c: Some glib versions do not have G_MININT32.
21521
21522 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21523
21524         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21525         with precision of tan, atan, sin and cos, and implemented related
21526         regressions tests (fixes bug 54467, but one new problem appeared and
21527         is not fixed yet).
21528
21529 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21532
21533         * exceptions.cs: Add test for constant folding && division by zero.
21534
21535         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21536         since driver.c is in libmono too, so the optimization was useless.
21537
21538         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21539         variable to driver.c so the compiler can emit more efficient code to
21540         access them.
21541
21542 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * Makefile.am: don't distribute generated inssel.[ch] files.
21545
21546 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21549         into the default appdomain. Fixes #58707.
21550
21551         * jit-icalls.c: Remove the broken approximation for truncl, doing
21552         no conversion is better.
21553
21554         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21555         Fixes #58863.
21556
21557 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21558
21559         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21560         of the mcrxr instruction which is not available on some processors
21561         even if it's documented to be. Implement add and sub overflow correctly
21562         (still not complete for long unsigned). Speed up icalls a bit.
21563
21564 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21565
21566         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21567         we run .cctor in the current domain instead of target_domain.
21568         
21569         Fixes bug #58558, .cctor not being called in -O=shared.
21570
21571 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21572
21573         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21574
21575 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21576
21577         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
21578         which can be done with an imm8, do it that way.
21579         (mono_arch_output_basic_block): ditto for a jmp
21580         (mono_arch_emit_prolog): Computate maximum offset of a label.
21581
21582 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
21583
21584         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
21585         now tries to allocate prefered physical reg's for virtual
21586         regs. This reduces the number of emited spills/loads with
21587         20-30% on our core assemblies.
21588
21589 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21590
21591         * jit-icalls.c: truncl() is not needed and trunc() is
21592         the correct thing to do anyway (bug #58287).
21593
21594 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
21597         if available.
21598
21599 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21600
21601         * driver.c: enable loop optimizations by default.
21602
21603 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21604
21605         * mini-x86.c: fix calc of max loop size when aligning loops start.
21606
21607 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
21608
21609         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
21610         the stack.
21611
21612 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21613
21614         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21615         should set carry.
21616
21617         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21618
21619         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21620         
21621         * mini.c (inline_method): Allways inline some wrappers even if the cost
21622         is too large. Fixes #58785.
21623
21624         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21625         
21626 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21627
21628         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21629         (crichton@gimp.org). Beginning of support for sparc/linux.
21630
21631         * mini-sparc.c: Optimize retrieval of LMF address.
21632
21633 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21634
21635         * exceptions-ppc.c:  handle alloca in methods with clauses.
21636
21637 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21638
21639         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21640
21641 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21642
21643         * mini.c: Delegate most of the abort signal work to 
21644           mono_thread_request_interruption, which also handles Stop and Suspend
21645           states.
21646
21647 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21650         supports the save/restore lmf opcodes.
21651
21652 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21653
21654         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21655         by gcc-3.4 as well.
21656
21657         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21658
21659 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21660
21661         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21662         methods which contain array accesses.
21663
21664         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21665         boundaries. Fixes #58537.
21666
21667         * iltests.il: Add regression test for #58537.
21668
21669 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21670
21671         * mini-x86.c (mono_arch_local_regalloc): Last part of
21672         fix for bug #58633 (releasing register to early).
21673
21674 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21675
21676         * basic-long.cs: Add new regression test.
21677
21678 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21679
21680         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21681         register too early on the chain.
21682
21683 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21684
21685         * mini.c (create_helper_signature): Use a helper function to reduce
21686         the code which needs to be written. Also set the calling convention of
21687         icalls on windows. Fixes #57840.
21688
21689 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21690
21691         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21692         exceptions-ppc.c: added helper function to get the instruction address
21693         from a signal handler context.
21694
21695 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21696
21697         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21698         from gonzalo.
21699
21700 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21701
21702         * helpers.c: Add new env variable to pass args to objdump.
21703         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21704
21705 2004-05-17  Radek Doulik  <rodo@ximian.com>
21706
21707         * Makefile.am (common_sources): added abcremoval.h so it get
21708         disted and daily mono packages on go-mono.com will build again
21709
21710 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21711
21712         * abcremoval.c: Fixed coding style, added copyright header.
21713
21714         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21715
21716         * mini.h: Added prototype for abc removal main function.
21717
21718         * build_relations_propagation_table.pl: Added copyright header.
21719
21720 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21721
21722         * basic-long.cs: reg test for complex ceq_long bug.
21723
21724 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21725
21726         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21727         reg in long and clob case (bug #58343). Fixed/added comments.
21728
21729 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21730
21731         * mini.c (mono_jit_runtime_invoke): Follow new convention
21732         of calling the invoke method with an function pointer.
21733
21734 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21735
21736         * ChangeLog: Fix author of memory leak patch.
21737
21738 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21739
21740         * Makefile.am: fix make dist as well...
21741
21742
21743 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21744
21745         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21746         on archs where pointers are 4 bytes long.
21747
21748         * Makefile.am: Added abcremoval.c source file.
21749
21750         * abcremoval.c: Added abcremoval.c.
21751
21752         * abcremoval.h: Added abcremoval.h.
21753
21754         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21755
21756         * inssel.brg: Enabled bounds check removal.
21757
21758         * mini.c: Added support for abcrem optimization.
21759
21760         * mini.h: Added abcrem optimization label.
21761
21762         * driver.c: Added support for abcrem optimization.
21763
21764         * propagated_relations_table.def: Added propagated_relations_table.def.
21765
21766 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21767
21768         * mini.c, cfold.c: fix style.
21769
21770 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21771
21772         * mini.c: handle issue with the low-level implementation of
21773         some long opcodes (bug #54209).
21774
21775 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21776
21777         * basic.cs: test for my new cmov stuff.
21778
21779 2004-05-13      Patrik Torstensson
21780
21781         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21782         opt and added peephole documentation.
21783
21784 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21785
21786         * tramp-ppc.c: rewrote the generic trampoline code.
21787
21788 2004-05-11      Patrik Torstensson
21789
21790         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21791
21792 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21795
21796         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21797         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21798
21799         * mini.c: Add new icalls for AsAny marshalling.
21800
21801 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21802
21803         * tramp-ppc.c, mini-ppc.c: more cleanups.
21804
21805 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21806
21807         * mini.c: no warnings.
21808
21809 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21810
21811         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21812
21813 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21814
21815         * mini.c: In the thread abort signal handler, if the thread is in the
21816         process of being stoped, don't throw the Abort exception, just stop the
21817         thread.
21818
21819 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21820
21821         * tramp-ppc.c: removed old code.
21822
21823 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21824
21825         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21826         do some simple speed optimizations on ppc.
21827
21828 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21829
21830         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21831         and large offsets in load/store.
21832
21833 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21836         it causes regressions.
21837
21838 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21839
21840         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21841         support.
21842
21843 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21844
21845         * jit-icalls.c: remove warnings.
21846         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21847         speedups for unsafe code.
21848
21849 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21850
21851         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21852
21853 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21854
21855         * basic-calls.cs: Add new regression test.
21856
21857         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21858         more portable.
21859
21860         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21861
21862         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21863         is no longer used.
21864
21865 2004-05-06      Patrik Torstensson
21866
21867         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21868         long reg allocation in any reg (not only eax:edx) and implemented 
21869         long shl/shr ops in asm instead of helpers.
21870
21871 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * mini-sparc.h: Fix warnings.
21874
21875         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21876         stack.
21877
21878         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21879         separate statement for clarity.
21880
21881         * mini-sparc.c: Update status.
21882
21883 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21884
21885         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21886         here.
21887
21888 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21889
21890         * inssel-ppc.brg: another small pre-release workaround:
21891         we don't do overflow detection for long_sub_un.
21892
21893 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21894
21895         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21896         (also works around a weird ppc bug: 57957).
21897
21898 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21899
21900         * tramp-ppc.c: trampoline fixes.
21901
21902 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21903
21904         * mini-ppc.c: fixed typos.
21905
21906 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21907
21908         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21909         at the top of the stack. Fixed typos. Use a frame registers
21910         for all the methods with exception clauses.
21911
21912 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21913
21914         * exceptions-ppc.c: restore fp registers.
21915
21916 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21917
21918         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21919         order from the stack top (moved the stack room to save the
21920         return value for trace after the param area). Fixed corruption
21921         in restoring registers on unwind.
21922
21923 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21924
21925         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21926
21927 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21928
21929         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21930         and prolog/epilog for methods that use it. Allow
21931         enough param area room for varargs methods. Fix miguel's
21932         breakage in exception handling.
21933
21934 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21935
21936         * Makefile.am: run genmdesc only on current arch.
21937
21938 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21939
21940         * exceptions-x86.c:
21941         * mini-x86.h: fix the build on windows.
21942
21943 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21944
21945         * 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.
21946
21947         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21948
21949         * mini-exceptions.c: New file.
21950         
21951         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21952         Move some parts of the x86 exception handling code to an 
21953         arch-independent file so it can be shared with other ports.
21954
21955 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21956
21957         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21958
21959 2004-04-26  David Waite  <mass@akuma.org>
21960
21961         * driver.c: remove comma from end of enumeration declaration
21962
21963 2004-04-26  Jackson Harper  <jackson@ximian.com>
21964
21965         * driver.c: parse config file before loading first assembly. This
21966         allows the user gac to be enabled/disabled. 
21967         
21968 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21969
21970         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21971         simpler mechanism: we do not care what is encoded initially
21972         (branch absolute or relative), we care about the code and its
21973         target.  I kept the old code for reference for now.
21974
21975         The new code tries first to determine if the jump is anywhere in
21976         the -/+32 absolute meg range, if it succeeds, it encodes using the
21977         absolute branch;  If not, it tried to find something in the
21978         relative range, if not, it uses the handle_thunk code. 
21979
21980 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21981
21982         * exceptions-ppc.c: use the correct ip register on macosx.
21983
21984 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21985
21986         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21987
21988 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21989
21990         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21991         Raise exception on integer divide by zero by hand since the hw
21992         doesn't support it. Handle NaNs in FP compares.
21993
21994 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21995
21996         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21997         code reducing duplication between the platforms and enabled
21998         signal exception handling (on linux for now).
21999
22000 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22001
22002         * exceptions-ppc.c: more macosx support.
22003
22004 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22005
22006         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22007
22008 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22009
22010         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22011
22012 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22013
22014         * iltests.il: more tests.
22015
22016 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22019         vars as well.
22020
22021 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22022
22023         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22024
22025 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * liveness.c: Mark variables as volatile in all basic blocks reachable
22028         from exception clauses.
22029
22030 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22031
22032         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22033         inlining.
22034
22035 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22036
22037         * iltests.il, basic.cs: more tests for regalloc.
22038
22039 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22040
22041         * iltests.il: Some tests for register allocation modifications
22042         I have locally.
22043
22044 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22045
22046         * exceptions.cs: Add regression test for bug #56782.
22047
22048         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22049         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22050         the beauty of fixing the same thing in 5 different files...
22051
22052 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22053
22054         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22055         methods.
22056
22057 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22058
22059         * mini.c: Add support for STRWLPARRAY marshalling convention.
22060
22061 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22062
22063         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22064         to init the context to setup the regs pointer).
22065
22066 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22067
22068         * exceptions-ppc.c: more exceptions work.
22069
22070 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22071
22072         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22073         not allowed.
22074
22075 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22076
22077         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22078         can use the memory directly.
22079
22080         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22081
22082         add x86_add_membase, x86_sub_membase, x86_mul_membase
22083
22084 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22085
22086         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22087         GENERAL_REGS they were also hardcoded for all PPC ports.
22088
22089         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22090
22091         Remove hard-coded limit for floating point registers, use
22092         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22093
22094         Notice that in MacOS X calling conventions you can fit a lot more
22095         floating point values in registers, so I should update the PInvoke
22096         test to excercise the passing of floating point values on the
22097         stack (currently broken).
22098         
22099 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22100
22101         * tramp-ppc.c (create_trampoline_code): Added
22102         JUMP_TRAMPOLINE_SIZE. 
22103         (ppc_magic_trampoline): Follow the pattern from
22104         x86_magic_trampoline: if code is set to zero, return. 
22105         (create_trampoline_code): Always pass MonoMethod to the jump
22106         trampoline, before it was passing a null.
22107         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22108         share the code with mono_arch_create_jit_trampoline. 
22109
22110         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22111         implemented.
22112         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22113         implemented.  
22114
22115         * cpu-g4.md: Added length for jmp instruction, the worst case
22116         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22117         for save_lmf).
22118
22119 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22120
22121         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22122
22123 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22126         before each IL instruction.
22127
22128         * mini.c (CEE_BOX): Fix warnings.
22129
22130 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22131
22132         * mini.c: removed a few unused vars and extra whitespace.
22133
22134 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22135
22136         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22137         checks.
22138         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22139         index.
22140         (OP_GETCHR): use the above
22141         (CEE_LDELEMA): use the above.
22142
22143         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22144         version of the generic impl.
22145         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22146         (CEE_LDELEMA): use the above.
22147
22148 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22151         Fixes #56317.
22152
22153         * iltests.il: Added new regression test for #56317.
22154
22155 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22156
22157         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22158         under NetBSD. Fixes #56450.
22159
22160         * liveness.c (update_gen_kill_set): Fix previous patch.
22161
22162 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22163
22164         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22165
22166 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22169         ldsfld and ldsflda.
22170
22171         * inssel-sparc.brg: Add more optimizations.
22172
22173         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22174
22175 2004-04-01  Martin Baulig  <martin@ximian.com>
22176
22177         * mini.c (handle_box): New static function; moved the
22178         implementation of CEE_BOX here.
22179         (mono_method_to_ir): Added `constrained_call' variable.
22180         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22181         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22182         mono_method_get_constrained() to get the method.
22183
22184 2004-04-01  Martin Baulig  <martin@ximian.com>
22185
22186         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22187         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22188         (mono_method_to_ir): We don't need these macros anymore since
22189         mono_class_get_full() already takes care of it. 
22190
22191 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22192
22193         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22194         use @function (as doesn't accept #function here) and check the return
22195         value of system and stop if fails.
22196
22197 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22198
22199         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22200
22201 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22202
22203         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22204
22205         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22206
22207         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22208         #56223.
22209
22210         * basic-long.cs: Add test for negation of Int64.MinValue.
22211
22212 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22213
22214         * mini-sparc.c: Update status.
22215
22216         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22217
22218         * exceptions-sparc.c: Fix return value in filters.
22219
22220         * inssel-sparc.brg: Fix register allocation in some rules.
22221
22222 2004-03-28  Martin Baulig  <martin@ximian.com>
22223
22224         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22225         if neccessary.  
22226
22227 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22230         
22231         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22232         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22233         remove unused conv_u4 opcode.
22234
22235         * mini-x86.c: Remove valgrind workaround since it slows down things
22236         even when mono is not run under valgrind.
22237
22238 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * mini-sparc.c: Update status.
22241
22242         * inssel-sparc.brg: Add some optimizations.
22243
22244         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22245         future delay slot filling. Add support for varargs, tail calls and JMP.
22246
22247         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22248         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22249
22250         * inssel.brg: Fix register allocation in OP_ARGLIST.
22251
22252         * inssel.brg: Fix warnings.
22253
22254 2004-03-25  Martin Baulig  <martin@ximian.com>
22255
22256         * mini.c (inflate_generic_field): Removed.
22257         (mini_get_method): Removed, use mono_get_method_full(),
22258         (mini_get_class): Removed, use mono_class_get_full().
22259         (mono_method_to_ir): Pass our generic context to
22260         mono_field_from_token().        
22261
22262 2004-03-25  Martin Baulig  <martin@ximian.com>
22263
22264         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22265         of a `MonoMethod *'.
22266         (mini_get_method): Take a `MonoGenericContext *' instead
22267         of a `MonoMethod *'.
22268         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22269         a new local variable called `generic_context' which holds the
22270         current `MonoGenericContext *'; use it to lookup things.
22271
22272 2004-03-24  Martin Baulig  <martin@ximian.com>
22273
22274         * mini.c (mini_get_class): New static method; if we're inside a
22275         generic instance, inflate the class if neccessary.
22276         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22277
22278 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * iltests.il: New regression test for #55976.
22281
22282         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22283         #55976.
22284
22285 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22286
22287         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22288         output.
22289
22290 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * liveness.c: Consider SSA stores as well as loads when making vars
22293         volatile.
22294
22295         * exceptions.cs: New regression tests for register allocation.
22296         
22297 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22298
22299         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22300         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22301           domain lock only to protect puntual access to data structures.
22302           Added access lock for sighash, jit_icall_hash_name, 
22303           jit_icall_hash_addr and domain->code_mp.
22304
22305 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22306
22307         * driver.c: Print SIGSEGV handling method.
22308
22309         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22310
22311         * mini.c (setup_jit_tls_data): Handle case when this is called
22312         multiple times for a thread.
22313
22314         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22315         is different from fbxx_un. Fixes #54303. Also use constants instead of
22316         magic numbers in a lot of places.
22317
22318 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22319
22320         * exceptions.cs: Fix cctor test when --regression is used.
22321
22322 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22323
22324         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22325         for Linux/ppc.
22326
22327 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22328
22329         * inssel-ppc.brg: fixed register assignments for some rules.
22330
22331 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22332
22333         * exceptions.cs: Add test for exceptions in static constructors.
22334
22335         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22336         static constructors outside the domain lock. Fixes #55720.
22337
22338 2004-03-17  Martin Baulig  <martin@ximian.com>
22339
22340         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22341         (inflate_generic_field): Take the `MonoMethod *' instead of the
22342         `MonoClass *' and added support for generic method.
22343         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22344         have a `field->parent->gen_params', only inflate the field if it's
22345         an open constructed type.
22346
22347 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22348
22349         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22350         exception object instead of the preconstructed ones.
22351
22352 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22353
22354         * mini.c: reverted changed to sigsegv_signal_handler commited
22355         accidentally in the previous patch.
22356
22357 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22358
22359         * mini.c:
22360         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22361         running --aot with an old assembly.
22362
22363 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22364
22365         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22366         point values.
22367
22368         * mini-sparc.c: Add support for v9 branches with prediction.
22369
22370 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22371
22372         * mini.c (mini_init): #warning is GNUC only
22373
22374         * mini-sparc.h: implement __builtin_frame_address
22375         and __builtin_return_address for Sun C compiler
22376
22377 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22378
22379         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22380
22381 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * basic-calls.cs: Add test for unaligned byref long argument passing.
22384
22385         * mini-ops.h: Add sparcv9 compare and branch instructions.
22386
22387         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22388         v9 instructions if we have a v9 cpu.
22389
22390         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22391         registers for global allocation.
22392
22393         * exceptions-sparc.c: Fixes.
22394         
22395 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22396
22397         * liveness.c (mono_analyze_liveness): Optimized version.
22398
22399         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22400
22401         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22402         sparc work.
22403
22404         * basic-float.cs basic-calls.cs: New regression tests.
22405
22406 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22407
22408         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22409         sigaltstack implementation.
22410
22411         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22412         
22413         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22414         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22415
22416 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22417
22418         * mini.c: Fix warnings.
22419         
22420         * mini.c (mono_resolve_patch_target): New function which contains the
22421         arch independent part of the patching process.
22422
22423         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22424         patching code to a separate function.
22425
22426 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22427
22428         * mini.c (add_signal_handler): ifdef out on Windows
22429
22430 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22433         cpu-sparc.md: Add exception handling support + other fixes.
22434
22435         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22436         typed GC detection in --version.
22437
22438         * basic.cs exceptions.cs: New regression tests.
22439
22440         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22441         the arch specific code can store data during a compilation.
22442
22443         * mini-ops.h: Add OP_SETFRET.
22444
22445         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22446         function, register a separate icall for each arity, so the icalls can
22447         get a wrapper.
22448         
22449         * mini.c (mono_print_tree): Print negative offsets in a more readable
22450         form.
22451         
22452         * mini.c: Make signal handling work on sparc.
22453         
22454         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22455
22456         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22457
22458         * jit-icalls.c: Emulate truncl by aintl on solaris.
22459
22460         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22461
22462 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22463
22464         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22465
22466 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22467
22468         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22469         a MarshalByRef type, inline a method that performs the check, taking into
22470         account that the object can be a proxy. Also implemented tow new opcodes:
22471         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22472         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22473         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22474
22475 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22476
22477         * mini-ppc.c: if a relative branch displacement is too big
22478         but it points to and area reachable with an absolute branch, 
22479         avoid the thunks.
22480
22481 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22482
22483         * mini.c: optimize small copies in cpblk.
22484
22485 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22486
22487         * basic-calls.cs basic-float.cs: New regression tests.
22488
22489         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22490         negative offsets from %fp. Implement localloc. Fix local register 
22491         allocation. Fix the case when the this argument needs to be saved to
22492         the stack. Implement some missing opcodes.
22493
22494 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22495
22496         * mini.c (mini_method_compile): Reenable global regalloc in methods
22497         with exception handlers.
22498
22499         * linear-scan.c (mono_varlist_sort): Fix warning.
22500
22501         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22502
22503         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22504         regalloc costs.
22505
22506         * liveness.c: Make all variables uses in exception clauses volatile, to
22507         prevent them from being allocated to registers. Fixes #42136.
22508
22509 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22512         causes regressions.
22513
22514         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22515         argument to mono_arch_regalloc_cost.
22516
22517         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22518         precisely.
22519
22520 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22523         Make the cost of allocating a variable to a register arch dependent.
22524
22525         * basic-calls.cs: Fix compilation of tests.
22526         
22527         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22528         helper function to cut back on the number of #ifdefs needed.
22529
22530         * mini-ppc.c: Fix compilation.
22531
22532         * basic-calls.cs: New regression tests.
22533
22534         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22535
22536         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22537         of l0 since that is callee saved.
22538
22539         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22540         to virtual calls.
22541
22542         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22543         of delay instruction.
22544
22545         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22546
22547         * mini.h (MonoCallInst): Add 'virtual' flag.
22548
22549         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22550
22551 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22552
22553         * *.cs: New regression tests.
22554
22555         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22556         work.
22557
22558         * mini.c (mono_runtime_install_handlers): Fix build.
22559
22560         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22561         'signal_stack_size' members.
22562
22563         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22564         alternate signal stack.
22565
22566         * exceptions-x86.c: Add stack overflow handling.
22567
22568         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22569         functions to arch independent code.
22570
22571         * mini.c (mono_print_tree): Print more detailed info for load_membase
22572         opcodes.
22573         
22574 2004-02-23  Martin Baulig  <martin@ximian.com>
22575
22576         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22577
22578 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22579
22580         * mini-x86.c: fixed reg allocation for div/rem.
22581
22582 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
22583
22584         * driver.c (mono_main): Report some configuratio options on --version.
22585
22586 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
22587
22588         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
22589         low in the address space. Correctly flush memory in thunks where we
22590         output native code.
22591
22592 2004-02-20  Martin Baulig  <martin@ximian.com>
22593
22594         * mini.c (mini_get_method): New static method; inflate all generic
22595         methods and methods in open generic instances.
22596         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
22597         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
22598
22599 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22600
22601         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
22602
22603         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
22604
22605 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
22606
22607         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
22608
22609         * mini-sparc.c (flushi mono_arch_output_basic_block): make
22610         it compile using Sun's compiler.
22611
22612 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22613
22614         * 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.
22615
22616         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22617
22618 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22619
22620         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22621         code.
22622         * mini-ppc.c: handle calls outside of the allowed range with thunks
22623         allocated using the code manager.
22624         * tramp-ppc.c: use the code manager to hold generated native code.
22625         Fixed the magic trampoline to just patch vtable entries.
22626
22627 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22628
22629         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22630         independent file.
22631
22632 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22633
22634         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22635         PPC.
22636
22637         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22638         if we have a working __thread implementation.
22639
22640         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22641         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22642
22643 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22644
22645         * mini-x86.c: Fix compilation under gcc 2.
22646         
22647 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22648
22649         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22650         contains a call to the wrapped function.
22651
22652         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22653         OP_<CALL>_IMM opcodes, and use them under X86.
22654         
22655         * mini.c (mono_jit_find_compiled_method): Fix warning.
22656
22657         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22658
22659         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22660
22661         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22662         functionality to mini.c.
22663
22664         * mini.c (mono_create_jump_trampoline): New function to create a jump
22665         trampoline. Return a compiled method instead of a trampoline if it
22666         exists. Add a cache for jump trampolines.
22667
22668         * mini.c (mono_jit_find_compiled_method): New function to return a
22669         compiled method if it exists.
22670
22671         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22672         mono_arch_create_jit_trampoline.
22673
22674         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22675         a jump trampoline. Fixes #52092.
22676         
22677 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22680         which is not up-to-date. Add check_corlib_version () instead.
22681
22682         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22683         have to call it.
22684         
22685         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22686         since newer valgrind versions do not need it.
22687
22688         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22689         compile a method with a given set of optimizations.
22690
22691         * mini.c: Compile icall wrappers on-demand instead of at startup.
22692
22693         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22694         wrapper for an icall.
22695
22696 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22697
22698         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22699         #54063.
22700
22701         * iltests.il: Add test for non-empty stack before switch instruction.
22702
22703 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22704
22705         * mini.c: Add support for new stringbuilder marshalling conventions.
22706
22707         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22708
22709 2004-02-01  Martin Baulig  <martin@ximian.com>
22710
22711         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22712         in `ginst->mtype_argv'.
22713
22714 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22715
22716         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22717         facilitate grepping.
22718
22719 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22720
22721         * mini.c: fixed buglet in initobj generic implementation for references.
22722
22723 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22724
22725         * Makefile.am: make the version script conditional.
22726         * jit-icalls.c: handle missing truncl().
22727
22728 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22729
22730         * exceptions.cs: Add more tests for double->int conversion.
22731
22732         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22733         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22734
22735 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22736
22737         * driver.c: make --verbose --version emit an error
22738         if the loaded corlib doesn't match the runtime version.
22739
22740 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22741
22742         * mini-ppc.h: export ppc_patch().
22743         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22744         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22745         on par or better than on MacOSX.
22746
22747 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22750         mono_lookup_pinvoke_call.
22751
22752         * mini-x86.c: Under windows, the default pinvoke calling convention is
22753         stdcall. Fixes #52834.
22754
22755         * mini.c (optimize_branches): Add an upper bound to the number of
22756         iterations to prevent infinite loops on strange loops. Fixes #53003.
22757
22758 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22759
22760         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22761         and ISINST. Fixes #52093.
22762
22763         * objects.cs (test_0_vector_array_cast): New tests.
22764         
22765 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22766
22767         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22768         checking in Array.Set ().
22769
22770         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22771         #52590.
22772
22773         * object.cs (test_0_multi_array_cast): New regression test.
22774
22775 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22776
22777         * exceptions-ppc.c: fix build on Linux/PPC.
22778
22779 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22780
22781         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22782         running under valgrind.
22783         (x86_magic_trampoline): Fix build bustage.
22784
22785         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22786         negative values as well. This is needed for the encoding of the line number
22787         info, since sometimes the line numbers are not in increasing order.
22788
22789 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * cpu-pentium.md (localloc): Increase the size of the localloc 
22792         instruction since it is a loop under Win32.
22793
22794         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22795         allocation.
22796
22797 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22800         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22801         Max Horn (max@quendi.de). Fix file names in comments.
22802
22803 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22804
22805         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22806         avoid stack overflow.
22807         (replace_usage): Avoid uninitialized variable warnings.
22808
22809         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22810         and taking the address of valuetype variables.
22811
22812 2004-01-03  Patrik Torstensson
22813
22814         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22815         for other purposes than FP later on.
22816
22817 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22818
22819         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22820         of tail calls.
22821
22822 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22823
22824         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22825
22826 2003-12-30  Patrik Torstensson <p@rxc.se>
22827
22828         * mini-x86.h: Decreased number of availiable fp regs.
22829         Solves corner cases with FP spilling.
22830
22831 2003-12-23  Patrik Torstensson <p@rxc.se>
22832
22833         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22834         for floating point stack tracking / spilling on x86. 
22835         Fixes bug #49012.
22836         
22837         * basic-float.cs: added float mul overflow test.
22838
22839 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22840
22841         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22842
22843 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22844
22845         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22846         supports for cond branches that overflow the immediate
22847         overflow offset. mcs can compile simple programs.
22848
22849 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22850
22851         * exceptions-ppc.c: exception handling support wip:
22852         finally handlers get run on exception.
22853
22854 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22855
22856         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22857         profiling.
22858
22859 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22860
22861         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22862         initial support for stack walking and unwinding.
22863
22864 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22865
22866         * driver.c (mono_main): Make corlib-out-of-sync message more 
22867         descriptive. Also remove verify_corlib call.
22868
22869 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22870
22871         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22872         not overlap with other call's arguments, too.
22873
22874 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22875
22876         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22877         move to arch-specific code the choice of arch-specific
22878         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22879         * mini.c: ensure emulation calls will not interleave
22880         with other calls.
22881
22882 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22883
22884         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22885         the magic trampoline stack frame is dropped before executing
22886         the new method.
22887
22888 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22889
22890         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22891         and integer to fp conversions. Added support for overflowing
22892         arguments on the stack. Reserve a couple more registers as temps.
22893         Added support for aot compilation (as output still needs to be
22894         tweaked, though).
22895
22896 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22897
22898         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22899         Don't overwrite return register in some corner cases.
22900
22901 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22902
22903         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22904         static constructors when AOT compiling.
22905
22906         * driver.c (mono_main): Call mono_check_corlib_version.
22907
22908 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22909
22910         * cpu-g4.md, basic.cs: fixed div target register.
22911
22912 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22913
22914         * mini-ppc.c, basic.cs: shl_imm fix with test.
22915
22916 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22917
22918         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22919         structures by value. Misc fixes.
22920         * objects.cs: more tests.
22921
22922 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22923
22924         * mini-ppc.c: lconv.ovf.i implemented.
22925
22926 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22927
22928         * mini.c:
22929         (mini_init): don't error out if someone already called g_thread_init.
22930
22931 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22934         to be any type per the spec. Fix abnormal memory usage when
22935         the same object is repeatedly thrown.
22936
22937 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22938
22939         * mini.c: check for overruns in IL code.
22940
22941 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22942
22943         * TODO: Add/remove some todo entries.
22944
22945 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22946
22947         * driver.c (mono_main): Call mono_verify_corlib.
22948
22949 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22950
22951         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22952         This has been moved to mini.c
22953         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22954         type being casted is marshalbyref it could be a proxy, so instead of
22955         emitting the type check code, emit a call to a runtime method that will
22956         perform the check by calling CanCastTo if needed.
22957
22958 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22959
22960         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22961         methods with large stack frames under Win32.
22962
22963 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22964
22965         * Makefile.am: Distribute regression tests.
22966
22967         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22968         at the end instead of inserting each variable into the sorted list.
22969
22970         * linear-scan.c (mono_varlist_sort): New helper function.
22971         
22972 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22973
22974         * mini.c: ensure arguments and locals are within bounds.
22975
22976 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22977
22978         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22979         related fixes.
22980
22981 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22982
22983         * mini.c (mono_cprop_copy_values): Fix crash.
22984
22985         * aot.c: Set verbosity back to 0.
22986         
22987 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22988
22989         * regalloc.c: complete memory leak fix by Laurent Morichetti
22990         (l_m@pacbell.net).
22991
22992 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * driver.c (main_thread_handler): Revert the previous patch.
22995
22996         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22997         under valgrind.
22998
22999         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23000         memory from the memory pool.
23001
23002         * driver.c (main_thread_handler): Turn on all optimizations when
23003         --aot is used.
23004
23005         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23006         an array for better performance.
23007
23008         * regalloc.c (mono_regstate_assign): Fix memory leak.
23009
23010         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23011         serialize the debug info.
23012
23013         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23014         debug info from the serialized representation.
23015
23016         * aot.c: Save debug info into the generated file and load it when 
23017         loading a method.
23018
23019         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23020
23021 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23022
23023         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23024         More FP-related fixes.
23025
23026 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23027
23028         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23029         and register allocation buglet. Hello world now runs.
23030
23031 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23032
23033         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23034         * tramp-ppc.c: fixed class init trampoline.
23035         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23036
23037 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23038
23039         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23040         mini.c: more ppc changes/fixes.
23041
23042 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23043
23044         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23045         Also optimize the case when the arguments are the same in the caller 
23046         and in the callee.
23047
23048         * iltests.il: Add tests for tail calls with valuetype arguments.
23049
23050 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23051
23052         * mini-ppc.c: fixes for struct return type.
23053
23054 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23055
23056         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23057         mono_spillvar_offset() to arch-specific code.
23058
23059 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23060
23061         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23062
23063 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23064
23065         * exceptions-x86.c: Fix stack space leaks.
23066         
23067         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23068         registers from the lmf if the method has save_lmf set.
23069
23070 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23071
23072         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23073         of icall wrappers into InvokeInDomain, since these are now per-domain.
23074
23075 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23076
23077         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23078         make some opcode emulation and intrinsic ops enabled/disabled 
23079         according to the architecture. More fixes.
23080
23081 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23082
23083         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23084
23085 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23086
23087         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23088         arch-specific handling for 'this' and struct return type to
23089         arch-specific code.
23090
23091 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23092
23093         * aot.c: prevent divide by zero error when reporting (it happened with
23094         Accessibility.dll).
23095
23096 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23097
23098         * mini.h (inst_switch): Remove unused macro.
23099
23100 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23101
23102         * aot.c:
23103         (load_aot_module): free 'info->methods' and 'info' properly. No more
23104         "free(): invalid pointer blah" messages when you have an old aot
23105         compiled assembly.
23106
23107 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23108
23109         * jit-icalls.c, mini.c: Added support for context static fields.
23110
23111 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23112
23113         * mini.c (mono_method_blittable): Methods which set LastError are not 
23114         blittable either. Fixes #51108.
23115         
23116 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23117
23118         * mini.c: flush icache.
23119         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23120
23121 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23122
23123         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23124
23125 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23126
23127         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23128         safe on IA32.
23129
23130         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23131         vararg calls.
23132
23133         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23134
23135 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23138         instruction when the result is discarded.
23139
23140         * iltests.il (test_0_div_regalloc): New regression test.
23141
23142         * arrays.cs: Fix compilation error.
23143
23144 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23145
23146         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23147         float rules to inssel-x86.brg: sane architectures with FP registers
23148         don't need to implement these rules.
23149
23150 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23151
23152         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23153
23154 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23155
23156         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23157         implementation of 32 bit systems.
23158
23159 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23160
23161         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23162         (Jeroen Zwartepoorte).
23163
23164 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23165
23166         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23167         the caller and the callee matches.
23168         
23169         * mini.c (mono_method_to_ir): Add comment.
23170
23171         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23172         signbit is missing on some platforms.
23173
23174 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23175
23176         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23177
23178         * mini.c (setup_jit_tls_data): Call the new function.
23179         
23180         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23181
23182         * mini-x86.c: Add experimental support for fast access to the lmf
23183         structure under NPTL/Linux 2.6.x.
23184
23185 2003-11-06  Martin Baulig  <martin@ximian.com>
23186
23187         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23188         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23189         the debugger.
23190
23191 2003-11-02  Martin Baulig  <martin@ximian.com>
23192
23193         * mini.c (inflate_generic_field): New static method.
23194         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23195         generic instance and the field is declared in a generic type, call
23196         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23197
23198 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23199
23200         * mini.h mini.c (mono_method_same_domain): New function to return
23201         whenever the caller and the callee are in the same domain.
23202
23203         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23204
23205 2003-10-30  Martin Baulig  <martin@ximian.com>
23206
23207         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23208         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23209         method parameters.
23210         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23211         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23212
23213 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23214
23215         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23216         propagation.
23217
23218         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23219         object here, so it is in the correct appdomain etc.
23220
23221 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23222
23223         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23224         already done.
23225         (mono_method_to_ir): Avoid freeing the type created returned from
23226         mono_type_create_from_typespec, since it is put into an internal cache
23227         by the function. Fixes pointer.exe.
23228
23229         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23230         trampolines for icalls and pinvokes as well. Fixes #33569.
23231
23232 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini.c: Update after appdomain changes.
23235
23236         * mini.c (mono_jit_compile_method_inner): Allways compile native
23237         method wrappers in the root domain, since there can only be one
23238         instance of them, whose address is stored in method->info.
23239
23240 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23241
23242         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23243         environment variable. Instead detect automatically whenever running
23244         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23245         valgrind.h.
23246
23247 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23248
23249         * trace.c, trace.h: New files that implement the new trace option
23250         parsing. 
23251
23252         * driver.c: Document new --trace options.
23253
23254         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23255         mini-x86.c: Apply:
23256
23257         -       if (mono_jit_trace_calls)
23258         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23259
23260         * mini.h: prototypes.
23261         
23262 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23263
23264         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23265
23266         * mini.c inssel.brg: Implement typedefbyref opcodes.
23267
23268         * mini.c (mono_jit_compile_method): Remove unused local variable.
23269
23270         * mini.c (mono_jit_compile_method_inner): Ditto.
23271         
23272 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23273
23274         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23275         
23276         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23277
23278 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23279
23280         * mini.c (mono_no_aot): Remove unused global variable.
23281
23282         * mini.c: Thread safety fixes.
23283
23284 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23285
23286         * mini.c (mono_create_class_init_trampoline): Add a lock around
23287         class_init_hash_addr.
23288
23289         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23290         #30073.
23291
23292         * mini.c: Decompose the NEWARR instruction before decomposing its
23293         arguments. Fixes #30073.
23294
23295 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23296
23297         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23298         convention.
23299
23300 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23301
23302         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23303
23304         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23305
23306         * driver.c: Add support for compiling icall wrappers to --compile.
23307
23308 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23309
23310         * inssel.brg: The empty value in class->interface_offsets is -1, not
23311         0. Fixes #49287.
23312
23313 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23314
23315         * objects.cs: New test for 'is' operator on an array of interfaces.
23316
23317 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23318
23319         * tramp-ppc.c: update trampoline code to support jumps
23320         and class initialization.
23321
23322 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23323
23324         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23325
23326         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23327
23328         * inssel.brg (OP_UNBOX): Remove unused rule.
23329
23330         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23331         region instead of one for each method. Fixes #47813.
23332
23333 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23334
23335         * exceptions.cs (test_0_nested_finally): New regression test for
23336         nested exception handlers.
23337
23338         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23339
23340         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23341
23342         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23343         inlining.
23344
23345         * mini.c (mono_method_check_inlining): Make the inlining limit 
23346         configurable by an environment variable.
23347         
23348         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23349
23350         * mini.h: Bump AOT file version.
23351
23352         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23353         token, store the image along with the token, since the token might not 
23354         refer to the same image as the method containing the relocation, 
23355         because of inlining.
23356
23357 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23358
23359         * mini.c (mono_precompile_assemblies): New function to compile
23360         all methods in all loaded assemblies.
23361
23362         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23363
23364         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23365         iassign and fassign to int*, since they can contain large negative
23366         values if the register is spilled. Also added some comments. Fixes
23367         #45817.
23368
23369         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23370         under Win32. Fixes #42964.
23371
23372 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23373
23374         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23375
23376         * aot.c: Added support for AOT compiling methods which contain calls
23377         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23378         handled.
23379         
23380         * driver.c (compile_all_methods): Run the compilation in a thread
23381         managed by mono. Fixes #44023.
23382
23383         * mini.c (mono_codegen): Print full method name in verbose output.
23384
23385         * mini-x86.c (mono_arch_patch_code): Fix warning.
23386         
23387         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23388         jumps, since the method we are jumping to might be domain-specific.
23389
23390         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23391
23392 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23393
23394         * inssel.brg: string chars are unsigned.
23395
23396 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * TODO: New todo item.
23399
23400         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23401         which calls mono_runtime_class_init and patches the call site to
23402         avoid further calls.
23403         (mono_arch_create_class_init_trampoline): New arch specific function 
23404         to create a class init trampoline.
23405         (create_trampoline_code): Generalized so it can create
23406         class init trampolines as well.
23407
23408         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23409         (mono_create_class_init_trampoline): New function to create and cache
23410         class init trampolines.
23411         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23412         vtable given the address of a class init trampoline. Used by the
23413         patching process.
23414         (mono_codegen): Generate a call to a trampoline instead of
23415         mono_runtime_class_init in LDSFLD[A].
23416         (mono_codegen): Add relocations for the new trampoline.
23417         
23418         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23419         MONO_PATCH_INFO_CLASS_INIT.
23420
23421         * mini.h: Bump AOT version number.
23422
23423         * aot.c: Create a copy of the loaded code instead of using the original
23424         so methods which call each other will be close in memory, improving
23425         cache behaviour.
23426         
23427         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23428         patch since it breaks the regression tests.
23429         
23430         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23431         for the register saving instruction sequence since the 
23432         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23433
23434 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23435
23436         * TODO: Fix todo item && remove another.
23437
23438 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23439
23440         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23441         previous checkin.
23442
23443         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23444         function of the module.
23445
23446         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23447         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23448         --no-aot command line option.
23449
23450 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23451
23452         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23453         by Bernie Solomon (bernard@ugsolutions.com).
23454
23455         * inssel.brg: Refactor the interface offset table related code into
23456         its separate functions and add support for the AOT case.
23457
23458 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23459
23460         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23461         
23462         * aot.c: Added mono_aot_verbose variable and made all debugging
23463         output depend on the value of this variable.
23464
23465         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23466         method_label and info_label.
23467
23468         * mini.h mini-x86.c aot.c: Added a new relocation type 
23469         MONO_PATCH_INFO_IID for klass->interface_id.
23470
23471         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23472         the MonoJitInfo structure.
23473
23474         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23475         a non-root appdomain in shared mode.
23476
23477 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23478
23479         * aot.c: make aot loader less verbose. Remove free of unused variable.
23480
23481 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23484
23485         * .cvsignore: Added *.dll.
23486
23487         * mini.c (mono_print_tree_nl): New function callable while debugging.
23488
23489         * mini.c (mono_print_code): Export this.
23490
23491         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23492         patched code.
23493
23494 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * mini.h (MonoCompile): Added 'jit_info' field.
23497
23498         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23499         the cfg structure, since it is needed by the AOT compiler.
23500
23501         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23502
23503         * aot.c: A major rewrite. Changes include:
23504         - save exception tables for methods which have them.
23505         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23506         to g_module_symbol.
23507         - reworked the file format so it is now much smaller and needs
23508         fewer relocation entries.
23509         
23510 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23511
23512         * aot.c (load_aot_module): Fix build bustage on platforms without
23513         Boehm GC.
23514
23515 2003-09-04  Martin Baulig  <martin@ximian.com>
23516
23517         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23518
23519 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23520
23521         * TODO: Some new optimization ideas.
23522
23523         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23524
23525         * aot.c: Save the optimization flags used to compile the code into
23526         the AOT module.
23527
23528         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23529         support emitting domain specific code.
23530         
23531         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23532         no longer domain neutral. It can be made domain neutral by compiling 
23533         with --optimize=shared.
23534
23535         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23536         between appdomains.
23537
23538         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23539         loading of AOT code.
23540
23541         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23542         
23543         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23544         if there is no domain neutrality information.
23545
23546 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23547
23548         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23549         format version into the generated library.
23550
23551         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23552         callee method into the caller since one of them could be shared.
23553
23554         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23555         system exceptions from AOT code now works.
23556
23557         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23558         method if it is domain neutral and the callee is not.
23559
23560         * graph.c (cfg_emit_one_loop_level): Fix warning.
23561
23562 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23563
23564         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23565         last checkin.
23566
23567 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23568
23569         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23570         is needed  by code which is executed before mono_runtime_init ().
23571         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23572         
23573         * mini.c (mono_thread_abort): Fix warning.
23574         (mono_jit_compile_method): Call static constructor in the AOT case too.
23575
23576         * aot.c (mono_compile_assembly): Fix warning.
23577
23578 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23579
23580         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
23581
23582 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
23583
23584         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
23585
23586         * cpu-pentium.md: Fix the length of call opcodes so they include the
23587         ESP restoring instruction. Fixes #47968.
23588
23589 2003-08-28  Martin Baulig  <martin@ximian.com>
23590
23591         * mini-x86.c (mono_arch_call_opcode): Added support for
23592         MONO_TYPE_GENERICINST.
23593
23594         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
23595
23596 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23597
23598         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
23599         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
23600
23601         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
23602         metadata_section.
23603
23604 2003-08-26  Martin Baulig  <martin@ximian.com>
23605
23606         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
23607         when reporting an error, set this to the actual error location.
23608         (mono_method_to_ir): Report the correct error location if
23609         get_basic_blocks() returned an error.
23610
23611 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23612
23613         * mini.c (mono_type_blittable): OBJECT is not blittable.
23614         (mono_method_blittable): Methods which have marshalling descriptors
23615         are not blittable either. Fixes #47842.
23616
23617 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23618
23619         * driver.c mini.c: Use an environment variable instead of a global 
23620         variable. Also fix the build.
23621
23622         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23623         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23624         reporting this. 
23625
23626         * driver.c mini.c: Added --with-valgrind option to turn off some
23627         code which prevents mono from running under valgrind.
23628
23629         * mini.c (mono_emit_call_args): Fixed warning.
23630
23631         * mini.c (mono_emulate_opcode): Fixed warning.
23632
23633 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23634
23635         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23636         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23637         regalloc.c, regalloc.h: specify available registers in arch-specific
23638         code and support floats in the regallocator (patch by Laurent Morichetti 
23639         <l_m@pacbell.net>)
23640
23641 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23642
23643         * mini.c: mono_thread_current() can be called only after
23644         mono_runtime_init(): rearrange code to not call it early on.
23645
23646 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23647
23648         * mini.c: allocate jump tables in the code mempools.
23649
23650 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23651
23652         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23653         freed.
23654
23655 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23656
23657         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23658         12 to 16.  This fixes bug #47453.
23659
23660
23661 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23662
23663         * mini-ppc.c: fixed indexed load and unsigned compares.
23664
23665 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23666
23667         * mini.c: reenabled installation of handler for
23668           thread abort signal.
23669
23670 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23671
23672         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23673         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23674         until it's fixed and actually useful.
23675
23676 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23677
23678         * inssel-long32.brg: couple more opcodes implemented.
23679
23680 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23681         
23682         * mini-sparc.c: Even more opcodes implemeted.
23683
23684 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23685
23686         * mini-sparc.c: More opcodes implemented.
23687
23688 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23689
23690         * mini-sparc.c: More opcodes implemented.
23691
23692 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23693
23694         * inssel-sparc.brg: Add some needed rules.  Direct
23695         copy from PPC.
23696         * Makefile.am: Use inssel-sparc.brg
23697         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23698         an assert happy for now.
23699
23700 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23701
23702         * mini-sparc.c: Fixed compile errors.
23703         * exceptions-sparc.c: Same.  We now produce a mono binary 
23704         on sparc-linux.  Yea.
23705
23706 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23707
23708         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23709         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23710         They compile, but do not work.
23711
23712 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23713
23714         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23715         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23716         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23717         (ct@gentoo.org).
23718
23719 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23720
23721         * mini.c: more opcodes implemented and better support for generics.
23722
23723 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23724
23725         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23726         * mini.c, mini.h: first cut at generics support: some new instructions 
23727         added and changed the behaviour of some of the existing ones.
23728
23729 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23730
23731         * mini.c: Removed definition of metadata_shared mutex here.
23732
23733 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23734
23735         * mini-x86.c: make vararg calls work for instance methods.
23736
23737 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23738
23739         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23740         returns the arguments in a separte list, now.
23741
23742 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23743
23744         * aot.c, mini.c: updates for array type representation changes.
23745
23746 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23747
23748         * mini.c: register function to perform jit shutdown.
23749
23750 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23751
23752         * mini.c: use a faster allocator if possible.
23753
23754 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23755
23756         * aot.c: some cleanups and portability changes.
23757
23758 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23759
23760         * mini.c: use faster allocation for CEE_BOX if possible.
23761
23762 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23763
23764         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23765         Moved inlined mempcy code to its own function so that is can be
23766         reused. Added an inline memset function as well (optimized initobj).
23767         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23768
23769 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23770
23771         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23772
23773 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23774
23775         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23776         arch code can setup the cpu for CLR execution, if needed.
23777         We use it on x86 to set the precision of FP operations.
23778
23779 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23780
23781         * mini.c: disable some optimizations if we can guess they'll cost too
23782         much for a given method.
23783
23784 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23785
23786         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23787         
23788 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23789         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23790         info collection support.
23791
23792 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23793
23794         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23795         is now implemented in the profiling API. Get rid of a couple of
23796         unnecessary global variables.
23797
23798 2003-06-15  Nick Drochak <ndrochak@gol.com>
23799
23800         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23801         * cpu-g4.md: add op_bigmul and op_bigmul_un
23802         * cpu_pentium.md: add op_bigmul_un
23803         * inssel-long32.brg: add rule for unsigned bigmul
23804         * mini-ops.h: define OP_BIGMUL_UN
23805         * mini-x86.c: THE BUG: handle (un)signed properly
23806         * mini.c: choose unsigned opcode if needed.
23807         This set of patches fixes bug #44291
23808
23809 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23810
23811         * mini.c (optimize_branches): improved to handle all kinds of
23812         conditional branches.
23813
23814 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23815
23816         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23817         don't raise exceptions.
23818
23819 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23820
23821         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23822         to arch-specific files.
23823
23824 2003-06-09  Martin Baulig  <martin@ximian.com>
23825
23826         * Makefile.am (libs): Added $(LIBGC_LIBS).
23827
23828 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23829
23830         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23831         and OP_ATAN (fixes bug#44293).
23832
23833 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23834
23835         * Makefile.am, mini-x86.c: rename cpu description array to
23836         pentium_desc, since some compilers define the 'pentium' preprocessor
23837         symbol.
23838
23839 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23840
23841         * mini.c (mini_select_instructions): add explicit branch if the
23842         following block is not the false target of a conditional branch -
23843         we need this with any optimization that reorder or remove bblocks
23844
23845         * mini.c (optimize_branches): bug fixes
23846
23847 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23848
23849         * mini.c (mono_method_to_ir): inline static readonly fields
23850
23851         * ssa.c (fold_tree): start cfold support for long (very simple
23852         cases only)
23853
23854         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23855
23856 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23857
23858         * inssel.brg: fixed memcpy (bug #44219).
23859
23860 2003-06-05  Dick Porter  <dick@ximian.com>
23861
23862         * driver.c: Set the glib log levels to not abort if g_message
23863         recurses.
23864
23865         g_set_prgname() has to happen before mini_init() so that the
23866         process handle gets the info.
23867         
23868 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23869
23870         * driver.c: add intrins to the default optimizations to get wider
23871         exposure.
23872
23873 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * mini.h: some large basic blocks will overflow a 16-bit
23876         integers for symbolic registers.
23877
23878 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23879
23880         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23881         (mono_arch_output_basic_block): fix bug 43499 
23882
23883 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23884
23885         * mini.c: kill duplicated definition of mono_debug_format.
23886
23887 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23888
23889         * mini-x86.c, arrays.cs: fixed register allocation bug.
23890
23891 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23892
23893         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23894
23895         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23896
23897 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23898
23899         * mini.c:
23900         (print_method_from_ip): also print source location information if
23901         available.
23902
23903 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23904
23905         * mini.c (mono_find_block_region): bug fix in region code
23906         (mini_method_compile): enable removing unreachable code again, but
23907         only in methods without exception clauses.
23908
23909 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23910
23911         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23912         Implemented arglist opcode and handling of TypedReference type.
23913         Fixed x86 call convention when a structure is returned.
23914         Minimal support for calling static vararg methods.
23915
23916 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23917
23918         * mini.c (mini_method_compile):  always remove unreachable code,
23919         because the code in them may be inconsistent  (access to dead
23920         variables for example).
23921
23922 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23923
23924         * driver.c, debug-mini.c: warning fixes.
23925
23926 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23927
23928         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23929
23930 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23931
23932         * mini.c: thread-static fields are registered in mono_class_vtable(),
23933         so ensure the function is called before checking for them.
23934
23935 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23936
23937         * mini.c (optimize_branches): fix for bug 43586
23938
23939         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23940         overflow (fixes Bug #43639)
23941
23942 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23943
23944         * mini.c, objects.cs: allow the use of stobj for primitive types.
23945
23946 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23947
23948         * mini.c: be less strict about argument checking until we support
23949         running the verifier.
23950
23951 2003-05-27  Nick Drochak <ndrochak@gol.com>
23952
23953         * basic-long.cs: tests for (ulong)int * (ulong)int also
23954         * mini.c: use the same trick for (ulong)int * (ulong)int
23955
23956 2003-05-27  Nick Drochak <ndrochak@gol.com>
23957
23958         * basic-long.cs: add regression test for (long)int * (long)int
23959         * cpu-pentium.md: add op_bigmul specification
23960         * inssel-long32.brg: add OP_BIGMUL rule
23961         * mini-ops.h: add OP_BIGMUL
23962         * mini-x86.c: register allocator: handle case where src1 needs to be
23963         in EAX.
23964         * mini.c: substitute special BIGMUL opcode in the tree for 
23965         (long)int * (long)int
23966
23967 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23968
23969         * jit-icalls.c: call the type ctor on field access if needed.
23970
23971 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23972
23973         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23974         to a method (including results of ldelema, bug#43207).
23975
23976 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23977
23978         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23979         colors to show exception handler blocks.
23980
23981         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23982         (fix for pinvoke7.cs).
23983
23984 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23985
23986         * mini.h, mini.c: ensure correct initialization order for types that
23987         require it. Prepare for lazy compilation of jit icall wrappers.
23988         Provide a name for opcode emulation to reduce unneeded mallocing.
23989
23990 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23991
23992         * mini-x86.c: better register restoring code and profiling
23993         support for tail calls.
23994
23995 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23996
23997         * mini.h, driver.c: prepare for leaf methods optimization.
23998
23999 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24000
24001         * mini.c: get targets of branches before converting a method.
24002
24003 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24004
24005         * mini.c (optimize_branches): added some experimental code (disbaled) 
24006
24007 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24008
24009         * mini.c (optimize_branches): fix branch to branch optimization 
24010
24011         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24012
24013         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24014
24015         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24016
24017         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24018         if needed.
24019
24020 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24021
24022         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24023         enable use of interface variables again.
24024
24025         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24026         I1 to registers because there is no simply way to sign extend 8bit
24027         quantities in caller saved registers on x86.
24028
24029         * inssel-float.brg: set costs of some rules to 2 so
24030         that monobure always select the arch. specific ones if supplied,
24031         regardless of the order we pass the files to monoburg.
24032
24033 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24034
24035         * mini.c, mini-x86.c: since the magic trampoline for jumps
24036         can't patch the code directly, we do it as soon as the
24037         method gets compiled.
24038
24039 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24040
24041         * mini-x86.c, mini.h: introduce a new patching method
24042         to support CEE_JMP and tail calls.
24043         * mini.c: obey tail.call. Don't precompile methods target
24044         of CEE_JMP.
24045         * tramp-x86.c: new trampoline code to handle methods
24046         reached through a jump.
24047
24048 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24049
24050         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24051         bit values to registers
24052
24053 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24054
24055         * mini.c (mono_compile_get_interface_var): share interface
24056         variables if possible.
24057
24058 2003-05-16  Martin Baulig  <martin@ximian.com>
24059
24060         * debug-mini.c (mono_init_debugger): New function to initialize
24061         the debugger.  This is not in the debugger since it needs to
24062         access some of mini's internals.
24063
24064 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24065
24066         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24067
24068 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24069
24070         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24071         for value type handling.
24072
24073 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24074
24075         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24076         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24077
24078 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24079
24080         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24081           the constructor through a proxy.
24082
24083 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24084
24085         * jit-icalls.c, inssel.brg: fixes to array element address
24086         calculations.
24087
24088 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24089
24090         * mini-x86.c (is_regsize_var): allocate pointer to registers
24091
24092 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24093
24094         * driver.c: fixed typo, added intrins to the set of optimizations
24095         tested with regressions.
24096
24097 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24098
24099         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24100         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24101         test case.
24102
24103 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24104
24105         * inssel.brg: remove some common pop instructions without side effects
24106
24107 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24108
24109         * inssel-x86.brg: fixed thinko in int to double conversions.
24110
24111 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24112
24113         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24114
24115 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24116
24117         * inssel-long32.brg: two more missing instructions.
24118
24119 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24120
24121         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24122         if not already set.
24123
24124 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24127         correctly.
24128
24129         * basic-float.cs: Added tests for negative zero.
24130
24131 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24132
24133         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24134         a couple of missing operations for long casts, with test cases.
24135
24136 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24137
24138         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24139
24140 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24141
24142         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24143         code size estimation.
24144
24145 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24146
24147         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24148         abstract methods (fix bug 42542)
24149
24150         * aot.c: add ability to handle array types
24151         
24152 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * mini.c: Call the _specific versions of the object allocation
24155         functions if possible.
24156
24157 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24158
24159         * driver.c: call setlocale ().
24160
24161 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24162
24163         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24164         windows build.
24165
24166 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24167
24168         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24169
24170         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24171         wrappers (fix bug 42122)
24172
24173 2003-05-04  Martin Baulig  <martin@ximian.com>
24174
24175         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24176
24177         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24178         s/mini_set_defaults/mono_set_defaults/g.
24179
24180 2003-05-04  Martin Baulig  <martin@ximian.com>
24181
24182         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24183
24184 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24185
24186         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24187         (reported by Don Roberts).
24188
24189 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24190
24191         * mini.c: temporarily work around two bugs for this release.
24192
24193 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24194
24195         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24196         that contains -export-dynamic and it makes using the ld script
24197         useless.
24198         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24199
24200 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24201
24202         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24203         specific cpu.
24204
24205 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24206
24207         * mini.c: make sure leave calls all the needed finally blocks,
24208         even when the target jumps out of multiple exception clauses.
24209
24210 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24211
24212         * ldscript, Makefile.am: add linker script to reduce the number of
24213         exported symbols (should also fix the issues with libwine defining
24214         some of the same symbols in io-layer).
24215
24216 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * driver.c (mini_main): Avoid assertion when no file name is given on 
24219         the command line.
24220
24221 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24222
24223         * driver.c: added --version/-V command line option.
24224         Added the inline optimization in the regression tests.
24225
24226 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24227
24228         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24229         to the type in the method signature (fixes bug#42134).
24230
24231 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24232
24233         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24234
24235 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24236
24237         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24238
24239 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24240
24241         * driver.c: fixed bug #42100.
24242
24243 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24244
24245         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24246
24247 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24248
24249         * mini.c: moved most of the code required to do inlining to its own
24250         function so it can be reused. Inline also ctors if appropriate.
24251
24252 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24255         the runtime can call mono API functions.
24256
24257 2003-04-27  Martin Baulig  <martin@ximian.com>
24258
24259         * debug-mini.c (mono_debug_init_method): Added
24260         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24261         send a notification to the debugger.
24262
24263         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24264         running in the Mono Debugger, just pass the breakpoint number to
24265         mono_debug_init_method().
24266
24267         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24268
24269 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24270
24271         * mini.c: allow some more unsafe compares.
24272
24273 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24274
24275         * mini-x86.c, Makefile.am: make distcheck works (partially from
24276         a patch by Richard Lee <r.h.lee@attbi.com>).
24277         * regset.c, regset.h: removed, they are unused.
24278
24279 2003-04-25  Dick Porter  <dick@ximian.com>
24280
24281         * driver.c: Usage reports the name as 'mono' not 'mini'
24282         * exceptions-x86.c: Build and run on freebsd
24283
24284 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24285
24286         * Makefile.am: install the program with the 'mono' name and
24287         the library as libmono instead of mini and libmini.
24288
24289 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24290
24291         * driver.c: provide the APIs for the embedding interface of the old jit.
24292
24293 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24294
24295         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24296
24297 2003-04-23  Martin Baulig  <martin@ximian.com>
24298
24299         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24300
24301         * driver.c: Added `--debug' command line argument to enable
24302         debugging support.
24303
24304 2003-04-23  Martin Baulig  <martin@ximian.com>
24305
24306         * debug.[ch]: Removed.  The code is now in
24307         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24308
24309         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24310         last six months.
24311
24312 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24313
24314         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24315
24316 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24317
24318         * mini.c:
24319         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24320         mono_domain_finalize.
24321         (mini_method_compile): use mono_method_profile* if the the option is
24322         enabled.
24323
24324 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24327         methods with their wrapper.
24328
24329         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24330         methods with their wrapper.
24331
24332         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24333         their wrapper.
24334
24335         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24336         wrapper.
24337
24338         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24339         methods.
24340
24341 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24342
24343         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24344
24345 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24346
24347         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24348         of the mempool. This is slightly faster and uses less memory
24349
24350 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24351
24352         * mini.c: avoid O(n) allocation for variables.
24353
24354 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24355
24356         * mini.c: handle items on the stack after inlining methods.
24357
24358 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24359
24360         * mini.c: make the method->opcode optimization dependent
24361         on MONO_OPT_INSTRINS and do it lazily.
24362
24363 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24364
24365         * driver.c: print overall results at the end of regression run.
24366
24367 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24368
24369         * inssel.brg: don't overwrite symbolic registers.
24370
24371 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24372
24373         * inssel-x86.brg: fix conversion from long to float.
24374
24375 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24376
24377         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24378
24379 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24380
24381         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24382
24383         * driver.c: Added --print-vtable option as in the old JIT.
24384
24385 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24386
24387         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24388
24389 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24390
24391         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24392
24393 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24394
24395         * mini.c regalloc.c regalloc.h: Fix memory leak.
24396
24397 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24398
24399         * aot.c (mono_aot_get_method): register all used strings
24400
24401 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24402
24403         * mini.c: always intern strings references with ldstr at compile time.
24404
24405 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24406
24407         * Makefile.am: add BUILT_SOURCES.
24408
24409 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24410
24411         * driver.c: give a better error message when the assembly to execute
24412         doesn't have an entry point.
24413
24414 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24415
24416         * Makefile.am: added hack for automake
24417
24418         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24419         correct sematics.
24420
24421         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24422
24423 22003-04-07  Martin Baulig  <martin@ximian.com>
24424
24425         * Makefile.am: Added Makefile.am.
24426
24427         * debugger-main.c: Removed, this is now in the debugger where it
24428         belongs.
24429
24430         * mini.pc.in: Call this package `mini' for the moment.
24431
24432
24433
24434
24435
24436
24437
24438
24439
24440
24441
24442
24443
24444
24445